1.DispatcherServlet配置在web.xml
请求会先进入 DispatcherServlet 中
2.HandlerMapping:负责帮助解析请求.
需要配置 DefaultAnnotationHandlerMapping的 <bean> HandlerMapping接口的实现类
3.HandlerAdapter:负责根据HandlerMapping解析的结果,去实际调用对用的方法.(找方法上@RequestMapping(“abc”)),如果找到方法,就执行这个方法
4.Controllers: 程序员自己写的方法,在具体的名称HandlerMethod
5.ViewResovler:视图解析器.负责解析HandlerMethod返回值,根据返回值内容去寻找要跳转的资源.
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<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><!-- 文件名 和servlet-name 保持一致 -->
<!-- 如果不给项目指定加载文件,默认加载的就是<servlet-name>名字</servlet-name>,名字- servlet.xml文 件。 -->
</init-param>
<!-- 配置创建对象的优先级。数值越低,优先级越高,1:当Tomcat加载时就,创建对象 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 除了JSP 都会执行Servlet -->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>springmvc.xml
<?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:mvc="http://www.springframework.org/schema/mvc"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 实现注解 -->
<context:component-scan base-package="com.bjsxt.controller"></context:component-scan>
<!-- 配置DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter 的<bean> -->
<mvc:annotation-driven></mvc:annotation-driven>
</beans><mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的,即解决了@Controller注解使用的前提配置。DemoController
@Controller // 注解加载 类
public class DemoController {
// 只有被容器管理了,才能使用注解
@RequestMapping("demo123")
public String demo(){
System.out.println("请求demo123 被处理");
return "index.jsp"; // 负责解析HandlerMethod返回值
}
}当访问 http://localhost:8080/springmvc01/ 时,根据 web.xml文件的默认配置信息,当访问项目根目录时候,自动跳转到index.jsp页面,但是拦截器不会拦截JSP文件。但是打印语句不会执行。
当访问 http://localhost:8080/springmvc01/demo123 时候,DispatcherServlet会拦截除了 jsp文件之外的所有请求,所以1.demo123会被拦截,2.并被HandlerMapping解析成 demo123 ,3.HandlerAdapter也会根据解析的内容调用对应的方法(Controller),4.ViewResolver再根据方法的返回值,进行响应。
本文详细介绍了Spring MVC的工作流程,包括DispatcherServlet配置、HandlerMapping、HandlerAdapter等关键组件的作用及交互过程。通过一个简单的示例,展示了如何配置并实现一个基本的Spring MVC应用。
197

被折叠的 条评论
为什么被折叠?



