DispatcherServlet
DispatcherServlet负责请求的分发,所以被称为请求分发器。和一般的Servlet一样,它在web.xml中配置,用于拦截匹配的请求路径,并将这些路径分发到不同的业务处理器。
<!--一个示例-->
<!--web.xml-->
<servlet>
<servlet-name>dispatcherServlet</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>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
init-param
默认情况下,DispatcherServlet会根据servlet-name到WEB-INF目录下去寻找名为[servlet-name]-servlet.xml的Spring配置文件。示例中用contextConfigLocation参数指定了文件。如果采用这种办法,包之间用”/“分割,多文件用”,“分割。(classpath指的是/WEB-INF/classes)
load-on-startup
参数值应是整数,小于0或不配置表示该Servlet会在第一次请求时启动,等于0或大于0表示会在容器启动时加载,数值越小优先级越高。
servlet-mapping
收到请求后,Servlet会将应用上下文去掉。如http://localhost:8080/springMVC_war/index.html,springMVC是应用上下文,故容器会将http://localhost:8080/springMVC去掉,用index.html匹配。
在DispatcherServlet中,应将url-pattern设置成/。这样只要在web.xml匹配不到合适的URL,它们的访问请求都将交给DispatcherServlet。
HandlerMapping
DispatcherServlet根据配置的路径和处理器的对应,将请求交给配置的处理器映射器(HandlerMapping)进行处理。
SimpleUrlHandlerMapping
<!--springmvc.xml-->
<bean class="org.springfamework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/user">userController</prop>
<prop key="/test">testController</prop>
</props>
</property>
</bean>
BeanNameUrlHandlerMapping
<!--springmvc.xml-->
<bean id="mvcHelloController" name="/mvcHello"
class="Cotroller.MvcHelloController"/>
HandlerAdapter
在SpringMVC中,一个HTTP请求会由映射到某个类中的方法来处理,不直接调用处理器而通过Handlerdapter进行调用。
HttpRequestHandlerAdapter
public class MyHttpRequestHandler implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
}
}