test.jsp 如下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import = "com.mod.FormBean" %><%
FormBean fb = new FormBean(); 
request.setAttribute("aa",fb);
%>
<html>
<head>
<script language="JavaScript" ></script>
</head><body>
  <form name = "form1" action="test2.jsp" method="post">
     <input type="submit" name="b1" value="submit">
  </form>
</body>
</html>  
--------
test2.jsp 如下<%
Object obj = request.getAttribute("aa");
out.println(obj.toString());
%>上例子中我想在test.jsp中把FormBean 传递到test2.jsp 中, 可是我用request.getAttribute("aa") 得到的是Null请问我如何做才能实现在jsp间传递java 对象? 请给代码参考,谢谢.

解决方案 »

  1.   

    因为两个页面不是同一个request可用用session解决 或者这个也可以request.getRequestDispatcher("目的页面.jsp").forward(request,   response);
      

  2.   

    我之前用session出现了问题,因为用户可能同时打开了多个页面,session 中的对象被覆盖了,另一个页面再访问session的这个对象时,已经不是原来的对象.另外,这个方法我再试试,谢谢.
    request.getRequestDispatcher("目的页面.jsp").forward(request,   response);
      

  3.   

    楼主要好好看看几个作用域对象和作用范围,这几个作用于对象分别为page、pageContext、request、response、application.它们作用于不同作用域,它们实现servlet与jsp之间的各种通讯,而且范围从小到大。如何通讯就看你自己的理解的,最后一句忠告,作用域的使用范围一般来说越小越好,也就是说能用page的就不用request,能用request就不用session。还有,jsp与servlet数据间传体最好都在request及其以下级别,session级别的作用域传递尽量不要用。
      

  4.   

    请问一下,request.setAttribute() 有什么用? 什么情况下会使用它?
      

  5.   

    to spiniper: 你说的网上有很多, 能否给个例子如何使用request在jsp之间传递对象? 
      

  6.   

    试了一下: request.getRequestDispatcher("目的页面.jsp").forward(request,   response);
    这种方法可以在同一个页面实现, 
    但我现在要求是,在test.jsp 点击后, 在新窗口中打开 test2.jsp, 并且把对象传递过去,请问如何实现??
      

  7.   

    如果不用session的话  那你试下url传参吧
      

  8.   


    如果要利用request传对象只能用forword方法来传递对象,但是可以通过其它方式传递对象所承载的数据。例如url重写或者标单的提交之类的。
      

  9.   

    request

    <jsp:include 也可以, 当让
    <jsp:forward 也可以啦!总之,如果不是这2种,只能用session/application
      

  10.   

    问题很简单 你在第一个叶面只使用了 request.setAttribute()  但是并没有指名你要把元素传递到哪个页面上
    所以需要用 用 转发操作: request.getRequestDispatcher("目的页面.jsp").forward(request,response); 
    指名元素传递的方向对于你提出的: 但我现在要求是,在test.jsp 点击后, 在新窗口中打开 test2.jsp, 并且把对象传递过去,请问如何实现??
    不能用 request.setAttribute()传递了 需要改变属性范围 使用 Application范围 也就是Application.setAttribute()方法传递对于有人提出的: 为什么不直接放在form里面呢from指明的是 参数传递的页面 和元素传递的页面是两回事情 上面的例子
    <form name = "form1" action="test2.jsp" method="post"> 
          <input type="submit" name="b1" value="submit"> 
    指明参数传递路径并没有起到实际作用 因为并没有传递参数 请看下面例子实现简单的参数传递<form name = "form1" action="test2.jsp" method="post"> 
         <input type="test" name="uname">                   //传递的参数名字叫 uname  以后可以通过 request.getParameter("uname")接收它
          <input type="submit" name="b1" value="submit"> 以上论述是个人意见 可能有不对的地方 欢迎高人指导
      

  11.   

    你首先得了解request与session的生命周期,在了解了这个后你就知道为什么两个页面之间为什么request不能传值了。你可在后台servlet里做一个传接桥。在jsp页面中直接互相传值在开发中是不提倡的。
      

  12.   

    对于request,从test.jsp把参数传回服务器,这个request的生命周期就结束了。
    然后,再到一个新的页面test2.jsp,这时候的request是一个新的对象。如果你一定要把test.jsp传给服务器的参数传递给test2.jsp,又不想使用session,那么有个办法。就是在后台处理这个test.jsp传回来的参数的时候,手动把它设置到新的request对象里面。在类似于struts这样的mvc框架里面,我们经常这样作
      

  13.   

    =================
    打算做个servlet了. 
      

  14.   

    楼主需要理解request对象的生命周期