HttpServletRequest相关内容

来源:互联网 发布:网络套路是什么意思 编辑:程序博客网 时间:2024/06/01 23:27

request封装了客户端所有的请求数据
请求行
请求头
空行
请求体(GET没有)

request获取常用信息

获取客户端IPgetRemoteAddr():获取远程IP地址请求方式getMethod():返回的值可能是get也可能是post

request获取请求头

String getHeader(String name):适用于单值头int getIntHeader(String name):适用于单值int类型请求头long getDateHeader(String name):适用于单值毫秒类型的请求头Enumeration<String> getHeaders(String name):适用于多值请求头

使用方法

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //获取客户端IP地址        String addr = request.getRemoteAddr();        System.out.println("IP"+addr);        //获取请求方式request.getMethod()        System.out.println("请求方式"+request.getMethod());        //获取User-Agent  request.getHeader("User-Agent")        String userAgent = request.getHeader("User-Agent");        System.out.println(userAgent);        if(userAgent.toLowerCase().contains("chrome")){            System.out.println("你好:"+addr+"你用的是谷歌");        }        else if(userAgent.toLowerCase().contains("firefox")){            System.out.println("你好:"+addr+"你用的是火狐");        }        else if(userAgent.toLowerCase().contains("msie")){            System.out.println("你好:"+addr+"你用的是ie");        }    }

获取请求URL

Sting getScheme():获取协议Stirng getServeName():获取服务器名String getServePort():获取服务器端口String getContextPath():获取项目名String getServletPath():获取Servlet路径String getQueryString():获取参数部分,即问号后面的部分String getRequestURI():获取请求URI,等于项目名+Servlet路径String getRequestURL():获取请求URL,等于不包含参数的整个请求路径

获取请求参数
请求参数由客户端发送给服务器
有可能是在请求体中(POST),也可能在URL之后(GET)

String getParameter(String name):获取指定名称的请求参数,适用于单值请求参数Map<String,String[]> getParameterMap():获取所有请求参数,key为参数名称,value为参数值数组String[] getParameterValues(String name):获取指定名称的请求参数值,适用于多值请求参数Enumeration<String> getParameterNames():获取所有的请求参数名称

请求转发和请求包含

一个请求内执行多个ServletRequestDispatcher rd = request.getRequestDispatcher("/MyServlet");(被转发的Servlet路径)请求转发:rd.forward(request,response);请求包含:rd.include(request,response);一个请求跨多个Servlet,需要使用转发和包含请求转发:由下一个Servlet完成响应体,当前Servlet可以设置响应头(留头不留体)请求包含:由两个Servlet共同完成响应体(都留)无论是请求转发还是请求包含,都在一个请求范围之内,使用同一个request和response请求转发中第一个response体内容不能多于1K*24+1

request域
Servlet中三大域对象:request、session、application,都有如下三个方法

转发或包含时用来传递值void setAttribute(String name,Object value)Object getAttribute(String name)void removeSttribute(String name)同一请求范围内使用request.setAttribute()、request.getAttribute()来传值。前一个Servlet调用setAttribute()保存值,后一个Servlet调用getAttribute()获取值请求转发是服务端行为,只需要给出转发的Servlet路径,而重定向需要给出requestURI,即包含项目名
原创粉丝点击