zoukankan      html  css  js  c++  java
  • HttpServletRequest和ServletRequest的区别

    Java中HttpServletRequest接口是ServletRequest子接口,HttpServletRequest接口遵循http协议。
    相比于HttpServletRequest接口,ServletRequest的应用范围更加广泛,HttpServletRequest只适合在web开发中的http协议的请求,而ServletRequest则没有具体要求

    一、HttpServletRequest和ServletRequest都是接口

             HttpServletRequest继承自ServletRequest

            HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。如getHeader (String name), getMethod () ,getSession () 等等。

            他们对应的实现类:

            javax.servlet.ServletRequestWrapper (implements javax.servlet.ServletRequest)

            javax.servlet.http.HttpServletRequestWrapper (implements javax.servlet.http.HttpServletRequest) 

    二、

     @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 
  • 相关阅读:
    浅谈js 构造函数 以及 new 运算符
    zabbix学习(一)——LNMP环境搭建及zabbix安装
    K8s部署使用CFSSL创建证书
    kubernetes环境搭建 -k8s笔记(一)
    windows下python3和python2虚拟环境配置
    QEMU/KVM网络模式(二)——NAT
    KVM安装
    QEMU网络模式(一)——bridge
    百度地图、腾讯地图、高德地图经纬度转换
    DOS入门(2)
  • 原文地址:https://www.cnblogs.com/h-c-g/p/10892731.html
Copyright © 2011-2022 走看看