概述
一、环境搭建
1.maven依赖
在pom.xml中添加spring-webmvc依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
2.配置前端控制器
在web.xml中配置前端控制器DispatcherServlet
<!--
SpringMVC思想是有一个前端控制器
这个前端控制器是一个Servlet,应该在web.xml中配置这个Servlet来拦截所有请求
-->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!--指定配置文件位置-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-conf.xml</param-value>
</init-param>
<!--
servlet启动加载,servlet原本是第一次访问创建对象;
load-on-startup:服务器启动的时候创建对象;值越小优先级越高,越先创建对象
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3.spring配置文件
扫描所有组件,并配置
<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--扫描所有组件-->
<context:component-scan base-package="com.example"/>
</beans>
4.编写Controller
@Controller
public class HelloController {
@RequestMapping("/handle01")
public String handle01(){
return "success.jsp";
}
@RequestMapping("/handle02")
public String handle02(){
return "success.jsp";
}
}
5.跳转页面代码
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>成功</h3>
</body>
</html>
二、DispatcherServlet的doDispatch()方法
DispatcherServlet是一个Servlet,栗:发起/handle01请求时,会执行doDispatch()方法
1.获得处理器
处理器中保存处理请求的处理方法,根据当前请求地址找到哪个类能来处理
对于/handle01的请求,有:
通过调试,可以看出,执行完第1015句后,mappedhandler中保存着method,处理/handle01的方法
2.获得适配器
根据当前处理器类获取能执行这个处理器方法的适配器
mappedHandler.getHandler()返回HandleMethod对象,根据HandleMethod对象获得处理器
3.适配器执行目标方法
用适配器调用目标方法,返回ModelAndView对象,目标方法无论怎么写,最终适配器执行完成后的信息封装到ModelAndView
4.转发到目标页面
根据方法最终执行完成后封装的ModelAndView,转发到对应页面,而且ModelAndView中的数据可以从请求域中获取
三、处理器
DispatcherServlet对象有个handlerMappings成员变量
对于类似/handle01的请求,映射关系保存在RequestMappingHandleMapping中
四、适配器
DispatcherServlet对象有个handlerAdapters成员变量
对于RequestMappingHandleMapping使用的是RequestMappingHandleAdapter
最后
以上就是优秀小馒头为你收集整理的浅析SpringMVC的前端控制器DispatcherServlet的全部内容,希望文章能够帮你解决浅析SpringMVC的前端控制器DispatcherServlet所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复