SpringMVC总结

SpringMVC简介

简介

SpringMVC是一款基于Servlet API构建的原始Web框架 ,从一开始就包含在Spring Framework中。正式名称"Spring Web MVC"来自其源模块的名称( spring-webmvc ),但它通常被称为"Spring MVC"。

调用流程

接收数据

接收数据前,肯定是先要找请求的路径的。所以有了@RequestMapping,设置请求路径

请求路径

@RequestMapping("/**") 用来设置请求路径,还有几个进阶的注解

  1. param参数接收

    1、直接接收:形参名和传递参数名相同,就可以直接传递。

    2、@RequestParam注解接收:用@RequestParam注解帮助形参与传递参数进行绑定

    接收的数据有:基本数据类型、集合、Java类

  2. json参数接收
    @RequestBody 注解来将 JSON 数据转换为 Java 对象。

  3. 接收cookie参数
    @CookieValue 注释将 HTTP Cookie 的值绑定到控制器中的方法参数。

  4. 接收请求头参数

  5. 原生Api对象操作

共享域对象操作(了解)

就是原生Api直接间接进行数据交互的区域**。**

响应数据

后端开发模式的介绍

后端开发分为:混合开发和前后端分离开发。

  1. 混合开发:就是后端既要会前端也要后端,最后在返回数据的时候,返回的是一个前端页面。
  2. 分离开发:后端只需要注重后端的数据开发就行了,最终返回的是一个某种类型的数据。

转发和重定向

  1. 转发:就是在项目下的资源跳转
  2. 重定向:相当于超链接。比如进入一个网页中可以随便由后端跳转到某个资源或网页中。

转发是项目下的资源跳转,路径 : 项目下的地址 jsp/index 忽略applicationContext。

重定向项目下的资源可以是项目外的地址 重定向属于二次请求 路径: 项目下的地址 全地址 /springmvc/jsp /index 不忽略applicationContext

redirect是重定向的关键字

forward是转发的关键字

复制代码
//重定向:
//1、方法返回值写出字符串类型
//2、不能添加responseBody注解
//3、返回字符串 redirect:/重定向地址

@RequestMapping("/redirect-demo")
public String redirectDemo() {
    // 重定向到 /demo 路径 
    return "redirect:/demo";
}

//转发:只能是项目下的资源
//1、方法返回值写出字符串
//2、不能添加responseBody注解
//3、返回字符串forward :/转发地址

@RequestMapping("/forward-demo")
public String forwardDemo() {
    // 转发到 /demo 路径
    return "forward:/demo";
}

//注意: 转发和重定向到项目下资源路径都是相同,都不需要添加项目根路径!填写项目下路径即可!

返回json数据(重点)

前期需要准备:

  • 导入json依赖

  • 添加json数据转换器 @EnableWebMvc

接下来就是两个注解:

@ResponseBody注解:将返回的对象转换成json数据返回。

@RestController:@ResponseBody注解 + @Controller注解

返回静态资源

就是在配置类中配置

配置类

复制代码
//这里是一个配置类
@EnableWebMvc  //json数据处理,必须使用此注解,因为他会加入json处理器
@Configuration
@ComponentScan(basePackages = "com.atguigu.controller") //TODO: 进行controller扫描
//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {

    //配置jsp对应的视图解析器
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        //快速配置jsp模板语言对应的
        registry.jsp("/WEB-INF/views/",".jsp");
    }
    
    //开启静态资源处理 <mvc:default-servlet-handler/>
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

方法

复制代码
 /**
     * 设置静态资源映射
     * @param registry
     */
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info("开始静态资源映射");
        registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

RESTFul风格设计

操作 请求方式
查询 GET
保存 POST
删除 DELETE
更新 PUT

扩展

全局异常处理器

将异常的处理独立处理,通过配置之后统一来应对。

实现流程

  1. 定义好异常类

  2. 声明异常处理控制器类(用来统一定义异常处理的handler方法)

  3. 声明异常处理handler方法

拦截器

  1. 创建拦截器类
  2. 修改配置类,添加拦截器
  3. 配置类中拦截器方法具体配置
  4. 多个拦截器同时出现情况

SpringMVC总结

核心点 掌握目标
springmvc框架 主要作用、核心组件、调用流程
简化参数接收 路径设计、参数接收、请求头接收、cookie接收
简化数据响应 模板页面、转发和重定向、JSON数据、静态资源
restful风格设计 主要作用、具体规范、请求方式和请求参数选择
功能扩展 全局异常处理、拦截器
相关推荐
打工仔折腾 AI6 小时前
System Prompt 替代 Few-shot:用规则约束大模型输出的省钱实践
java·人工智能·python·spring·langchain·prompt·ai agent 实战
开开心心就好11 小时前
视频压缩工具推荐,绿色版免安装双击即用
java·前端·人工智能·spring·智能手机·intellij-idea·excel
专业程序开发源11 小时前
springboot古城景区管理系统88564-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
FYKJ_201012 小时前
SpringSecurity教室智能预约系统73972-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·spring·django
Terra.K1 天前
Spring AI day1(SSE+AI)
java·人工智能·spring·springai
Wang's Blog1 天前
Java框架 SpringCloud 快速入门: 路由断言工厂
java·spring·spring cloud
Q26433650231 天前
【有源码】基于SpringBoot+Vue的博物馆展览与服务一体化平台-java博物馆数字化展品展示与交互平台设计
java·vue.js·spring boot·spring·毕业设计·javaweb·课程设计
大圣编蚕1 天前
Spring AOP 失效排查:从原理到实战的完整指南
java·后端·spring
EatFan1 天前
MCP 从概念到落地:Java(Spring AI Alibaba)与 .NET 双栈接入实操对比
java·人工智能·后端·spring·.net·java后端·mcp
vx_Biye_Design1 天前
springboot小区管理系统68491-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express