随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
posts - 398,comments - 0,views - 13万

下表列出了DispatcherServlet检测到的特殊bean:

Bean typeExplanation

HandlerMapping

将请求映射到处理程序以及用于预处理和后处理的拦截器列表。映射基于一些标准,这些标准的细节因HandlerMapping实现而异。

 

两个主要的HandlerMapping实现是RequestMappingHandlerMapping(支持@RequestMapping带注释的方法)和SimpleUrlHandlerMapping(维护URI路径模式到处理程序的显式注册)。

HandlerAdapter

帮助DispatcherServlet调用映射到请求的处理程序,而不管实际是如何调用处理程序的。例如,调用带注释的控制器需要解析注释。HandlerAdapter的主要目的是对DispatcherServlet屏蔽此类细节。

HandlerExceptionResolver

解决异常的策略,可能将它们映射到处理程序、HTML错误视图或其他目标。参见异常。

ViewResolver

解析从处理程序返回到实际视图的基于逻辑字符串的视图名称,并将其呈现给响应。请参见视图分辨率和视图技术。

LocaleResolverLocaleContextResolver

解析客户端正在使用的地区以及可能的时区,以便能够提供国际化的视图。看地区。

ThemeResolver

解决您的web应用程序可以使用的主题-例如,提供个性化的布局。看到主题。

MultipartResolver

在一些多部分解析库的帮助下,对多部分请求进行抽象解析(例如,浏览器表单文件上传)。看到几部分的解析器。

FlashMapManager

存储和检索“输入”和“输出”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拿到页面地址之后,转发到具体的页面

 

  

 

 

posted on   时间完全不够用啊  阅读(94)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示