SpringMVC-获取Servlet原生对象

SpringMVC-获取Servlet原生对象

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

@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也可以作为形参直接获取到对象

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注解将其注入到全局变量中即可

@Controller
public class ApiController {
    @Autowired
    private ServletContext servletContext;
}

SpringMVC-获取Servlet共享域对象

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


获取request对象

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

  • model
  • modelMap
  • map
  • modelAndView

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