SpringMVC详解
这是我对springMVC的理解,简述SpringMVC与Struts2的相似点与不同之处
Spring.xml文件
<scan></scan>扫描所有的包变成<bean></bean>实例化对象
并且只有加了@<service>@<respoise>标签才会放到spring的context上下文当中
jndi方式配置数据源是tomcat自带的数据,否则就要配置dataSource
SpringMVC要点
1,导入jarspring-webmvc
springMVC配置文件解析
扫描controller包下的类(控制器)
<context:component-scanbase-pacage="com.yuedao.car.controller">
<mappingJackSONhttpMessageConverter>json返回
<servlet.mvc.annotation.AnnotationMethodHandlerAdapt>启动mvc注解功能
<view.InternalResourceViewResolver>对模型图名称的解析,给视图名称添加前后缀
SpringMVC执行流程:
1,根据浏览器发送的请求地址,匹配在web.xml配置文件中的.do路径
2,根据地址找到,org.springframework.web.servlet.DispacherServlet。执行它的doService(request,response)方法
3,然后会在容器中找到对应的HandlerMappings映射的容器,来检查对应的url中的controler,如果没有就报404
4,controler控制器开始执行
5,执行完毕之后,如果返回字符串,则viewResolver这个视图解决器会把字符串转换成相应的视图对象,如果返回ModelAndView对象,该对象包含了视图对象信息.
6,DispatcherServlet将模型视图对象中的数据传输给服务器(tomcat)
7,最后由服务器传给客户端
跟struts2比较:
controler相当于struts2中的action类
SpringMVC常用的注解
@controller就把这个类添加到springMVC上下文当中
1,@controler是控制器的注解,@requestMapping注解是匹配访问的路径,@requestMapping(params="method=方法名"),也就是说,外面调用这个方法,
调用控制器的中指定的方法的时候,在表单中添加一个隐藏域,<inputtype="hiden"name="method"value="add">,连同表单一起提交到后台的控制器中,控制器方法的参数就是表单提交数据的name属性的参数名称,在控制器中的方法中返回的字符串就是跳转到的页面.jsp文件的名称.
2,如果表单中的name中的值与controler中方法的参数不对应,则在方法中的参数的前面添加
@RequestParams('表单中name的值')
3,modelMap是存放数据对象的,作用域跟request类似,在方法的形参里面添加一个(ModelMapmap),ModelAndView就是ModelMap和额、view视图对象的总和
4,@sessionAtributes({'aaa','bbb'}),意思是将ModelMap中的属性为aaa,bbb的值放在session作用域当中,必须放在类的上面
5,@ModelAttribute("u"),意思是将ModelMap中的属性为u的值获得传给其他参数
SpringMVC的请求重定向与转发
语法:在controler方法中请求重定向return"redirect:http:www.baidu.com"
请求转发:return"forward:login.jsp",不写就是转发
jackson类库,将java对象和json,xml数据之间的互相转换
1,jackson-core-asl.jar
2,jackson-mapper-asl.jar
在类或者方法上添加@ResponseBody标签就行了
springMVC的拦截器
1,实现handlerInterceptor接口
有三个主要的方法
preHandle()在action之前执行,postHandle()在action执行之后,生成视图之前执行
afterCompletion()最后执行,一般用来释放资源,或者处理异常
2,继承handlerInterceptorAdapter类
preHandle()