求解request.getAttribute()、急疯了!
对于request.getAttribute、request.setAttribute,的用法很困惑!
下面是一个简单的尝试,但是值的传递不能成功。
///* test.jsp *///
<%@ page language= "java " import= "java.util.* " pageEncoding= "gbk " %>
<html>
<head>
<title> Request.html </title>
</head>
<body>
<form action= "Request.jsp " method= "post ">
Name: <input type= "text " name= "Name " size= "20 " maxlength= "20 "> <br>
<%
String attr = new String( "about setAttribute. ");
request.setAttribute( "data ", attr);
%>
<input type= "submit " value= "传送 ">
</form>
</body>
</html>
///* Request.jsp *///
<%@ page language= "java " contentType= "text/html;charset=gbk " %>
<html>
<head>
<title> Request.jsp </title>
</head>
<body>
<h2> test </h2>
getParameter( "Name "): <%= request.getParameter( "Name ") %> <br>
<br>
<%
String data = (String)request.getAttribute( "data ");
%>
the attribute: <%=data %>
<br>
</body>
</html>
///*输出结果*///
test
getParameter( "Name "):something
the attribute:null
为什么没法传输attr的值。请求高人解救
帮忙解答一下request.get/getAttribute的使用。万分感谢!
------解决方案--------------------你request.setAttribute( "data ", attr);这样,只有当前请求才有效.
比如用forward(..)这样,在下一个页面,才可以访问...
而你这里用在对第二个页面的请求是一个新的请求.因为它是表单新提交的请求.
所以第二个页面访问不到属性 data,
你这样能用session.setAttribute()可以访问
------解决方案--------------------唉...很多人刚开始都会这样失败的!!!!
首先你在URL里边输入test.jsp 的时候,服务器里边就会产生一个request,开始编译你的JSP文件,在这个过程,你在前面的某一处用了setAttribute();在后边你可以用request.getAttribute()取到.就像下边这样:
<%@ page language= "java " import= "java.util.* " pageEncoding= "gbk " %>
<html>
<head>
<title> Request.html </title>
</head>
<body>
<form action= "Request.jsp " method= "post ">
Name: <input type= "text " name= "Name " size= "20 " maxlength= "20 "> <br/>
<%
String attr = new String( "about setAttribute. ");
request.setAttribute( "data ", attr);========================> //前
%>
<input type= "submit " value= "传送 ">
</form>
<%
out.println(request.getAttribute( "data "));========================> 后
%>
</body>
</html>
最后服务完成了编译的工作,完成生成了HTML代码,并把它们返回给浏览器去执行,服务器上的那个request已经不存在,所有与它一起的数据都没有了.
返回给客户端后,我们就看到了一个表单,然后点击 "传送 ",再次访问服务上的Request.jsp,这时候又产生了一个新的request对像,但以前的那个数据已经不存在了,因为是不同的request了.所以你在Request.jsp里边再取它,那是当然取不到的了.setAttribute()是针对同