一、request.getAttribute()与request.getParameter()
getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型
getParameter表示接收参数,参数为页面提交的参数,包括:表单提交的参数、URL重写(就是xxx?id=1中的id)传的参数等,因此这个并没有设置参数的方法(没有setParameter),而且接收参数返回的不是Object,而是String类型
HttpServletRequest类既有getAttribute()方法,也由getParameter()方法,这两个方法有以下区别:
(1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法
(2)当两个Web组件之间为链接关系时,被链接的组件通过getParameter()方法来获得请求参数,例如假定welcome.jsp和authenticate.jsp之间为链接关系,welcome.jsp中有以下代码:
<a
或者:
<form
</form>
在authenticate.jsp中通过request.getParameter("username")方法来获得请求参数username:
<%
(3)当两个Web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。假定
<%
String
request.setAttribute("username",username);
%>
<jsp:forward
在hello.jsp中通过getAttribute()方法获得用户名字:
<%
Hello:
从更深的层次考虑,request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。
request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。这两个方法能够设置Object类型的共享数据。
request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据,,
getAttribute是返回对象,getParameter返回字符串
request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。
==============================
二、request.setAttribute()与request.getSession().setAttribute()
request.setAttribute()只能在一个request内有效,如果重定向客户端,将取不到值。
request.getSession().setAttribute()可以通过sessionID得到自己的session,将参数存储在session中,即使重定向客户端也没事,这个值可以在多个页面上使用。
比如访问一个网站,登录后用户信息被保存到session中,在session过期之前或者用户关闭页面之前,用户信息可以通过request.getSession().getAttribute()方式 获得。
request在当次的请求的URL之间有效,比如,你在请求某个servlet,那么你提交的信息,可以使用request.getAttribute()方式获得,而当你再次跳转之后,这些信息将不存在。
JSP里面的内置对象:
request,response,page,session,application,out,exception,pageContent,config
其中page对象在当前页面是有效的,application在服务器开启之后,一直保持有效状态,直到服务器的关闭。
有必要记录下getParameter()&getAttribute
getParameter()方法传递数据,只会从Web客户端传递到WEB服务器,代表的是HTTP请求数据,getParameter()方法返回的是String类型的数据。
setAttribute()和getAttribute()方法传递的数据只会在WEB服务器内部,在具有转发关系的WEB组件中传递,这两个方法能设置Object类型的数据共享。
===================================三、
<form action="form_action.asp"
method="get">
<p>First name: <input type="text" name="fname" /></p>
<p>Last name: <input type="text" name="lname" /></p>
<input type="submit" value="Submit" />
</form>
下面的表单拥有两个输入字段以及一个提交按钮,当提交表单时,表单数据会提交到名为 "form_action.asp" 的页面:
<table>//表
<tr> //表的一行
<td> </td> //每行的一列
</tr>
</table>
================================
四、页面跳转
JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是二者是有很大的区别的,分条来说,有以下几点:
①response.sendRedirect(url)-----重定向到指定URL
request.getRequestDispatcher(url).forward(request,response) -----请求转发到指定URL
②response.sendRedirect(url)-----是客户端跳转
request.getRequestDispatcher(url).forward(request,response) -----是服务器端跳转
③response.sendRedirect(url)跳转到指定的URL地址后,上个页面(跳转之前的原来页面)中的请求全部结束,原request对象将会消亡,数据将会消失。紧接着,当前新页面会新建request对象,即产生新的request对象。
五、