HttpServletRequest和ServletRequest都是接口
HttpServletRequest继承自ServletRequest
HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。 例如:
getHeader(), getMethod() , getSession()
???@Override ?????public void doFilter(ServletRequest request, ServletResponse response, ?????????????FilterChain filterChain) throws IOException, ServletException { ?????????// 过滤用户请求,判断是否登录 ?????????HttpServletRequest httpServletRequest = (HttpServletRequest)request; ?????????HttpServletResponse httpServletResponse = (HttpServletResponse)response; ?????????httpServletResponse .setContentType("text/html;charset=utf-8"); ?????????httpServletRequest.setCharacterEncoding("utf-8"); ?????????httpServletResponse.setCharacterEncoding("utf-8"); ???????????????????String username = (String)httpServletRequest.getSession().getAttribute("username"); ?????????if (username == null) { ?????????????String path = httpServletRequest.getContextPath(); ?????????????httpServletResponse.sendRedirect(path+"/index.jsp"); ?????????} ?????????filterChain.doFilter(httpServletRequest, httpServletResponse); ?????} ?
1. 获得客户机信息
getRequestURL方法返回客户端发出请求时的完整URL。
getRequestURI方法返回请求行中的资源名部分。
getQueryString 方法返回请求行中的参数部分。
getRemoteAddr方法返回发出请求的客户机的IP地址
getRemoteHost方法返回发出请求的客户机的完整主机名
getRemotePort方法返回客户机所使用的网络端口号
getLocalAddr方法返回WEB服务器的IP地址。
getLocalName方法返回WEB服务器的主机名
getMethod得到客户机请求方式
2.获得客户机请求头
getHeader(string name)方法
getHeaders(String name)方法
getHeaderNames方法
3. 获得客户机请求参数(客户端提交的数据)
getParameter(name)方法
getParameterValues(String name)方法
getParameterNames方法
getParameterMap方法
例子程序:
???public void doGet(HttpServletRequest request, HttpServletResponse response) ?????????????throws ServletException, IOException { ?????????????System.out.println("getRequestURL: "+request.getRequestURL()); ?????????????System.out.println("getRequestURI: "+request.getRequestURI()); ?????????????System.out.println("getQueryString: "+request.getQueryString()); ?????????????System.out.println("getRemoteAddr: "+request.getRemoteAddr()); ?????????????System.out.println("getRemoteHost: "+request.getRemoteHost()); ?????????????System.out.println("getRemotePort: "+request.getRemotePort()); ?????????????System.out.println("getRemoteUser: "+request.getRemoteUser()); ?????????????System.out.println("getLocalAddr: "+request.getLocalAddr()); ?????????????System.out.println("getLocalName: "+request.getLocalName()); ?????????????System.out.println("getLocalPort: "+request.getLocalPort()); ?????????????System.out.println("getMethod: "+request.getMethod()); ?????????????System.out.println("-------request.getParamterMap()-------"); ?????????????//得到请求的参数Map,注意map的value是String数组类型 ?????????????Map map = request.getParameterMap(); ?????????????Set<String> keySet = map.keySet(); ?????????????for (String key : keySet) { ?????????????String[] values = (String[]) map.get(key); ?????????????for (String value : values) { ?????????????????System.out.println(key+"="+value); ?????????????} ??????????} ?????????????System.out.println("--------request.getHeader()--------"); ?????????????//得到请求头的name集合 ?????????????Enumeration<String> em = request.getHeaderNames(); ?????????????while (em.hasMoreElements()) { ?????????????String name = (String) em.nextElement(); ?????????????String value = request.getHeader(name); ?????????????System.out.println(name+"="+value); ?????????} ???????????????????} ?
浏览器上地址栏:http://localhost:8080/RequestAndResponse/requestmethod?name=sunjob&password=123456&password=haha
控制台输出:
???getRequestURL: http://localhost:8080/RequestAndResponse/requestmethod ?????getRequestURI: /RequestAndResponse/requestmethod ?????getQueryString: name=sunjob&password=123456&password=haha ?????getRemoteAddr: 127.0.0.1 ?????getRemoteHost: 127.0.0.1 ?????getRemotePort: 2374 ?????getRemoteUser: null ?????getLocalAddr: 127.0.0.1 ?????getLocalName: localhost ?????getLocalPort: 8080 ?????getMethod: GET ?????-------request.getParamterMap()------- ?????name=sunjob ?????password=123456 ?????password=haha ?????--------request.getHeader()-------- ?????host=localhost:8080 ?????user-agent=Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0 ?????accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 ?????accept-language=zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3 ?????accept-encoding=gzip, deflate ?????connection=keep-alive ?????cache-control=max-age=0 ?
HttpServletRequest和ServletRequest的区别以及HttpServletRequest对象方法的用法
原文地址:https://www.cnblogs.com/a-du/p/9634229.html