jsp的scope属性值request 指:你再任何执行相同请求的jsp文件中使用Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。 你可以使用request对象访问Bean,如request.getAttribute(beanInstanceName)。

解决方案 »

  1.   

    B/S中服务器与客户端的一次通信可以看成这样:
    浏览器给服务器发送一个请求开始到服务器返回给一个响应结束。这个期间就是一个request
    而在这个期间,浏览器也许是请求的a.jsp,但a.jsp没有把事件处理完,于是它把这个未处理完的请求发给b.jsp让b.jsp来处理。a.jsp所处理(设置)的数据,可以保存到这个请求中(事实上并非如此),让后续的处理程序可以共享a.jsp所处理的数据。
      

  2.   

    也不大清楚上面的意思 迷惑ing
    不过 你上面的用法肯定不对 ,在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对象的
      

  3.   

    kenny1979(肯):
    不过 你上面的用法肯定不对 ,在request2.jsp中又来一个<jsp:useBean id="test" class="test.TestBean" scope="request"/> 这样建立的是另外一个对象了。
    --------------------------------------------------------------------
    你还没有理解JAVABEAN的使用,如果你使用过他的“session”,"application"的范围,你就知道,它只被初始化一次的,以后如果内存里有,就不再初始化的。
      

  4.   

    “你可以试试 TestBean test2 = (TestBean)request.getAttribute("test"); 然后再out.println(test2.getCount());”
    -----------------------------------------------------------------------------
    这样的我早已经测试过了,实际上等同于“<jsp:useBean id="test" class="test.TestBean" scope="request"/>”
      

  5.   

    whodsow(天上星亮晶晶永灿烂长安宁) ( ) :
    我理解你的意思了,你是说当请求a.jsp时,a.jsp把BEAN存入到request里面,然后又重定向到其他页面处理,这时候其他页面,可以从request里面读出这个bean!
    等我做个测试。
      

  6.   

    <jsp:useBean id="test" class="test.TestBean" scope="request"/>
    <%
       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);
    %>
      

  7.   

    to  tianboguang(其实,我是一个程序员) :
    我那个方法找出前一个页面的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++;
        }
    }
      

  8.   

    to wywy3000(问题太多了):
    要传递值有很多方法的 不是非得用session,该楼主主要是为了领悟一下scope=request。
    鸣谢: tianboguang(其实,我是一个程序员)  按你说的方法做了一下,成功了。! 建议楼主把分全部散给  tianboguang(其实,我是一个程序员) ,呵呵 分是小事 有收获才最重要了!
      

  9.   

    wywy3000(问题太多了):
    整个程序完全是瞎写根本不明白JSP+JAVABEAN的概念。
    -------------------------------------------------------
    建议再看看题意,这里和FORM提交参数毫无关联。
      

  10.   

    kenny1979(肯):
    tianboguang(其实,我是一个程序员)就是楼主,也就是我呀,呵呵,分应该给whodsow(天上星亮晶晶永灿烂长安宁),是他给了最正确的提示。也要给你分,一个问题如果没有人的试探参与,是难以得出正确答案的。
    其实对你的代码,你可以试一下,把“request.setAttribute("test",test);”去掉看看,因为<jsp:useBean id="test" class="test.TestBean" scope="request"/>的意思,就是在request的属性里存了一个test的JAVABEAN。
      

  11.   

    to tianboguang(其实,我是一个程序员) : 多谢楼主了!那两种方法我都试过了 都ok的! 两种方法的意思其实是一样的。其实这里 最关键的是,怎么样调页面或者说怎么样在页面之间跳转才能在一个request里保存bean! 我只了解了一种方法 就是我上面说的那个 用<jsp:forward page="request2.jsp"/> , 希望 有人能给出更多的方法。!
      

  12.   

    强,果然高手。友情Up
    将“流氓无赖”测试到底
    ——始于2003年7月
    树欲止而风不停,行云流水匆匆去;
    树梢蚂蚱凭空望,江边浪花碎巨石; 支持“流金岁月”!!!
    ——2003年12月24日am^@^
      

  13.   

    kenny1979(肯):
    请看whodsow(天上星亮晶晶永灿烂长安宁)的提示:“浏览器给服务器发送一个请求开始到服务器返回给一个响应结束。这个期间就是一个request”
    -------------------------------------------------------------------------
    当一个页面提交以后,响应它的过程可以经过一个或者一系列页面,也就是说,可以由响应它的页面再forward,或者include其他页面处理,最后所有系列页面都处理完返回客户端,这一整个过程都是在一个request里的,你可以试一下,可以在任何一个forward或者include页面里请求表单提交的参数的。