摘要:
项目中一直在使用spring,对于spring 却没有做过深入的研究,没有经过系统的学习,这里将学习spring做一个系统的总结,对照着官方文档,做出实际的例子来。
spring mvc简介:spring mvc中mvc是对model-view-controller简称,它是围绕DispatchServlet设计的,能够将请求转发到不同的处理、视图,还可以对上载文件进行支持。
springmvc特点:
1、清晰的职责划分
controller, validator, command object, form object, model object, DispatcherServlet, handler mapping, view resolver,等不同模块都可以通过一个专门的对象来实现。
2、灵活、非入侵,在给定的场景中,可以使用如:@RequestParam,@RequestHeader,@PathVariable等来进行配置,可以任意写自己需要的方法做为控制器
3、可定制本地化,和主题解析,支持jsps,支持jstl,velocity等。
4、spring 标签库提供数据绑定和主题支持
5、spring的form 标签库,让写起jsp更加的方便。
6、自定义的控制器和视图解析。
spring中的DispatchServlet
<web-app>
<servlet>
<servlet-name>easy</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>easy</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
这是servlet 3.0以下版本的配置,3.0以上,这里先不作论述。
spring mvc中特别bean:
所以对于上述几种bean,DispathServlet都有一种默认配置,配置信息保存在org.springframework.web.servlet包中的DispatchServlet.properties文件里。
DispatchServlet的执行顺序:
当你在tomcat中已经配置好DispatchServlet,而且各项配置完好,有客户端请求访问的时候,DispatchServlet的执行应该遵循:
1、在webApplicationContext中查找,并将请求保存到其中的一个属性,这样一来,控制器和其它的元素都能用到,通常这个属性:DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE。
2、本地化解析器绑定到请求,解决本地化,保存区域使用,如果不需要,则略过
3、主题解析器绑定,确实使用体积上视图,如果没有,忽略
4、上载文件处理
5、对适当的处理程序的查找,找到后,执行其中的业务,最终完成model,并准备model的渲染。
6、model如果返回了,视图就得到渲染,如果没有model返回,也无需渲染,这个时候也可以请求已经得到了响应。
DispatchServlet初始化参数:
最常用的就是在web.xml里配置的 contextConfigLocation。
下节会有参数的补充和主要的注解用法,会配上实例。