转自:https://blog.csdn.net/DoUUnderstand/article/details/78646586
SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession
除了model,@RequestParam @PathVariable可以传递参数外,还有HttpServletRequest和HttpServletResponse也可以进行参数传递。
Web服务器收到一个http请求,会针对每个请求创建一个HttpServletRequest和HttpServletResponse对象,向客户端发送数据找HttpServletResponse,从客户端取数据找HttpServletRequest.
HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。
主要功能:参数解析,Cookie读取,http请求字段,文件上传
1.请求行
getMethod(); 获得请求方式
getQueryString() ; 返回请求行中的参数部分。
getRequestURI(); 返回请求行中的资源名部分。
getRequestURL();返回客户端发出请求时的完整URL。
例子
@Controller
public class IndexController {
@RequestMapping(path={"/request"},method={RequestMethod.GET})
@ResponseBody
public String index(HttpServletRequest request) {
StringBuilder sb = new StringBuilder();
sb.append(request.getMethod()+"<br>");
sb.append(request.getQueryString()+"<br>");
sb.append(request.getRequestURI()+"<br>");
sb.append(request.getRequestURL()+"<br>");
return sb.toString();
}
}
页面输出:
我们还能获取请求消息头的信息
2.请求消息头
String getHeader(String name) 根据请求消息头名称称得到请求消息头信息值
Enumeration getHeaderNames() 得到所有请求消息头名称
Enumeration getHeaders(String name) 根据头名称得到相同名称请求头信息值
String getCookies() 获取请求消息头中的cookie值
例子
@Controller
public class IndexController {
@RequestMapping("/request")
@ResponseBody
public String index(HttpServletRequest request) {
StringBuilder sb = new StringBuilder();
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) { //读取请求消息头
String name = headerNames.nextElement();
sb.append(name + ":" + request.getHeader(name) + "<br>");
}
return sb.toString();
}
}
请求消息头的信息就被全部打印出来了
通过这种方法来获取请求的一系列信息,比如通过user-agent来判断用户是通过手机还是电脑来登陆页面,从而可以实现相对应的跳转。
获取cookie值
@Controller
public class IndexController {
@RequestMapping("/request")
@ResponseBody
public String index(HttpServletRequest request) {
StringBuilder sb = new StringBuilder();
if(request.getCookies()!=null){
for(Cookie cookie :request.getCookies()){
sb.append("Cookie: " + cookie.getName()+" value: "+ cookie.getValue());
}
}
return sb.toString();
}
}