深入体验JavaWeb开发内幕——关于HttpServletRequestRequest对象
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的相关方法,即可以获得客户的这些信息。
一、通过request常用方法获得相关信息:
1、通过request常用方法获得客户机信息
- getRequestURL方法返回客户端发出请求时的完整URL。
- getRequestURI方法返回请求行中的资源名部分。
- getQueryString 方法返回请求行中的参数部分。
- getRemoteAddr方法返回发出请求的客户机的IP地址
- getRemoteHost方法返回发出请求的客户机的完整主机名
- getRemotePort方法返回客户机所使用的网络端口号
- getLocalAddr方法返回WEB服务器的IP地址。
- getLocalName方法返回WEB服务器的主机名
- getMethod得到客户机请求方式
例如在Request.java中加入如下代码:
//返回相关请求的信息
String uri=request.getRequestURI();
Stringrad = request.getRemoteAddr();
Stringrh = request.getRemoteHost();
Stringru = request.getRemoteUser();
intrp = request.getRemotePort();
Stringcp = request.getContextPath();
Stringla = request.getLocalAddr();
Stringce = request.getCharacterEncoding();
Stringgm = request.getMethod();
Stringqs = request.getQueryString();
System.out.println(uri);
System.out.println(rad);
System.out.println(rh);
System.out.println(ru);
System.out.println(rp);
System.out.println(cp);
System.out.println(la);
System.out.println(ce);
System.out.println(gm);
System.out.println(qs);
即可获取相关信息。
2、通过request常用方法获得客户机请求头信息
- getHead(name)方法
- getHeaders(String name)方法
- getHeaderNames方法
如:
private void getRequestValue(HttpServletRequest request) {
//获得客户机请求头及请求头的值
System.out.println(request.getHeader("method"));
Enumeration e = request.getHeaderNames();
while(e.hasMoreElements()){
String name = (String)e.nextElement();
String value = request.getHeader(name);
System.out.println(name+":"+value);
}
}
3.获得客户机请求参数(客户端提交的数据)
- getParameter(name):获取指定名称的参数值。这是最为常用的方法之一。
- getParameterValues(String name):获取指定名称参数的所有值数组。它适用于一个参数名对应多个值的情况。如页面表单中的复选框,多选列表提交的值。
- getParameterNames():返回一个包含请求消息中的所有参数名的Enumeration对象。通过遍历这个Enumeration对象,就可以获取请求消息中所有的参数名
- getParameterMap():返回一个保存了请求消息中的所有参数名和值的Map对象。Map对象的key是字符串类型的参数名,value是这个参数所对应的Object类型的值数组。
二、request的常见应用
1、 各种表单输入项数据的获取
如可以获取form表单中的text、password、radio、checkbox、 file、select、textarea、 hidden、image、button等组件的值进行数据库操作或其他处理操作。
来看一个具体应用:
界面代码主体部分如下:
Register.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<head>
<title>Register.html</title>
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"