【SpringBoot3】整合SpringMVC

文章目录


一、实现过程

springboot-part - GitHub

1.1 创建程序

模块:springboot-base-springmvc-03

1.2 引入依赖

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.5</version>
    </parent>
    <groupId>com.wake</groupId>
    <artifactId>springboot-base-springmvc-03</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

1.3 启动类

java 复制代码
@SpringBootConfiguration
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class,args);
    }
}

1.4 Controller

java 复制代码
@Controller
@ResponseBody
public class HelloController {
    @GetMapping("show")
    public String show(){
        return "Hello SpringBoot! MVC!";
    }
}

二、web相关配置

yml 复制代码
#相关的Web配置
server:
  servlet:
    context-path: /boot #设置项目根路径
  port: 80 #默认是8080
  • 测试

Spring Boot Web应用程序配置 参数 - 官方文档

当涉及Spring Boot的Web应用程序配置时,以下是五个重要的配置参数:

  1. server.port: 指定应用程序的HTTP服务器端口号。默认情况下,Spring Boot使用8080作为默认端口。您可以通过在配置文件中设置server.port来更改端口号。
  2. server.servlet.context-path: 设置应用程序的上下文路径。这是应用程序在URL中的基本路径。默认情况下,上下文路径为空。您可以通过在配置文件中设置server.servlet.context-path属性来指定自定义的上下文路径。
  3. spring.mvc.view.prefix和spring.mvc.view.suffix: 这两个属性用于配置视图解析器的前缀和后缀。视图解析器用于解析控制器返回的视图名称,并将其映射到实际的视图页面。spring.mvc.view.prefix定义视图的前缀,spring.mvc.view.suffix定义视图的后缀。
  4. spring.resources.static-locations: 配置静态资源的位置。静态资源可以是CSS、JavaScript、图像等。默认情况下,Spring Boot会将静态资源放在classpath:/static目录下。您可以通过在配置文件中设置spring.resources.static-locations属性来自定义静态资源的位置。
  5. spring.http.encoding.charset和spring.http.encoding.enabled: 这两个属性用于配置HTTP请求和响应的字符编码。spring.http.encoding.charset定义字符编码的名称(例如UTF-8),spring.http.encoding.enabled用于启用或禁用字符编码的自动配置。

三、静态资源处理

3.1 默认路径

默认的静态资源路径为:

· classpath:/META-INF/resources/

· classpath:/resources/

· classpath:/static/

· classpath:/public/

我们只要静态资源放在这些目录中任何一个,SpringMVC都会帮我们处理。

我们习惯会把静态资源放在classpath:/static/ 目录下。

3.2 覆盖路径

yml 复制代码
spring:
  web:
    resources:
      static-locations: classpath:/webapp #配置静态资源文件
      #一旦在这配置了,那么默认的文件夹就被覆盖了,全部失效,只能使用配置的默认文件夹
      #外部访问时,不需要加文件夹名的前缀,直接 /静态资源 即可

四、自定义拦截器(SpringMVC配置)

按正常的springmvc配置拦截器即可。

【SpringMVC】全局异常处理 拦截器 参数校验 扩展总结第四期

4.1 拦截器声明

java 复制代码
/**
 * @Description: 拦截器
 */
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("request : " + request + "response : " + response + "handler : " + handler);
        return true;
    }
}

4.2 拦截器配置

java 复制代码
/**
 * @Description: springmvc配置
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    /**
     * /**  拦截当前目录及子目录下的所有路径 /user/**   /user/findAll  /user/order/findAll
     * /*   拦截当前目录下的以及子路径   /user/*     /user/findAll
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/*");
    }
}

4.2 拦截器测试

相关推荐
_Evan_Yao1 分钟前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
梓豪csd27 分钟前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼28 分钟前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
王中阳Go31 分钟前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
thefool1122661 小时前
TCP 1
java·1024程序员节
码事漫谈2 小时前
消除AI幻觉,普通人能做的五件事
后端
金銀銅鐵4 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手4 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
Mk598785 小时前
给 Agent 装上对话框 —— AgentScope-Java 接入 Spring Boot 与 SSE 流式实战
后端
付威20235 小时前
从 Loop 到 Runtime:rpi Agent Loop 与 Cordis 的边界、取舍与组合
后端