本文共 2496 字,大约阅读时间需要 8 分钟。
request请求由请求头,请求行,请求体组成。
获取请求方式 get post
String method = request.getMethod();
获取请求资源 URL URI
StringBuffer requestURL = request.getRequestURL(); String requestURI = request.getRequestURI();
获取get请求参数
String queryString = request.getQueryString();
获取当前web应用名称
String contextPath = request.getContextPath();
获取所有请求头名称
EnumerationheaderNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { System.out.println(headerNames.nextElement()); }
获取指定请求头内容
String header = request.getHeader("accept-language");
打印所有的请求头名称和内容
EnumerationheaderNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String nextElement = headerNames.nextElement(); System.out.println(nextElement+": = "+request.getHeader(nextElement)); }
其中referer 代表的是请求从哪个页面发送过来的。
通过以下方式获取referer获取一个值
String name = request.getParameter("username");
获取多个值
String[] hobby = request.getParameterValues("hobby");System.out.println(Arrays.toString(hobby));
获取所有请求参数名称
EnumerationparameterNames = request.getParameterNames();while(parameterNames.hasMoreElements()){ System.out.println("name= "+parameterNames.nextElement());}
获取所有请求参数
MapparameterMap = request.getParameterMap(); for (Map.Entry entry : parameterMap.entrySet()) { System.out.println(entry.getKey()); System.out.println(Arrays.toString(entry.getValue())); }
当发送的参数不需要写到数据库当中时使用get,发送的参数需要保存到数据库当中时使用post。form一般提交数据使用post
发送请求时,会对参数进行编码,编码使用的是ISO8859-1,不支持中文,所以乱码。
通用解决方法: 1. 获取对应的参数 2. 通过IOS8859-1 转回二进制位,再以UTF-8的形式转成字符串 存在的问题 每一个参数都必须转回二进制位,再转为字符串 适用于post请求的转码方式MapparameterMap = request.getParameterMap();User u = new User();try { BeanUtils.populate(u, parameterMap);} catch (IllegalAccessException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace();}
重定向是浏览器找sevlet1,通过设置响应,告诉浏览器,再让浏览器发送请求到sevlet2
请求转发是浏览器找servlet1,在servlet1当中直接转发给servlet2,不再告诉浏览器,它之发送一次请求,浏览器当中地址栏还是servlet1,不会发生变化 设置请求转发RequestDispatcher disp = request.getRequestDispatcher("/Servlet2");disp.forward(request, response);
在一次请求过程中,request是共享的,在一个servlet当中设置参数,转发到另一个servlet,取出的是同一个request对象。
生命周期 创建 发送一个请求时创建一个request对象 销毁请求结束,浏览器给出响应,销毁 作用范围 一次请求当中客户端地址写的时候需要写上web应用名称/应用名称/资源
服务器地址不需要写web应用名称转载地址:http://jdaen.baihongyu.com/