spring内建一个请求驱动的web mvc框架,它以一个分发器DisptcherServlet为中心,将web请求分发到不同的处理器进行处理。
1.分发器DisptcherServlet的配置
使用DisptcherServlet之前需要在web.xml中进行配置
<servlet>
<servlet-name>dispatherContext</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatherContext</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
在web.xml中可以配置多个DisptcherServlet,在web启动时,每个
DisptcherServlet都会在WEB-INF中查找[servlet-name]-servlet.xml,该xml将作为web上下文被自动加载,用于定义用户控制器、配
置spring的web框架设施(如视图解析器、处理器映射等)
2.处理器映射Handle Mapping
Handle Mapping的基本功能是将web请求正确映射到相应的处理器上。
1>BeanNameUrlHandleMapping:它将bean名称解析为url并将web请求映射到同名的处理器bean上
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
2>SimpleUrlHandleMapping:它直接映射了任意的url和相应的处理器。
SimpleUrlHandlerMapping Spring 中最常用的映射响应器 通过对其 mappings 进行设置 从而获得更为灵活的控制器查找机制
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/_url.do">_beanName</prop>
</props>
</property>
</bean>
3.处理器拦截器HandlerInterceptor
HandlerInterceptor可以在处理器执行前后或整个web请求处理完成后,执行一些特定功能。他有三个方法:
boolean preHandle(HttpServletRequest,HttpServletResponse,Object);
void postHandle(HttpServletRequest,HttpServletResponse,ModelAndView);
void afterCompletion(HttpServletRequest,HttpServletResponse,Object,Exception);
HandleInterceptorAdapter是HandlerInterceptor的默认实现
配置于[servlet-name]-servlet.xml
<property name="interceptors">
<list>
<ref bean="_beanName"/>
<ref ../>
</list>
</property>
4.处理器的配置
5.配置试图解析器(ViewResolver)
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp"/> //前缀路径配置
<property name="suffix" value=".jsp"/> //后缀路径配置
</bean>