request对象

16 篇文章 0 订阅
request对象是jsp中重要的对象,每个request对象封装着一次用户的请求,并且所有的请求都被封装在request对象中,因此request对象是获取请求参数的重要途径.
request可代表本次请求范围,所以还可用于操作request范围的属性.

1.获取请求头/请求参数
web应用是请求/响应架构的应用,浏览器发送请求时通常总会附带一些请求头,还可能包含一些请求参数发送给服务器,服务器端负责解析请求头/请求参数就是jsp/Servlet,而jsp和Servlet取得请求参数的途径就是request.

请求参数:
通常是用户发送给服务器的必要信息,是利用窗体发送的,服务器必须有这些信息才可以进一步针对用户的请求作出正确的响应.请求参数是在URL之后跟随一个问号(?),然后是请求参数名称(name)与请求参数值(value),中间以等号(=)表示成对关系.若有多个请求参数,则以&字符连接.

获取请求参数的方法:
String getParameter(String paramName):获取paramName请求参数的值.
Map getParameterMap():获取所有请求参数名和参数名所组成的Map对象.
Enumeration getParameterNames();获取所有请求参数名所组成的Enumeration对象.
String[] getParamValues(String name):paramName请求参数的值,当该请求参数有多个值时,该方法将赶回多个值所组成的数组.
httpServletRequest提供的请求头方法:
String getHeader(String name):根据指定请求头的值
java.util.Enumeration<String> getHeaderNames():获取指定请求头的名称.
java.util.Enumeration<String> getHeaders(String name):获取指定请求头的多个值.
int getIntHeader(String name):获取指定请求头的值, 并将该值转为整数值.

通常请求头和请求参数都是由用户发送到服务器的数据,区别在于请求头通常有浏览器自动添加,因此一次请求总包含若干请求头.而请求参数则通常由开发人员控制添加.

客户端发送请求参数通常分为两种情况:
GET方式的请求:
顾名思义,就是向服务器取得(GET)指定的资源,在发出GET请求时,必须一并告诉服务器请求资源的URL,以及一些标头(Header信息).使用GET方式发送请求,浏览器的地址栏上也会出现请求参数信息.GET请求可以发送的请求参数长度是有限(根据不同浏览器版本而有所不同),对于太大量的数据并不适合用GET方式进行请求,这时候可以换用POST.GET请求纯粹取得资源,而不改变服务器上的数据或状态.
GET的请求参数,只是用来告知服务器,必须进一步根据请求参数来标识出要响应的内容,同样的GET请求参数且使用相同的参数重复发送多次,都应该传回相同的结果

post方式的请求:
顾名思义,就是在请求时发布(POST)信息给服务器,对于大量或复杂的信息发送(如文件上传),基本上会采用POSt来进行发送.POST请求发布的信息不会显示在地址栏上,只是会将请求参数一直最后的信息体之中,由于信息体的内容长度不受限制,所以大量数据的发送都会使用POST方法,POST请求发送的数据,可能会影响服务器上的数据或状态,例如修改(增删改查)数据库的内容,或者在服务器上保存文件.如果你的请求会改变服务器的状态,则改用POST请求

如何选择POST和GET?
1.使用GET的情况:参数包含少量合法的长度适中的信息,需要保存为书签的时候,避免缓存
缺点:不安全,参数长度有限
2.使用POST的情况:参数包含敏感信息,安全性考虑,信息长度过长时,从浏览器缓存中取旧资料,
缺点:由于参数不会出现在地址栏上,无法加入浏览器的书签中
案例:

form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="request.jsp" method="post">
		姓名: <input type="text" name="name"> <br> 
		密码: <input type="password" name="pass"> 
		      <input type="submit" value="提交">
	</form>
</body>
</html>
request.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String name = request.getParameter("name");
		String pass = request.getParameter("pass");
	%>
	姓名:<%=name%>
	密码:<%=pass%>
</body>
</html>
提交请求后显示如下:


提示:
并不是每个表单域都会生成请求参数的,而是有name属性的表单域才生成请求参数.关于表单域和请求参数的关系遵循以下3点:
1.每个有name属性的表单域对应一个请求参数.
2.如果多个表单域有相同的name属性,则多个表单域只生成一个请求参数,只是该参数有多个值.
3.表单域的name属性指定请求参数名,value指定请求参数值.













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值