我的session怎么传不到下一个页面
我再上一个页面创建了session.setAttribution("AddToCart",book);转到下一个servlet时得到的是null,求助高手

解决方案 »

  1.   

    你有没断点调试?发这点看不出什么,要么是你页面的异常,要么是你本身传入的时候book是NULL。
      

  2.   

    试一试这样取值呗....
    如果你那个book的对象的话就
      
     BooK     b =(BooK)session.getAttribute("AddToCart");
    如果是String的话
      String   str =session.getAttribute("AddToCart");
      

  3.   

    你名字别写错了哦,如果放到session中去了,在servlet页面应该是取得到值的,应该是取这个AddToCart的值哦
      

  4.   

    还要看看你放到session中的book是否为空
      

  5.   

    这个是我的第一个jsp页面:
    <%@ page language="java" pageEncoding="GBK"%>
    <%@page import="y2javaee.sg.ch03.TitleBean"%>
    <%@page import="y2javaee.sg.ch03.BookBean"%>
    <%@page import="java.util.*"%>
    <HTML>
    <HEAD>
    <TITLE>ebooks</TITLE>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <LINK href="/book/images/main.css" type=text/css rel=stylesheet>
    </HEAD>
    <BODY>
    <CENTER>.........
    <!--   显示内容开始  -->      
           <TR>
         
          <TD height="360">
        <%
        List list=(List)session.getAttribute("list");
        int size=list.size();
         BookBean book=null;
        int i=0;
        String iSBN=(String)request.getParameter("id");
       while(i<size)
       {
     book=(BookBean)list.get(i);
       if(iSBN == book.getISBN())
       {
       session.setAttribute("bookToAdd",book);
       break;
       }
       i++;
       }
         %>
            .........
              <tr>
                <td width="30%" height="84" align="center"><form name="form1" method="post" action="/book/AddBookToCart">
                  <label>
                    <input type="submit" name="button" id="button" value="放入购物车">
                  </label>
                </form>  </td>
                <td width="29%" align="left"><form name="form2" method="post" action="ViewCart.jsp">
                  <label>
                    <input type="submit" name="button2" id="button2" value="查看购物车">
                  </label>
                </form></td>
              </tr>
              
            </table></TD>
          
          
          
           </TR>
       
    <!--   显示内容结束  -->
    </TBODY>
    </TABLE>
    <BR>
    </TD>
    </TR>
    </TBODY>
    </TABLE>
    ...
    </CENTER>
    </BODY>
    </HTML>
    我转到的是Servlet:
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { HttpSession session=request.getSession(false);
    RequestDispatcher dispatcher;
    System.out.println(session == null);
    if(session == null)
    {
    dispatcher=request.getRequestDispatcher("/ch04/books.jsp");
    dispatcher.forward(request, response);
    }
    else{
    BookBean book=(BookBean)session.getAttribute("bookToAdd");
      System.out.println(book);
    Map cart =(Map)session.getAttribute("cart");
    System.out.println(cart);
    if(cart == null)
    {
    cart=new HashMap();
    session.setAttribute("cart",cart);
    }
    CartItemBean cartItem=(CartItemBean)cart.get(book.getISBN());
    if(cartItem != null)
    cartItem.setQuantity(cartItem.getQuantity()+1);
    else
    cart.put(book.getISBN(), new CartItemBean(book,1));

    dispatcher=request.getRequestDispatcher("/ch04/ViewCart.jsp");
    dispatcher.forward(request, response);
    }

    }
    在BookBean book=(BookBean)session.getAttribute("bookToAdd");
      System.out.println(book);时输出的是null好急,对回答的表示感谢
      

  6.   

    LZ你最好是在Servlet中调用用javaBean 
    然后request.getSession().setAttribute("bookToAdd",bookToAdd);
    在到jsp页面接收 BookBean book=(BookBean)session.getAttribute("bookToAdd");
    这样会比较好 在JSP页面直接调用是不提倡的哦 ...
      

  7.   

    while(i<size)
      {
     book=(BookBean)list.get(i);
      if(iSBN == book.getISBN())
      {
      
      break;
      }
      i++;
      }楼主你确定你这段代码执行了吗?  session.setAttribute("bookToAdd",book);我想你肯定没有存储进入对象.
      

  8.   

    怎么可能啊 你是不是在那清空session了??
      

  9.   

    一般写JAVA的人都不会这样比较字符串的,楼主你设置session的代码肯定没有被执行到,另以后有疑问都可以看断点看看的
    if(iSBN == book.getISBN())
      

  10.   

    你可以在servlet中加入打印语句,看看哪些地方程序执行了 哪些并没有执行到
      

  11.   

    +1,关键是你的类型,还有set后,就可以get了。
      

  12.   

    哦,是该把if(iSBN == book.getISBN())改为if(iSBN.equals(book.getISBN))
      

  13.   

    在Servlet里我一般用Session,是request.getSession.setAttribute("","");在Servlet里是不可以直接使用Session来调用方法吧@!??
      

  14.   

    HttpSession session=request.getSession(false);是不是这个false的原因啊
      

  15.   

    弱弱说一句,servlet中获取session的值不是session.getAttribute(),而是request.getSession().getAttribute()哦。。
      

  16.   

    楼主你的代码不好看清楚,我建议你在转到的页面首先获取一下Session然后输出看看是否为空,如果这样为空的话,那就是 session.setAttribute("bookToAdd",book);
    这句话没有执行到了。试着去做吧
      

  17.   

    在action中不要使用重定向,否则session个中的值就会丢失
      

  18.   

    HttpSession session=request.getSession(false);改为
    HttpSession session=request.getSession();
    看看