下表列出了DispatcherServlet检测到的特殊bean:
Bean type | Explanation |
---|---|
|
将请求映射到处理程序以及用于预处理和后处理的拦截器列表。映射基于一些标准,这些标准的细节因HandlerMapping实现而异。
两个主要的HandlerMapping实现是RequestMappingHandlerMapping(支持@RequestMapping带注释的方法)和SimpleUrlHandlerMapping(维护URI路径模式到处理程序的显式注册)。 |
|
帮助DispatcherServlet调用映射到请求的处理程序,而不管实际是如何调用处理程序的。例如,调用带注释的控制器需要解析注释。HandlerAdapter的主要目的是对DispatcherServlet屏蔽此类细节。 |
解决异常的策略,可能将它们映射到处理程序、HTML错误视图或其他目标。参见异常。 |
|
解析从处理程序返回到实际视图的基于逻辑字符串的视图名称,并将其呈现给响应。请参见视图分辨率和视图技术。 |
|
解析客户端正在使用的地区以及可能的时区,以便能够提供国际化的视图。看地区。 |
|
解决您的web应用程序可以使用的主题-例如,提供个性化的布局。看到主题。 |
|
在一些多部分解析库的帮助下,对多部分请求进行抽象解析(例如,浏览器表单文件上传)。看到几部分的解析器。 |
|
存储和检索“输入”和“输出”FlashMap,可用于将属性从一个请求传递到另一个请求,通常通过重定向。看到Flash属性。 |
一、创建项目并添加依赖
首先创建一个空的maven项目,然后:
添加maven依赖:
<!--依赖-->
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.20</version>
</dependency>
</dependencies>
进去添加web项目,确定。
二、配置DispatcherServlet的启动参数
在web.xml中配置servlet:
/* 和 / 都是拦截所有请求,/ 会拦截的请求不包含 *.jsp, 而 /* 的范围更大,还会拦截 *.jsp 这些请求
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param><!--设置springmvc配置文件的位置-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!--启动服务器时就进行加载-->
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern><!--拦截.jsp以外的请求-->
</servlet-mapping>
</web-app>
创建controller和配置spring的xml文件:
package cn.cdulm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Acontroller {
@RequestMapping("/hello")
public String hello(String name){
System.out.println("hello() -- " + name);
return "redirect:a.jsp";
}
}
有两个jsp文件:
此时启动服务器:
三、向web中导入需要的包
然后访问http://localhost:8080/springMVC/hello 会出现404没有找到的错误,是因为没有手动导入包:
重启服务器:
再次访问 http://localhost:8080/springMVC/hello 路径:
会自动重定向到a.jsp页面。
此时控制台输出:
那么在访问的时候加上参数 http://localhost:8080/springMVC/hello?name=zhangsan :
输出结果包含name参数。
四、请求流程
1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 、客户端发送请求http:llocalhost: 8080 /springMVC/hello 2 、由tomcat接受到对应的请求 3 、SpringMVC的前端控制器DispatcherServlet接收到所有的请求 4 、查看请求地址和 @RequestMapping 注解的哪个匹配,来找到具体的类的处理方法 5 、前端控制器找到目标处理类和方法之后,执行目标方法 6 、方法执行完成之后会有一个返回值,SpringMVC会将这个返回值用视图解析器进行解析拼接成完整的页面地址 7 、DispatcherServlet拿到页面地址之后,转发到具体的页面 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)