@RequestMapping("/path")
public String getReqAndRes(HttpServletRequest request, HttpServletResponse response){
/** 相关业务代码 此时可以直接使用request response对象 */
2.在代码里面获取可以通过RequestContextHolder的静态方法getRequestAttributes()获取Request相关的变量,如request, response等。
public class RequestHolder {
public static HttpServletRequest getRequest(){
HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
return req;
public static HttpServletResponse getResponse(){
HttpServletResponse resp = ((ServletWebRequest)RequestContextHolder.getRequestAttributes()).getResponse();
return resp;
在大部分的情况下,它都能很好地工作,使用了文件上传的话,那么将获取不到其参数
由于使用了文件上传,form表单的enctype类型为”multipart/form-data”,springmvc对文件上传的处理类实际却为spring-mvc.xml文件中配置的CommonsMultipartResolver,该类先判断当前请求是否为multipart类型,如果是的话,将request对象转为MultipartHttpServletRequet.
RequestContextHolder中的request:方法中完成了RequestContextHolder的requestAttributes设置,
而doService()在这之后调用,DispatcherServlet中的processRequest()方法即在doService()之中,
所以从RequestContextHolder中获取到的就是原来的RequestFacade对象,而不是经过spring mvc处理之后的MultipartHttpServletRequest对象,
其后果就是,从RequestContextHolder获取request后,无法直接通过getParameter()获取参数值。
最便捷的解决办法:
直接将HttpServletRequest作为spring mvc的方法入参,即可以正确获取参数值。
// 1,直接参数获取
@RequestMapping("/path")
public String getReqAndRes(HttpServletRequest request, HttpServletResponse response){
/** 相关业务代码 此时可以直接使用request response对象 */
// 2,在代码里面获取可以通过RequestContextHolder的静态方法get
一、Web服务器,浏览器,代理服务器
在看 response、request 对象之前,先来了解一下 Web服务器,浏览器,代理服务器 三者之间的关系。
当我们打开浏览器,在地址栏中输入URL,然后我们就看到了网页。 原理是怎样的呢?
实际上我们输入 URL 后,我们的浏览器给Web服务器发送了一个 Request, Web 服务器接到Request 后进行处理,生成相应的 Response,然后...
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rgba(37, 41, 51, 1) }
.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .ma...
项目中要获取response,在之前的方法都是如下方式获取:
public void manageHome(HttpServletRequest request,HttpServletResponse response)
但是每次都是用这种,不太方便。也不太好看。
我们可以包装一个方法,放在父类里。然后每个cotroller都继承这个父类。在父类中定义getResponse();方法,这样我...
使用spring ResponseEntity处理http响应
使用spring时,达到同一目的通常有很多方法,对处理http响应也是一样。本文我们学习如何通过ResponseEntity设置http相应内容、状态以及头信息。
ResponseEntity
ResponseEntity标识整个http相应:状态码、头部信息以及相应体内容。因此我们可以使用其对http响应实现完整配置。
如果需要使用ResponseEntity,必须在请求点返回,通常在spring rest中实现。ResponseEnt
ServletOutputStream out = response.getOutputStream();
JSONObject resultmap = new JSONObject();
resultmap.put("result", "1212");
byte[] resultBytes =...
request与response是Tomcat服务器在收到客户端请求后自己生成的,无需我们自己创建,但是在使用的时候可以有以下三种方式去获取
1、Controller直接使用
方法上直接使用,通过DispatcherServlet将参数传到MethodHandler直接使用
@RequestMapping(path = {"/test10"}, method = RequestMethod.POST)
@ResponseBody
public BaseRes test10(HttpS