此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【whlusha720】截止到2008-07-19 10:51:02的历史汇总数据(不包括此帖):
发帖的总数量:6                        发帖的总分数:290                      每贴平均分数:48                       
回帖的总数量:21                       得分贴总数量:2                        回帖的得分率:9%                       
结贴的总数量:6                        结贴的总分数:290                      
无满意结贴数:0                        无满意结贴分:0                        
未结的帖子数:0                        未结的总分数:0                        
结贴的百分比:100.00%               结分的百分比:100.00%                  
无满意结贴率:0.00  %               无满意结分率:0.00  %                  
敬礼!

解决方案 »

  1.   

    request是提交后,b页面才可以拿到~所以,你用session应该可以保存和得到的`或者你用jsp的forward转到b.jsp页面,可以试下~总觉得,你这样写怪怪的~呵呵~
      

  2.   

    可是用session保存太费内存资源了  
    我只是实现页面之间值的传递
    a.jsp  后面的不分  已经有转向了   if(b){
    session.setAttribute("userName", uname);
    response.sendRedirect("ok.jsp");
         }else{
    response.sendRedirect("error.jsp");
         }
      

  3.   

    我觉得form提交以后request的内容才能生效,然后转入b.jsp才能得到request中的数据
    请问楼主是通过何种方式提交a.jsp的form的呢?
      

  4.   

    哎,这个问题啊,已经有无数人问过了,有关 对象的四个作用域的问题:page,request,session,server;request.setAttribute()保存的对象只能在同一个request内有效。你请求b.jsp,已经是另一个request了,所以取不到解决方法:
    1.用session保存对象:session().setAttribute("dbData[" + m + "]", str[m*j+m]); 
           取对象用:session.getAttribute(...);2.让 a.jsp和b.jsp处于同一个request:从a.jsp到b.jsp的时候用转发:request.getRequestDispatcher("b.jsp").forward(request,response);不过这种方式未必满足你的要求。。
      

  5.   

    request.setAttribute("dbData[" + m + "]", str[m*j+m]); 
    前加个打印 看看是不是有值
    out.print(m*j+m+":"+str[m*j+m]);
      

  6.   

    谢谢8楼的朋友  
    可是 session().setAttribute("dbData[" + m + "]", str[m*j+m]);  这样也保存不了session().setAttribute("aa", aa); 第一个参数是字符串常量 第二个参数是字符串 
    所以在b.jsp  取到的 <%=session.getAttribute("dbData[2]")%> </p>     值为null 
      

  7.   

    写错了,,session()改为 session
      

  8.   

    用session.getSession()得值.
    request.getParameter()也可以取到.
    但你用到session的话就得用上面的.
      

  9.   

    没有报错   因为dbData[] 已经定义过了  所以初始值都是null
    最后得到的值也是null
    推测是没有把值保存到session里
      

  10.   

    session().setAttribute("dbData[" + m + "]", str[m*j+m]);  这样也保存不了 好像"dbData[" + m + "]"  的写法不对 有知道的朋友吗  ??
      

  11.   

    把你的session().setAttribute("dbData[" + m + "]", str[m*j+m]);  改成:
    session.setAttribute("dbData[" + m + "]", str[m*j+m]);  cool已经跟你说了呀
      

  12.   

    你是a.JSP跳转到b.JSP?你用JSP页面文件做类文件做的事?我建议你用类文件写业务和数据库操作,并将查询得到的结果保存到bean中,再将bean存放到request中,
    然后跳转到显示页面,用EL表达式提取bean中的数据,这样做比较符合JAVA的规范。你可以试着这样做一下,我继续关注你有什么问题。PS:你把数据都丢到session中在页面读取,那么那些数据你不删除吗?
    多做几次这样的操作,那服务器内存就塞满了。
      

  13.   

    request 的只保存一次 如果楼主因为内存消耗不想用session,
    那么就可在另一个页面中也用request保存住。。这样来回循环保存
      

  14.   

    谢谢这位朋友  我一直用的session.setAttribute("dbData[" + m + "]", str[m*j+m]); 
    而不是session().setAttribute("dbData[" + m + "]", str[m*j+m]);因为session().会报错的 
      

  15.   


    谢谢哦  我也想规范一点   但这个项目很小  而且对struts不是很熟  JSP表单的action="???"也不是很清楚到底和 web.xml的配置有什么关联   所有只能2个页面间跳转  也属于无奈 希望能有个比较规范的项目例子可以好好学习一下  呵呵
      

  16.   

    不一定要struts啊,没有struts之前都是JSP跳转到servlet,servlet处理完数据后跳转到JSP。
    你先写个bean,把Servlet处理好的数据存放到bean里,如果是多个不同类型的数据就放到一个bean里(如:人的姓名、年龄等),如果是有类似的数据就用List存放多个bean(如:多个人的姓名、年龄等);然后将List或bean存放到request中,在页面用EL表达式读取这些数据。
    如:
    bean:
    public class People{
      private String name;
      private int age;  PS:getter和setter我就不写了。
    }servlet:
    People p = new People();
    将数据存入P中。
    request.setAttribute("pop",p);
    然后跳转到页面。JSP:
    名称:${pop.name}这样就可以了。
    如果是List就用JSTL标签迭代一下。