springboot中路径默认配置与重定向/转发所存在的域对象

ops/2025/2/3 19:57:19/

Spring Boot 是一种简化 Spring 应用开发的框架,它提供了多种默认配置和方便的开发特性。在 Web 开发中,路径配置和请求的重定向/转发是常见操作。本文将详细介绍 Spring Boot 中的路径默认配置,并解释重定向和转发过程中存在的域对象。

一、Spring Boot路径默认配置

1. 基本路径配置

Spring Boot 默认将所有静态资源放置在 src/main/resources/static 目录下,并通过以下配置自动映射:

  • 静态资源:如 HTML、CSS、JavaScript 文件,默认放在 staticpublicresources 和 META-INF/resources 目录下。
  • 模板引擎:如 Thymeleaf 模板文件,放在 src/main/resources/templates 目录下。
2. 应用上下文路径

Spring Boot 默认应用的上下文路径为根路径(/)。可以通过配置文件 application.properties 或 application.yml 更改上下文路径。

# application.properties
server.servlet.context-path=/myapp
​
# application.yml
server:servlet:context-path: /myapp
​
3. 控制器路径

控制器中的路径通过 @RequestMapping 注解配置,支持多种请求方法(如 GET、POST、PUT、DELETE)。

@RestController
@RequestMapping("/api")
public class MyController {@GetMapping("/hello")public String sayHello() {return "Hello, World!";}
}
​

二、重定向与转发

1. 重定向

重定向是指服务器返回一个状态码(如 302),指示客户端(浏览器)重新请求另一个 URL。重定向会导致浏览器的地址栏发生变化,并且是一次新的请求。

  • 使用方式
@RequestMapping("/redirect")
public String redirect() {return "redirect:/newUrl";
}
​
  • 特点

    • 浏览器地址栏变化。
    • 是一次新的 HTTP 请求。
    • 无法保留请求中的数据(如表单数据)。
2. 转发

转发是指服务器将请求内部转发到另一个资源(如另一个控制器或 JSP),客户端对此过程无感知,地址栏不会发生变化。

  • 使用方式
@RequestMapping("/forward")
public String forward() {return "forward:/newUrl";
}
​
  • 特点

    • 浏览器地址栏不变。
    • 仍然是同一次请求。
    • 可以保留请求中的数据。

三、域对象

在 Spring MVC 中,域对象用于在请求处理过程中存储和传递数据,主要包括:

  • Request 域:用于在一次请求内传递数据,生命周期为单次请求。
  • Session 域:用于在一次会话内传递数据,生命周期为用户会话期间。
  • Application 域:用于在整个应用范围内共享数据,生命周期为应用程序的运行期间。
1. Request 域对象

用于存储一次请求中的数据,通常在转发过程中使用。

@RequestMapping("/setRequestAttribute")
public String setRequestAttribute(HttpServletRequest request) {request.setAttribute("message", "This is a request attribute");return "forward:/showRequestAttribute";
}@RequestMapping("/showRequestAttribute")
public String showRequestAttribute(HttpServletRequest request, Model model) {String message = (String) request.getAttribute("message");model.addAttribute("message", message);return "display";
}
​
2. Session 域对象

用于存储用户会话期间的数据,通常在多次请求间共享数据。

@RequestMapping("/setSessionAttribute")
public String setSessionAttribute(HttpSession session) {session.setAttribute("user", "John Doe");return "redirect:/showSessionAttribute";
}@RequestMapping("/showSessionAttribute")
public String showSessionAttribute(HttpSession session, Model model) {String user = (String) session.getAttribute("user");model.addAttribute("user", user);return "display";
}
​
3. Application 域对象

用于存储应用程序级别的数据,通常在整个应用范围内共享数据。

@RequestMapping("/setApplicationAttribute")
public String setApplicationAttribute(ServletContext context) {context.setAttribute("appVersion", "1.0.0");return "redirect:/showApplicationAttribute";
}@RequestMapping("/showApplicationAttribute")
public String showApplicationAttribute(ServletContext context, Model model) {String appVersion = (String) context.getAttribute("appVersion");model.addAttribute("appVersion", appVersion);return "display";
}

http://www.ppmy.cn/ops/155383.html

相关文章

snmp-check:SNMP 设备枚举器!全参数详细教程!Kali Linux教程!黑客渗透教程!

简介 SNMPCHECK 是根据GPL许可证分配的开源工具。它的目标是自动化以 SNMP 协议支持(Windows,Unix,网络设备,打印机...)收集任何设备信息的过程。就像 SNMPWALK 一样,SNMPCHECK 使您可以列举 SNMP 设备&am…

stm32硬件实现与w25qxx通信

使用的型号为stm32f103c8t6与w25q64。 STM32CubeMX配置与引脚衔接 根据stm32f103c8t6引脚手册,采用B12-B15四个引脚与W25Q64连接,实现SPI通信。 W25Q64SCK(CLK)PB13MOSI(DI)PB15MISO(DO)PB14CS&#xff08…

C++ Primer 标准库类型string

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

熵采样在分类任务中的应用

熵采样在分类任务中的应用 在机器学习的分类任务里,数据的标注成本常常制约着模型性能的提升。主动学习中的熵采样策略,为解决这一难题提供了新的思路。本文将带你深入了解熵采样在分类任务中的原理、应用及优势。 一、熵采样的原理(优化版) 熵,源于信息论,是对不确定…

发布 VectorTraits v3.1(支持 .NET 9.0,支持 原生AOT)

文章目录 发布 VectorTraits v3.1(支持 .NET 9.0,支持 原生AOT)支持 .NET 9.0中断性变更 支持 原生AOT原生AOT的范例使用IlcInstructionSet参数 TraitsOutput类增加IsDynamicCodeCompiled/IsDynamicCodeSupported信息的输出为了支持原生AOT, …

39. I2C实验

一、IIC协议详解 1、ALPHA开发板上有个AP3216C,这是一个IIC接口的器件,这是一个环境光传感器。AP3216C连接到了I2C1上: I2C1_SCL: 使用的是UART4_TXD这个IO,复用位ALT2 I2C1_SDA: 使用的是UART4_RXD这个IO。复用为ALT2 2、I2C分为SCL和SDA&…

doris:主键模型的更新并发控制

概览​ Doris 采用多版本并发控制机制(MVCC - Multi-Version Concurrency Control)来管理并发更新。每次数据写入操作均会分配一个写入事务,该事务确保数据写入的原子性(即写入操作要么完全成功,要么完全失败&#xf…

数组—学习

1.基础知识 1. 高精度计算 高精度算法是处理大数(超过64位)的计算方法。C标准库没有直接支持大数运算,因此需要使用数组来模拟大数的存储和运算。 2. 全局静态数组 全局变量(包括静态数组)在C中会在程序启动时自动初…