request对象之HttpServletRequest的使用

index.jsp

<%@ page contentType="text/html;charset=GBK" language="java" errorPage=""%>
<!DOCTYPE html>
<html>
<head>
	<title>request对象</title>
</head>
<body>
	<!-- request对象时jsp中重要的对象,每个request对象封装着一次用户请求,并且所有的请求参数都被封装在request对象中,因此request对象是获取请求参数的重要途径,还可以用于操作request范围的属性,request是HttpServletRequest接口的实例,部分方法:
	String getParameter(String);获取paramName请求参数的值
	Map getParameterMap();获取所有请求参数名和参数值所组成的Map对象。
	Enumeration getParameterNames();获取所有请求参数名组成的Enumeration对象。
	String[] getParameterValues(String);当该请求参数有多个值时,该方法将返回多个值所组成的数组。
	HttpServletRequst提供了如下方法来访问请求头
	String getHeader(String);根据指定请求头的值
	java.util.Enumeration<String> getHeaderNames();获取所有请求头的名称
	java.util.Enumeration<String> getHeaders(String);获取指定请求头的多个值。
	int getIntHeader(String);获取指定请求头的值,并将该值转换为整数值。
	-->

	<form id="form1" method="post" action="request1.jsp">
		用户名:<input type="text" name="name" /> <br/>
		性别:
		男:<input type="radio" name="gender" value="男" />
		女:<input type="radio" name="gender" value="女" /><br/>
		喜欢的颜色:
		红:<input type="checkbox" name="color" value="红" />
		绿:<input type="checkbox" name="color" value="绿" />
		蓝:<input type="checkbox" name="color" value="蓝" /><br/>
		来自的国家:
		<select name="country">
			<option value="中国">中国</option>
			<option value="美国">美国</option>
			<option value="俄罗斯">俄罗斯</option>
		</select><br/>
		<input type="submit" value="提交" />
		<input type="reset" value="重置" />
	</form>
</body>
</html>

request1.jsp

<%@ page contentType="text/html;charset=GBK" language="java" errorPage="" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
	<title>POST方式 获取请求头/请求参数,传递的方式不会出现在地址栏中</title>
</head>
<body>
<%
	//获取所有请求头的名称
	Enumeration<String> headerNames = request.getHeaderNames();
	while(headerNames.hasMoreElements())
	{
		String headerName = headerNames.nextElement();//获得单独的头值
		//获取每个请求及其对应的值
		out.println(headerName + "-->" + request.getHeader(headerName) + "<br/>");
	}
	out.println("<hr/>");
	request.setCharacterEncoding("gb2312");//设置解码格式,在解析参数前设置解析的编码方式,不然会乱码
	//获取表单域的值
	String name = request.getParameter("name");
	String gender = request.getParameter("gender");
	//如果一个表单中有多个name,那么将会传递多个值,数组方式返回。
	String[] color = request.getParameterValues("color");
	String national = request.getParameter("country");
	//输出得到的值
	out.write("您的名字:" + name + "<hr/>");
	out.write("您的性别:" + gender + "<hr/>");
	//输出复选框获取的数组值
	for(String item : color)
	{
		out.write(item + " ");
	}
	out.write("<hr/>");
	out.write("您来自的国家:" + national);
%>
</body>
</html>

request2.jsp  把index.jsp的提交方式换成get,页面地址换成request2.jsp

<%@ page contentType="text/html;charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html>
<html>
<head>
	<title>获取GET方式传递过来的数据,get方式传递的参数会出现在地址栏中。</title>
</head>
<body>
	<%
		String name = request.getParameter("name");//获取请求参数
		String gender = request.getParameter("gender");
	%>
	<%=name%>
	<%=gender%>
</body>
</html>

request3.jsp

<%@ page contentType="text/html;charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html>
<html>
<head>
	<title>GET方式传递的参数非西欧字符的转换方式</title>
</head>
<body>
<%
	//获取请求里包含的查询字符串
	String rawQueryStr = request.getQueryString();
	out.write("原始字符串为:" + rawQueryStr + "<hr/>");
	//使用URLDecoder解码字符串
	String queryStr = java.net.URLDecoder.decode(rawQueryStr,"gbk");
	out.write("解码后的查询字符串为:" + queryStr + "<hr/>");
	//以&符号分解查询字符串
	String[] paramPairs = queryStr.split("&");
	for(String paramPair : paramPairs)
	{
		out.write("每个请求参数名、值对为:" + paramPair + "<br/>");
		//以=来分解请求参数名和值
		String[] nameValue = paramPair.split("=");
		out.write(nameValue[0] + "参数的值是:" + nameValue[1] + "<hr/>");
	}
	//另外一种对单独参数值得解码方式
	String rawName = request.getParameter("name");
	//将请求参数值使用ISO-8859-1字符串分解成字节数组
	byte[] rawBytes = rawName.getBytes("ISO-8859-1");
	//将字节数组重新解码成字符串
	String name = new String(rawBytes,"gb2312");


	/*输出结果:
		原始字符串为:name=1&gender=%C4%D0&color=%BA%EC&color=%C2%CC&country=%D6%D0%B9%FA
		解码后的查询字符串为:name=1&gender=男&color=红&color=绿&country=中国
		每个请求参数名、值对为:name=1
		name参数的值是:1
		每个请求参数名、值对为:gender=男
		gender参数的值是:男
		每个请求参数名、值对为:color=红
		color参数的值是:红
		每个请求参数名、值对为:color=绿
		color参数的值是:绿
		每个请求参数名、值对为:country=中国
		country参数的值是:中国
	*/
%>
</body>
</html>

GET方式传递小数据,传递的数据最好不要超过2KB,POST方式适合大数据传递,例如上传文件。GET和POST方式传递的值获取方法一样。如果POST传递的非西欧字符,那么在获取前要设置解码方式,GET方式传递非西欧字符的话就需要得到查询字符串解码后才能正常显示。

你可能感兴趣的:(request对象之HttpServletRequest的使用)