request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息,系统信息,请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。
访问请求参数
我们知道request对象用于处理HTTP请求中的各项参数。在这些参数中,最常用的就是获取访问请求参数。当通过超链接的请示发送请求时,可以为该请求传递参数,这可以通过在超链接的后面加上“?”来实现。注意这个问号为英文半角的符号 。例如,发送一个请求到delete.jsp页面,冰川第一个名称为id的参数,可以通过以下超链接实现。
<a href="delete.jsp?id=1">删除</a>
在上面的例子中设置了一个请求参数,如果要同时指定多个参数,各参数间使用与符号“&”分割即可。
如,在delete.jsp页面中,可以通过request对象的getParameter()方法获取传递的参数值。具体代码如下:
<%
request.getParameter("id");
%>
在使用request的getParameter()方法获取传递的参数值时,如果制定的参数不存在,将返回null;如果指定了参数名,但未制定参数值,将返回空的字符串("")。
例如,我们创建一个index.jsp文件,在该文件中添加一个用于超链接到deal.jsp页面的超链接,并传递两个参数。index.jsp文件的具体代码如下:
我们再创建一个deal.jsp页面,在该文件中通过request对象的getParameter()方法获取请求参数id,user和pwd的值并输出。deal.jsp的具体代码如下。
我们运行本例,首先进入到index.jsp页面中。
点击处理页超链接进入到deal.jsp页面获取请求参数并输出。
由于我们在index.jsp页面中并没有指定user参数的值,所以在deal.jsp页面中user参数的值是空字符串,而我们在index.jsp页面中pwd的参数不存在,所以返回值为null。
在作用域中管理属性
在说到作用域中管理属性,首先我们要了解什么是请求转发,重定向和作用域。在实际开发过程中,有的时候服务器端的一个页面并不能满足所有客户端的需求,有时一个页面可以处理一些请求,而剩下的请求就需要另一个页面协助这时我们就需要用到请求转发,也就是说,请求转发是一种在服务器内部的资源跳转方式。请求转发有三个特点,1,浏览器的地址栏路径不发生变化。2,只能转发到当前服务器内部资源中。3,转发是一次请求。而作用域的域对象是一个有作用范围的对象,可以在范围内共享数据。我们来看一个图。
在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。这时,就需要使用request对象的setAttribute()方法,将数据保存到request范围的变量中。request对象的setAttribute()方法的语法格式如下。
request.setAttribute(String name,Object object);
name:表示变量名,为String类型,在转发后的页面取数据时,就是通过这个变量名来获取数据的。
object:用于指定需要在request范围内传递的数据,为Object类型。
在将数据保存到request范围内的变量中后,可以通过request对象的getAttribute()方法获取该变量的值,具体的语法格式如下.
request.getAttribute(String name);
name:表示变量名,该变量名在request范围内有效。
我们用上面说到的两个方法来写一个小例子。使用request对象的setAttribute()方法保存request范围内的变量,并应用request对象的getAttribute()方法读取request范围内的变量。
首先我们创建一个index.jsp文件,在该文件中,首先应用Java中的try…catch语句捕获页面中的异常信息,如果没有异常,则将运行结果保存到request范围内的变量中,如果出现异常,则将错误提示信息保存到request范围内的变量中,然后应用jsp:forward动作指令将页面转发到deal.jsp页面。index.jsp文件的具体代码如下。
接下来创建deal.jsp文件,在该文件中通过request对象的getAttribute()方法获取保存在request范围内的变量result并输出,这里需要注意的是,由于getAttribute()方法的返回值为Object类型,所以需要调用其toString()方法,将其转换为字符串类型。deal.jsp文件的具体代码如下。
页面的运行结果为。
获取客户端信息
通过request对象可以获得客户端的相关信息,如HTTP头信息,信息提交方式,客户端主机IP地址,端口号等。在客户端获取用户请求相关信息的request对象的方法如下表。
获取cookie
cookie的中文意思是“曲奇饼”,然而在互联网中的意思与这就完全不同了,它和视频完全没有关系,在互联网中,cookie是小段的文本信息,在网络服务器上生成,并发送给浏览器,通过使用cookie可以表示用户身份,记录用户名和密码,跟踪重复用户等。浏览器将cookie以键值对的形式保存到客户机的某个指定目录中。
通过Cookie的getCookies()方法即可获取到所有cookie对象的集合。通过cookie对象的getName()方法可以获取到指定名称的cookie。通过getVaule()方法即可获取到cookie对象的值。另外,将一个cookie对象发送到客户端,使用response对象的addCookie()方法。