关于SpringMVC的整理

发布于:2025-07-10 ⋅ 阅读:(20) ⋅ 点赞:(0)

什么是SpringMVC?

SpringMVC是Spring框架的一个模块,是一个基于Java的实现了MVC设计模式的轻量级Web框架。它通过一套注解和接口,让开发者能够更简单、更快速地开发Web应用程序。

SpringMVC的核心组件?

  1. DispatcherServlet:前端控制器,接收所有请求并分发

  2. HandlerMapping:映射请求到处理器(Controller)

  3. Controller:处理请求的业务逻辑

  4. ModelAndView:封装模型数据和视图信息

  5. ViewResolver:解析视图名称到具体视图实现

  6. HandlerAdapter:实际执行处理器   【视图:数据和模版的总称】

SpringMVC的工作流程? 

  1. 用户发送请求到DispatcherServlet

  2. DispatcherServlet调用HandlerMapping查找Handler

  3. HandlerMapping返回HandlerExecutionChain(包含Handler和拦截器)

  4. DispatcherServlet调用HandlerAdapter执行Handler

  5. Handler(Controller)执行完成返回ModelAndView

  6. DispatcherServlet调用ViewResolver解析视图

  7. ViewResolver返回View对象

  8. DispatcherServlet渲染视图并返回响应

SpringMVC的常用注解? 

@Controller:标识一个类为控制器

@RequestMapping:映射URL到控制器方法

@RequestParam:绑定请求参数到方法参数

@PathVariable:绑定URL模板变量到方法参数

@ResponseBody:将返回值直接写入HTTP响应体

@RestController:组合了@Controller和@ResponseBody

@ModelAttribute:绑定请求参数到模型对象

@SessionAttributes:声明会话属性

 SpringMVC项目代码

 

web.xml的早期形式:【基于配置】

 过滤器:对请求和响应进行过滤

拦截器:对请求进行拦截

 

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <!--在web.xml中配置Spring提供的过滤器类 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value><!--设置字符集为utf-8 -->
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern><!--/ 匹配所有的请求 但是不包含资源  /* 匹配所有的请求 -->
  </filter-mapping>



  <!--配置前端控制器,对浏览器发送的请求进行统一处理-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name><!--取别名-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--类-->
    <!--加载springmvc.xml配置文件的位置和名称,配置的是Spring配置-->
    <!--Spring加载在DispatcherServlet之后 -->
    <init-param><!--初始化参数-->
      <!--contextConfigLocation:上下文配置路径,固定值-->
      <param-name>contextConfigLocation</param-name>
      <!--classpath:类路径,值得是Java和resources文件夹-->
      <!--springmvc.xml:指的是配置文件的名称:需要配置springmvc.xml,在下面-->
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--DispatcherServlet什么时候加载-->
    <!--1 项目一启动就会加载 0 请求打过来时才会加载-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern><!--localhost:8080  /代表着可以匹配到所有的请求-->
  </servlet-mapping>
  <!--有一些请求不能打到dispatcherServlet当中 https://localhost:8080/a.html-->
  <!--剔除这些请求-->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>

  <!--开启项目时打开的页面-->
  <welcome-file-list>
    <welcome-file>/index.html</welcome-file>
  </welcome-file-list>

</web-app>

MVC执行流程图 

 处理器适配器作用广泛,涉及转码,加密解密行为

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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--配置spring创建容器时要扫描的包-->
    <context:component-scan base-package="com.qcby"></context:component-scan>

    <!--配置处理器映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <!--配置处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!--配置视图解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/><!--设置字符集-->
        <property name="templateEngine" ref="templateEngine"/>
    </bean>
    <!-- templateEngine -->
    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver"/>
    </bean>
    <bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
        <property name="prefix" value="/html/" /><!--
        设置模板文件的前缀路径(默认从webapp/resources下开始查找)
        示例:/html/ 表示模板文件存放在 webapp/html/ 目录下
    -->
        <property name="suffix" value=".html" /> <!--
        设置模板文件的后缀
        示例:.html 表示所有模板文件都以.html结尾
        访问时只需写文件名,无需加后缀(如"index"会自动补全为"/html/index.html")
    -->
        <property name="templateMode" value="HTML5"/><!--
        设置模板模式:
        HTML5 - 标准HTML5解析模式
        其他可选值:LEGACYHTML5(宽松HTML5)、XHTML等
    -->
    </bean>
    <!-- 返回JSON数据 -->
    <bean
            class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
    </bean>
    <!-- 配置spring开启注解mvc的支持  默认就是开启的 ,要想让其他组件(不包含映射器、适配器、处理器)生效就必须需要配置了-->
    <mvc:annotation-driven></mvc:annotation-driven>
</beans>

 HelloController

@Controller
public class HelloController {
    @RequestMapping("/toIndex")
    @ResponseBody /*返回JSON数据*/
    public String Index(){

        return "aaaa";
    }

    @RequestMapping("/hello")
    public String hello(){
        return "hello"; //8080/html/hello.html
    }

}


网站公告

今日签到

点亮在社区的每一天
去签到