JSP内置对象学习(2)-request篇
request请求对象
request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息,请求方式和请求参数等,通过该对象提供的相应方法可以获取客户端请求中的信息。
1.获取请求参数
客户端向服务器端发送请求时,通常情况会包含一些请求参数。例如,请求删除数据库中的一条信息时,需要在请求中传递一个主键值,在传递过程中其参数加载在request对象中。
当通过超链接的形式发送请求时可以为该请求传递参数,可以通过在超链接的后面加上问号"?"来实现,注意这个问号为英文半角。例如,发送一个请求到delete.jsp页面并传递一个名为id的参数,可以通过以下超链接实现
<a href="delete.jsp?id=1">删除</a>
注意:在通过问号"?"指定请求参数时,参数值不需要使用单引号或者双引号括起,包括字符型的参数,如果同时指宗多个参数,各参数间用"&"分隔
在delete.jsp页面可以通过request对象的getParameter()方法获取传递的参数值,其代码如下
<%
String id=request.getParameter("id");
%>
执行了getParameter()方法后id值为1.
说明:在超链接中传递参数通过GET请求方式传递,如果通过POST请求方式传递参数,也使用getParameter()方法获取参数值
实例:实现用户注册功能,将用户的注册信息输出到JSP页面中
<1>创建程序首页index.jsp,在其中编写用户登录的表单,代码如下图
(2)创建名为login.jsp的用户登录处理页面,其代码如下图:
login.jsp实现用户登录的功能,其实现方式是判断表单提交的用户值和密码是否为admin,如果是刚用户登录成功,否则登录失败.
运行效果如下图:
2.解决中文乱码问题
在通过request对象获取请求参数时,如果参数值为中文且未处理,则获取的参数值将是乱码,在JSP中解决获取请求参数的中文乱码五以分为以下两种情况。
<1>获取访问请求时乱码
String user=new String(request.getParameter("user").getBytes("iso-6659-1"),"UTF-6");
<2>获取表单时提交信息乱码
当获取表单提交的信息时,通过request对象获取的中文参数值为乱码,可以通过在page指令下方加上调用request对象的setCharacterEncoding()方法将编码设置为UTF-6或GBK解决。例如,在获取下方加上调用request对象的setCharacterEncoding()方法将编码为UTF-6或GBK解决。例如,在获取包括中文信息的"用户名"文本框(name属性为username)的值时,可以在获取全部表单信息前加上以下代码:
<%
request.setCharacterEncoding("UTF-6");
%>
这样通过下面的代码获取表单的值时,就不会产生中文乱码
String user=request.getParamter("username");
注意:
u调用request对象的setCharacterEncoding()方法的语句时,一定要在页面中没有调用任何request对象的方法,否则该语句将不起作用.
获取客户端数据
通过request对象可以获取客户端的相关信息,如HTTP报头信息、客户信息提交方式、客户端主机IP地址及端口号等,在客户端获取用户请求相关信息的request对象常用方法如下图:
说明:
在Windows7操作系统下,由于IP地址采用IPv6,所以当客户端与服务端与服务器为同一计算机获取的IP地址不是IPv4的形式
应用request对象域
request对象可以视为一个域,可以应用setAttibute()方法在域范围内存放数据,其语法如下
request.setAttribute(String name,Object object);
(1)name:变量名,为String类型,转发后的页面获取数据时通过这个变量名来获取数据
(2)object:指需要在request范围内转递的数据,为Object
在将数据保存在request范围内的变量中,可以通过getAttribute()方法获取变量值。其语法格式如下:
request.getAttribute(String name);
name为变量名,在request范围内有效
实例:应用request对象域传递数据。
<1>创建index.jsp文件,在其中首先应用java的try...catch语句来捕获页面中的异常信息,如果没有异常,刚运行结果保存仜requesst范围内的变量中,并将错误提示信息保存在request范围内的变量中,然后应用<jsp:forward>动作标识将页面转发到deal.jsp页面。index.jsp文件代码如下:
<2>创建deal.jsp文件,在其中通过request对象的getAttribute()方法获取保存在request范围内的result变量并输出.
运行效果如下:
想要免费学习python全栈吗?图灵学院推出免费学习python全栈课程,想学习了解的请加群号:158184562
在