jsp的scope属性值request 指:你再任何执行相同请求的jsp文件中使用Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。 你可以使用request对象访问Bean,如request.getAttribute(beanInstanceName)。
解决方案 »
- 有谁知道struts2如何实现https的请求?????????
- action.isCancelled()用发?
- 使用tomcat数据连接池时 context的lookup方法中的参数是什么意思?
- JSP的开发工具
- 请教:如何将一个Radio的值传给另一个JSP页面!
- 求《The JasperReports Ultimate Guide》的电子文档
- 急需帮忙,JSP连接ORECLE数据库的问题!送100分,嫌少可以再加
- 300)在Application中如何设置一个时间间隔反复执行application中的某个方法以及如何让系统一启动就在后台运行application!
- 问一个很菜的问题
- Servlet如何给jsp传递int型值?
- 在web环境下DataGrid的数据导出Excel(word)的格式问题?
- !!!(在线等)jb调试时报错!
浏览器给服务器发送一个请求开始到服务器返回给一个响应结束。这个期间就是一个request
而在这个期间,浏览器也许是请求的a.jsp,但a.jsp没有把事件处理完,于是它把这个未处理完的请求发给b.jsp让b.jsp来处理。a.jsp所处理(设置)的数据,可以保存到这个请求中(事实上并非如此),让后续的处理程序可以共享a.jsp所处理的数据。
不过 你上面的用法肯定不对 ,在request2.jsp中又来一个<jsp:useBean id="test" class="test.TestBean" scope="request"/> 这样建立的是另外一个对象了。它和request1.jsp中的那个test ,是两个对象 在内存中占的是两个存储区,也就是两者不搭界!
你可以试试 TestBean test2 = (TestBean)request.getAttribute("test"); 然后再out.println(test2.getCount());
不过 我也试过了 不成功 还是没有理解上面的那段话的含义。不过看调试信息估计在这种情况下,后一个页面是访问不了 前一个页面中的bean对象的
不过 你上面的用法肯定不对 ,在request2.jsp中又来一个<jsp:useBean id="test" class="test.TestBean" scope="request"/> 这样建立的是另外一个对象了。
--------------------------------------------------------------------
你还没有理解JAVABEAN的使用,如果你使用过他的“session”,"application"的范围,你就知道,它只被初始化一次的,以后如果内存里有,就不再初始化的。
-----------------------------------------------------------------------------
这样的我早已经测试过了,实际上等同于“<jsp:useBean id="test" class="test.TestBean" scope="request"/>”
我理解你的意思了,你是说当请求a.jsp时,a.jsp把BEAN存入到request里面,然后又重定向到其他页面处理,这时候其他页面,可以从request里面读出这个bean!
等我做个测试。
<%
out.println(test.getCount());
%>
<form action="requestBean2.jsp" method="post">
<input type="submit">
</form>
-----------------------------------------------request2.jsp
----------------------------------------------
<jsp:useBean id="test" class="test.TestBean" scope="request"/>
<%
out.println(test.getCount());
%>
-----------------------------------------------TestBean.java
-----------------------------------------------
package test;
public class TestBean
{
private int count;
public int getCount() {
return count++;
}
}整个程序完全是瞎写根本不明白JSP+JAVABEAN的概念。
首先,要传递值就是<jsp:useBean id="test" class="test.TestBean" scope="session"/>
package test;
public class TestBean
{
private int count = 0;
public int getCount() {
return count++;
}
}<jsp:useBean id="test" class="test.TestBean" scope="session"/>
<%
out.println(test.getCount());
%>
<form action="requestBean2.jsp" method="post">
<input type=hidden name=test value= <%=test,getCount()%> >
<input type="submit">
</form><jsp:useBean id="test" class="test.TestBean" scope="request"/>
<% int test;
test = request.getParameter("test");
out.println(test);
%>
我那个方法找出前一个页面的bean对象是对的 只不过 我没有理解 scope= request的含义 后来 我试一下 应该在request1.jsp用<jsp:forword ....>来跳转到request2.jsp。调试成功的 看到了预想的效果了
我的jsp代码如下:
request1.jsp 文件
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*, test.TestBean" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>request1</title>
</head>
<body>
<jsp:useBean id="test" class="test.TestBean" scope="request"/>
<%
out.println(test.getCount());
request.setAttribute("test",test);
%>
<jsp:forward page="request2.jsp"/>
</form>
</body>
</html>request2.jsp文件
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*, test.TestBean" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>request2</title>
</head>
<body>
<%
out.println(((TestBean)request.getAttribute("test")).getCount());
%></body>
</html>bean文件
package test;
public class TestBean
{
private int count;
public int getCount() {
return count++;
}
}
要传递值有很多方法的 不是非得用session,该楼主主要是为了领悟一下scope=request。
鸣谢: tianboguang(其实,我是一个程序员) 按你说的方法做了一下,成功了。! 建议楼主把分全部散给 tianboguang(其实,我是一个程序员) ,呵呵 分是小事 有收获才最重要了!
整个程序完全是瞎写根本不明白JSP+JAVABEAN的概念。
-------------------------------------------------------
建议再看看题意,这里和FORM提交参数毫无关联。
tianboguang(其实,我是一个程序员)就是楼主,也就是我呀,呵呵,分应该给whodsow(天上星亮晶晶永灿烂长安宁),是他给了最正确的提示。也要给你分,一个问题如果没有人的试探参与,是难以得出正确答案的。
其实对你的代码,你可以试一下,把“request.setAttribute("test",test);”去掉看看,因为<jsp:useBean id="test" class="test.TestBean" scope="request"/>的意思,就是在request的属性里存了一个test的JAVABEAN。
将“流氓无赖”测试到底
——始于2003年7月
树欲止而风不停,行云流水匆匆去;
树梢蚂蚱凭空望,江边浪花碎巨石; 支持“流金岁月”!!!
——2003年12月24日am^@^
请看whodsow(天上星亮晶晶永灿烂长安宁)的提示:“浏览器给服务器发送一个请求开始到服务器返回给一个响应结束。这个期间就是一个request”
-------------------------------------------------------------------------
当一个页面提交以后,响应它的过程可以经过一个或者一系列页面,也就是说,可以由响应它的页面再forward,或者include其他页面处理,最后所有系列页面都处理完返回客户端,这一整个过程都是在一个request里的,你可以试一下,可以在任何一个forward或者include页面里请求表单提交的参数的。