• 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 
  • 相关阅读:
    linux下挂载硬盘出错的解决方法
    linux下解压缩文件中文乱码问题的解决
    VLC播放器的快捷键(shutcut)
    PGSQL 日期时间的比较
    PGSQL 字符串作为查询参数的处理
    pqsql 防注入
    js字符数组转化为数字数组
    js去除字符串的前后空白
    使用gravatar生成头像
    js删除数组的某个元素
  • 原文地址:https://www.cnblogs.com/h-c-g/p/10892731.html
Copyright © 2020-2023  润新知