HttpServletRequest对象表明客户端的请求,当客户端经过HTTP协议访问服务器时,HTTP请求中的全部信息都封装在这个对象中,开发人员经过这个对象的方法,能够得到客户这些信息。java
经过Request对象进行的经常使用操做web
获取客户机信息服务器
获取请求头信息jsp
获取请求参数this
利用请求域传递对象url
1、request获取客户机信息spa
getRequestURL方法返回客户端发出请求完整URL.net
getRequestURI方法返回请求行中的资源名部分code
getQueryString 方法返回请求行中的参数部分对象
getRemoteAddr方法返回发出请求的客户机的IP地址
getMethod获得客户机请求方式
getContextPath 得到当前web应用虚拟目录名称
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.获取客户端请求的完整URL String url = request.getRequestURL().toString(); System.out.println(url); //2.获取客户端请求的资源部分的名称 String uri = request.getRequestURI(); System.out.println(uri); //3.获取请求行中参数部分 String qStr = request.getQueryString(); System.out.println(qStr); //4.获取请求客户端的ip地址 String ip = request.getRemoteAddr(); System.out.println(ip); //5.获取客户机的请求方式 String method = request.getMethod(); System.out.println(method); //6.获取当前web应用的名称 String name = request.getContextPath(); System.out.println(name); response.sendRedirect(request.getContextPath()+"/index.jsp"); }
2、request获取请求头信息
得到客户机请求头
getHeader(name)方法 --- String
getHeaders(String name)方法 --- Enumeration<String>
getHeaderNames方法 --- Enumeration<String>
得到具体类型客户机请求头
getIntHeader(name)方法 --- int
getDateHeader(name)方法 --- long(日期对应毫秒)
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String value = request.getHeader("Host"); System.out.println(value); Enumeration<String> enumeration = request.getHeaderNames(); while(enumeration.hasMoreElements()){ String name = enumeration.nextElement(); String value = request.getHeader(name); System.out.println(name+":"+value); } }
3、request获取请求参数
getParameter(name) --- String 经过name得到值
getParameterValues --- String[ ] 经过name得到多值 checkbox
getParameterNames --- Enumeration<String> 得到全部name
getParameterMap --- Map<String,String[ ]> key :name value: 多值
处理中文乱码-->点击详细解释
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String value = (String) request.getAttribute("name"); }
4、request利用请求域传递对象
request对象同时也是一个域对象,开发人员经过request对象在实现转发时,把数据经过request对象带给其它web资源处理
setAttribute方法
getAttribute方法
removeAttribute方法
getAttributeNames方法
request做用域的做用范围
在请求转发时传递数据
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("name", "zqwang121"); this.getServletContext().getRequestDispatcher("/servlet/Demo4").forward(request, response); String result = "zqwang121"; request.setAttribute("result", result); request.getRequestDispatcher("/show.jsp").forward(request, response); }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String value = (String) request.getAttribute("name"); System.out.println(value); }
4、request实现请求转发
request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法能够实现请求转发,从而共享请求中的数据
若是在调用forward方法以前向servlet程序中写入的部份内容已经被真正的传送到了客户端,forward将不能进行,会抛出异常。
若是在调用forward以前向response缓冲区中写入了内容,只要写入到其中的内容尚未真的被输出到客户端,forward方法就能够正常执行,但原来写入到缓冲区中的数据将被清空,注意只是实体内容被清空,以前写入的响应头信息仍然存在。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("/servlet/Demo6").forward(request, response); }