SpringMVC-获取Servlet原生对象

SpringMVC-获取Servlet原生对象

直接在形参列表中声明原生对象,即可直接使用

1
2
3
4
5
6
7
@Controller
public class ApiController {
// 直接使用原生对象
public void data(HttpServletRequest req, HttpServletResponse resp){

}
}
Controller method argument 控制器方法参数 Description
jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse 请求/响应对象
jakarta.servlet.http.HttpSession 强制存在会话。因此,这样的参数永远不会为 null
java.io.InputStream, java.io.Reader 用于访问由 Servlet API 公开的原始请求正文。
java.io.OutputStream, java.io.Writer 用于访问由 Servlet API 公开的原始响应正文。
@PathVariable 接收路径参数注解
@RequestParam 用于访问 Servlet 请求参数,包括多部分文件。参数值将转换为声明的方法参数类型。
@RequestHeader 用于访问请求标头。标头值将转换为声明的方法参数类型。
@CookieValue 用于访问Cookie。Cookie 值将转换为声明的方法参数类型。
@RequestBody 用于访问 HTTP 请求正文。正文内容通过使用 HttpMessageConverter 实现转换为声明的方法参数类型。
java.util.Map, org.springframework.ui.Model, org.springframework.ui.ModelMap 共享域对象,并在视图呈现过程中向模板公开。
Errors, BindingResult 验证和数据绑定中的错误信息获取对象!

servletContext

我们获取ServletContext对象的方式有三种:

  • 通过request调用getServletContext方法
  • 通过session调用getServletContext方法
  • 通过@Autowired全局注入

调用方法方式

session也可以作为形参直接获取到对象

1
2
3
4
5
6
7
public class ApiController {

public void data(HttpServletRequest req, HttpServletResponse resp, HttpSession session) throws Exception {
ServletContext servletContext = req.getServletContext();
ServletContext servletContext1 = session.getServletContext();
}
}

全局注入方式

在SpringMVC的初始化时,已经将Context对象放入IoC容器中了

使用@Autowired注解将其注入到全局变量中即可

1
2
3
4
5
@Controller
public class ApiController {
@Autowired
private ServletContext servletContext;
}

SpringMVC-获取Servlet共享域对象

上面的内容已经可以获取三大域对象了,但除此之外,SpringMVC也提供了三大域对象的获取方式


获取request对象

Spring额外提供了四种在request域中存放数据的方式:

  • model
  • modelMap
  • map
  • modelAndView

以上内容了解即可,当看到了别蒙



SpringMVC-获取Servlet原生对象
http://blog.170827.xyz/2024/06/26/SpringMVC-获取Servlet原生对象/
作者
XIAOBAI
发布于
2024年6月26日
许可协议