Web MVC framework 笔记
来源:互联网 发布:ubuntu 17.04安装软件 编辑:程序博客网 时间:2024/06/06 00:20
读参考手册记下的,写的不够严格。
DispatcherServlet
Spring MVC 的设计是围绕着一个DispatcherServlet开始的,DispatcherServlet负责将请求分发给各种Handler,Handler是通过配置实现的,而最基础的Handler就如@Controller和@RequestMapping注释,这两个灵活广泛的控制着各种请求。
DispatcherServlet和大多数mvc框架一样是一种前置控制器
DispatcherServlet是继承自HttpServlet的,所以搭建Spring MVC的开始就是
<servlet> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:servlet-context.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>如果你不指定contextConfigLocation,这个xml自动设置在web-inf目录下的${servlet-name}-servlet.xml
在Spring MVC中每一个(当然,一般我们只有一个)DispatcherServlet都有自己的一个WebApplicationContext,就是上面代码中的servlet-context.xml,说白了就是一个定义bean的地方,这个WebApplicationContext会覆盖和继承我们其他地方定义的bean
一个DispatcherServlet指定的xml就对应着一个WebApplicationContext,而一个WebApplicationContext则对应着一个ServletContext,通过RequestContextUtils的静态方法你可以随时查看这个WebApplicationContext。
应该是这样,与Spring MVC相关的所有bean你都要定义在这个DispatcherServlet指定的xml中,其他的bean随意。因为一个DispatcherServlet指定的bean是和Servlet的生命周期绑定在一块的,而一个本地应用的bean则不是。
在这个WebApplicationContext中,即便是你不指定一个bean,Spring MVC还是默认维护着一堆bean给你用的
HandlerMappingHandlerAdapterHandlerExceptionResolverViewResolver LocaleResolverMultipartResolverThemeResolverFlashMapManager
上面这些都是接口,在WebApplicationContext中有默认的配置和实现,如果你在你自己的WebApplicationContext中配置的它们,原先的默认就会被忽略,知道有这个概念就行,你迟早是要自定义这些bean的。
关于DispatcherServlet执行过程
1.和配置文件对应的WebApplicationContext将会找出来放在DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE中,以供请求后续的controller和其他东西使用
2.locale resolver本地化解析器会绑定到请求中
3.theme resolver主题解析器会绑定到请求中,这关系到你是用jsp还是freemark之类的视图
4.如果你指定了multipart file resolver,请求还会去查找multiparts,如果找到了,请求会包装在一个MultipartHttpServletRequest中传递下去,这个关系到文件的upload。
5.一个适合的controller会被发现,请求的执行过程将会和controller的过程联系起来,因为controller会提供渲染视图需要的数据,也就是model
6.如果model有了,视图成功渲染,如果没有,渲染过程就不会执行,应为即便是没有model,一个请求也可能会成功返回。
DispatcherServlet是可以通过servlet api返回头信息的,通过controller继承LastModified接口,实现接口的LastModified方法就可以把last-modification-date头信息带回去了,具体看API吧
DispatcherServlet有三个可配置的参数
contextClass:指定载入配置文件的方式,默认是XmlWebApplicationContext
contextConfigLocation:指定配置文件的位置
namsapce:一般没什么用,默认是是[servlet-name]-servlet
0 0
- Web MVC framework 笔记
- spring3 web mvc framework
- Web MVC framework Web框架
- php mvc framework: codeigniter笔记
- spring-framework-reference翻译 22 Web MVC framework
- web framework---cherrypy学习笔记1
- 深入解读Spring Framework Web MVC(第一弹:Spring Web MVC概述)
- .net framework 4.0 mvc 应用部署 System.Web.Mvc 错误 Could not load file or assembly 'System.Web.Mvc
- .net framework 4.0 mvc 应用部署 System.Web.Mvc 错误 Could not load file or assembly 'System.Web.Mvc .
- MVC学习笔记四:利用Entity Framework调用存储过程
- MVC学习笔记四:利用Entity Framework调用存储过程
- Spring4.3.8MVC中文文档-22.1-Introduction to Spring Web MVC framework-简介SpringMVC
- Spring web MVC开发学习笔记
- Spring Web MVC 的学习笔记
- Spring Web MVC框架学习笔记
- Spring MVC开发web project笔记
- Spring Web MVC系统学习笔记
- Java.Web学习笔记 spring MVC
- jscxx 须严格控制类型
- e.keycode详解
- vim 配置php自动补全 + neoComplCache
- NYOJ 364 田忌赛马
- JQuery1.8 判断元素是否绑定事件的方法
- Web MVC framework 笔记
- 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框
- 配置iOS项目的设备系统目标设置:Base SDK和Deployment Target
- 3.peer review
- 该死的setUserData和setUserObject
- 使用BabeLua在cocos2d-x中调试Lua
- 给大家回复客户肯定好看的不后付款的广阔的不(代发QQ977177223)
- 是大家放松的变化将发生的变化将发生的表决分(代发QQ977177223)
- 长得高大纵观Pubertywhat你需要知道的关于长高在青春期和为什么