springMVC学习笔记

dispatcherServlet--前置控制器

handlerMapping接口--处理请求的映射

handlerMapping接口的实现类:(a).simpleUrlHandlerMapping通过配置文件,把url映射到controller.(b).defaultAnnotationHandlerMapping 通过注解,把url映射到controller类上

handlerAdapter接口---处理请求的映射

AnnotationMethodHandlerAdapter类,通过注射,把url映射到controller类的方法上

controller接口----控制器:使用@controller注解的类就可以担任控制器(action)的职责,就可以不使用这个接口

handlerInterceptor接口----拦截器

viewResolver接口的实现类:UrlBasedViewResolver类通过配置文件,把一个视图名交给到一个View来处理,InternalResourceViewResolver类,比上面的类加了JSTL支持

HandlerExceptionResolver接口---异常处理

SimpleMappingExceptionResolver实现类


spring3 MVC核心流程图说明:浏览器发送Http请求到前置控制器(dispatcherServlet),前置控制器(dispatcherServlet)提交请求到handlerMapping,通过handlerMapping接口的实现类defaultAnnotationhandlerMapping来判断是否通过注解,把url映射到controller类上,如果找到就经过拦截器(handlerInterceptor)交由控制器处理业务,如果未找到controller再交由simpleUrlHandlerMapping来判断是否通过配置文件把url映射到controller上,如何还未找到,就有defaulthandler发送Http响应,如果找到就经过拦截器(handlerInterceptor)交由控制器处理业务。再由控制器交给ViewResolver接口,有ViewResolver接口的实现类来交给view控制器,最后由view控制器发送HTTP响应到浏览器


DispatcherServlet说明:dispatcherServlet是一个servlet,所以可以配置多个dispatcherServlet,dispatcherServlet是前置控制器,配置在web.xml文件中,servlet拦截匹配规则自定义,把拦截到的请求,依据你使用的handlerMapping接口的实现类发到目标controller(我们写的Action)来处理。

例子1

<web-app>

<servlet>

<servlet-name>example</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlert>

<servlet-mapping>

<servlet-name>example</servlet-name>

<url-pattern>*.form</url-pattern>

</servlet-mapping>

</web-app>

<load-on-startup>1</load-on-startup>是启动顺序,让这个servlet随servletp容器一起启动

<url-pattern>*.form</url-pattern>会拦截*.form的请求。

<servlet-name>example</servlet-name>这个servlet的名字是example,每一个通过name对于的dispatcherServlet都有自己的WebApplicationContext上下文对象。同时保存的servletContext中和request对象中。

在dispatcherServlet的初始化过程中,框架会在WEB应用的web-inf文件夹下找到<servlet-name>-servlet.xml的配置文件,生产文件中定义的bean。

例子2:

<servlet>

<servlet-name>springMVC</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath*:/springMVC.xml</param-value>

</init-param>

<load-on-startup>1<load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>springMVC</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

指明配置文件的文件名,不使用默认的配置文件名,而使用springMVC.xml配置文件

<param-value>的写法(a)**.xml(b)不写。默认值/WEB-INF/<servlet-name>-servlet.xml(c)/WEB-INF/classes/springMVC.xml(d)classpath*:springMVC-mvc.xml(e)多个值使用逗号分隔。

spring会创建一个WebApplicationContext上下文,称为父上下文。保存在servletContext中,key是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE的值。

使用spring提供的工具类取出上下文对象:WebApplicationContextUtils.getApplicationContext(ServletContext);

dispatcherServlet是一个servlet有一个自己对应的上下文对象(WebApplicationContext)称为子上下文。子上下文可以访问父上下文的内容,但父上下文不能访问子上下文的内容。它也保存在ServletContext中,key是org.springframework.web.servlet.FrameworkServlet.CONTEXT+Servlet名称。当一个Request对象产生时,会把这个子上下文(WebApplicationContext)保存在Request对象中,key是DispatcherServlet.class.getName()+.CONTEXT.

可以使用工具类取出上下文对象:RequestContextUtils.getWebApplicationContext(request);




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丵鹰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值