`

SpringMVC详解

阅读更多
这是我对springMVC的理解,简述SpringMVC与Struts2的相似点与不同之处
Spring.xml文件
<scan></scan>扫描所有的包变成<bean></bean>实例化对象
并且只有加了@<service>@<respoise>标签才会放到spring的context上下文当中

jndi方式配置数据源是tomcat自带的数据,否则就要配置dataSource



SpringMVC要点
1,导入jar spring-webmvc
springMVC配置文件解析
扫描controller包下的类(控制器)
<context:component-scan base-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=方法名"),也就是说,外面调用这个方法,
调用控制器的中指定的方法的时候,在表单中添加一个隐藏域,<input type="hiden" name="method" value="add">,连同表单一起提交到后台的控制器中,控制器方法的参数就是表单提交数据的name属性的参数名称,在控制器中的方法中返回的字符串就是跳转到的页面.jsp文件的名称.

2,如果表单中的name中的值与controler中方法的参数不对应,则在方法中的参数的前面添加
@RequestParams('表单中name的值')

3,modelMap是存放数据对象的,作用域跟request类似,在方法的形参里面添加一个(ModelMap map),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()






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics