【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://developer.aliyun.com/article/
出自【进步*于辰的博客】
参考笔记二,P5.8。
总结:前端控制器负责接收请求,处理器映射器负责寻找处理器,处理器适配器负责执行处理器(返回ModelAndView),视图解析器负责对ModelAndView的渲染(包括处理访问路径,如:请求转发路径)。
SpringMVC在底层会对请求路径进行处理(如:去除后缀),如请求路径是,处理器映射器会寻找路径是与的处理器。
如果大家想深入学习SpringMVC,我暂未系统整理相关内容,大家可查阅博文《Spring MVC详解(学习总结)》(转发)。
1、配置前端控制器。(web.xml)
2;配置处理器映射器、处理器适配器。
3、配置视图解析器。
会根据控制层方法返回的字符串查找相应的视图(如:jsp文件),用于在前后进行拼缀,生成文件路径。
参考笔记二,P10.3。
注:下文中“restful控制器”指使用了restful风格配置的控制器。
常规请求方式:
restful风格请求方式:
显而易见,restful风格的请求方式简洁、安全性高。(PS:谁知道哪个值对应哪个参数,代表什么意思)
要把常规请求方式转换成restful风格,需要三步:
- 在web.xml中把前端控制器的的值由改为。(一般在修改成restful风格前,的值是,表示拦截所有动态请求)
注:“拦截”指处理器映射器寻找控制器的过程。- 在 @RequestMapper 中,在路径后加,比如上述的,@RequestMapper 内的值是“”,现在改成“”;
- 在 @RequestMapper 注解的方法形参前加,用于映射参数值。
举个栗子:
那请求就是:
1:关于第一步
拦截的路径在修改前是,表示只拦截以结尾的请求。(一般在请求后加,表示访问动态资源。比如)
将路径修改为后,表示拦截所有请求,也包括类似这样的动态资源请求。那问题来了,现在拦截路径是,而请求是,为什么处理器映射器还能找到这个控制器?
从SpringMVC的源码以及一些资料中得知:
SpringMVC在底层会去除中的(后缀)。(在【概述】中有说到)
2:关于请求数据封装机制
restful风格完全抛弃了SpringMVC的请求数据封装机制(映射封装),如上述:中的,并没有参数与其绑定,映射关系完全取决于控制器形参前注解内的值。
3:补充第一点
SpringMVC底层会排除掉请求后的后缀。因此,对于访问非restful控制器,在请求时加不加后缀都可行(不过,需要注意拦截器)。
因此,restful风格的配置不会影响其他非restful控制器,对于其他非restful控制器的访问不用修改。但是,需要注意的是,==访问restful控制器时不能加后缀==,如:
4:关于静态资源的访问
关于静态资源配置,推荐一篇博文《SpringMVC访问静态资源 mvc:resources》(转发)。
由于restful风格的配置会拦截所有资源,也包括静态资源(如:image、css、js)。
这样的请求是访问一张图片,但处理器映射器会把他当作一个对控制器的访问去寻找控制器,而不会去寻找图片,自然无法找到图片。因此,需要对静态资源做配置。:
5:关于拦截器
内的可任意名称,不过,必须带上。
扩展一点:
上文说道:
SpringMVC在底层会去除中的(后缀)。
而拦截器不会,如:
拦截的是请求,而则不会被拦截。(简言之,路径必须一致)
参考笔记二,P11.4。
为了便于捕获和处理异常,可将异常抛给框架,交由异常解析器对象统一处理。示例:
1、创建全局异常解析器。
2、注入IOC容器。
当出现异常时,会自动调用,参数是异常对象。
也可以自定义异常类,用于抛出异常。
注意:无论异常是由我们处理(),还是抛出异常(),全局异常解析器都会捕获(调用)。
参考笔记二,P11.5。
SpringMVC具有很强大的数据封装机制,但并不是“万能”的。
如:使用JSP文件的表单进行提交,除之外(输出类型是二进制),其他都只有字符串和数字这两种。包括(输出日期字符串)。
而数据库相应字段是时间类型(一般这种情况实体属性也是时间类型),如此SpringMVC将无法对“时间”数据进行封装。因此,需要我们手动配置。
2、配置类型转换器。
当表单提交时,提交的“时间”字符串会自动传入,转换成 Date 进行数据封装。
本文中的例子是为了方便大家理解和阐述知识点而简单举出的,旨在阐明知识点,并不一定有实用性,仅是抛砖引玉。
本文持续更新中。。。
到此这篇springweb和springwebmvc的关系(spring与springmvc的区别与联系)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/46410.html