• HttpServletRequest和ServletRequest的区别以及HttpServletRequest对象方法的用法


    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  
  • 相关阅读:
    Linux系统下公式编辑器KLatexFormula
    C++11 std::chrono库详解
    Direct Visual-Inertial Odometry with Stereo Cameras
    改变机器人的初始位姿,让机器人的初始位置不在地图的原点处
    ubuntu为文件添加可执行权限
    oracle的启动和停用
    orcale创建用户、授权
    手工配置oracle数据库
    MySQL存储过程详解 mysql 存储过程
    mysql的navicat执行存储过程
  • 原文地址:https://www.cnblogs.com/a-du/p/9634229.html
Copyright © 2020-2023  润新知