SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession

转自: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();
    }
}


页面输出:

SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession



我们还能获取请求消息头的信息

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();
    }
}


请求消息头的信息就被全部打印出来了

SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession


通过这种方法来获取请求的一系列信息,比如通过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();
    }
}


SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysjys.html