Request对象
每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。
request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。
1.获取请求参数
当通过超链接的形式发送请求时可以为该请求传递参数,可以通过在超链接的后面加上问号“ ?”来实现
例如,发送一个请求到delete.jsp页面并传递一个名为“id”的参数,可以通过以下超链接实现:
<a href=" delete. jsp?id=1">删除</a>
注意:在通过问号 “?” 指定请求参数时,参数值不需要使用引号括起。如果同时指定多个参数,各参数间使用与符号“&”分隔。
在delete.jsp页面中可以通过request对象的getParameter()方法获取传递的参数值,代码如下:
<%
String id = request. getParameter( id") ;
%>
执行了getParameter()方法后变量id的值为1。
2.获取客户端数据
通过request对象可以获取客户端的HTTP报头信息、客户信息提交方式,客户端主机IP地址及端口号等。在客户端获取用户请求相关信息的request对象的常用方法如下表所示:
3.应用request对象域
request对象可以视为一个域,可以应用setAttribute()方法在域范围内存放数据,其语法格式如下:
request. setAttribute (String name, 0bject object) ;
- name:变量名,为String类型,转发后的页面获取数据时通过这个变量名来获取数据。
- object:指定需要在request范围内传递的数据,为Object类型。
在将数据保存在request范围内的变量中后,可以通过request对象的getAttribute()方法获取该变量值,其语法格式如下:
request. getAttribute (String name) ;
name为变量名,在request范围内有效。
补充:解决中文乱码问题:
(1)获取访问请求参数时乱码
当访问请求参数为中文时,通过request对象获取的中文参数值为乱码,这是因为该请求参数采用的ISO-8859-1 编码不支持中文。
所以只有将获取的数据通过String的构造方法使用UTF-8或GBK编码重新构造一个String对象方可正确显示中文。
例如,在获取包括中文信息的参数user时可以使用下面的代码:
String user = new String (request.getParameter ("user"). getBytes(" iso-8859-1"), "UTF-8") ;
(2)获取表单提交的信息乱码当获取表单提交的信息时
通过request对象获取的中文参数值为乱码,可以通过在page指令的下方加上调用request对象的setCharacterEncoding()方法将编码设置为UTF-8或GBK来解决。、
例如,在获取包括中文信息的用户名文本框(name属性为username)的值时,可以在获取全部表单信息前加上下面的代码:
<% request. setCharacterEncoding("UTF-8" ) ;%>
再通过下面的代码获取表单的值时,就不会产生中文乱码:
String user = request.getParameter("username");