HttpServletRequest对象方法的用法
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返回一个包含请求消息中的所有参数名的Enumeration对象。通过遍历这个Enumeration对象,就可以获取请求消息中所有的参数名。
getParameterMap方法 返回一个保存了请求消息中的所有参数名和值的Map对象。Map对象的key是字符串类型的参数名,value是这个参数所对应的Object类型的值数组
调用RequestDispatcher.forward 方法的请求转发过程结束后,
浏览器地址栏保持初始的URL地址不变。
HttpServletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求;
RequestDispatcher.forward方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。
RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;
而HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。
例子程序:
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
控制台输出:
1 getRequestURL: http://localhost:8080/RequestAndResponse/requestmethod 2 getRequestURI: /RequestAndResponse/requestmethod 3 getQueryString: name=sunjob&password=123456&password=haha 4 getRemoteAddr: 127.0.0.1 5 getRemoteHost: 127.0.0.1 6 getRemotePort: 2374 7 getRemoteUser: null 8 getLocalAddr: 127.0.0.1 9 getLocalName: localhost 10 getLocalPort: 8080 11 getMethod: GET 12 -------request.getParamterMap()------- 13 name=sunjob 14 password=123456 15 password=haha 16 --------request.getHeader()-------- 17 host=localhost:8080 18 user-agent=Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0 19 accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 20 accept-language=zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3 21 accept-encoding=gzip, deflate 22 connection=keep-alive 23 cache-control=max-age=0