(index.jsp 页面,展现主题帖)
    //从数据库获取主题帖,展现
    List<Post> posts = PostManager.getInstance().getPosts();    ..........然后    for循环{
       <script type="text/javascript">
   function session(p){
<%session.setAttribute("post",p); %> 
           }
       </script>
       <A id=jive-thread-22 href="postdetail.jsp" onclick="session()"><%=p.getTitle() %></A>
    }    我想要的是,当点击这个主题帖的链接的时候,这个主题帖对象p被保存到session,这样在postdetail.jsp就不用再查询了!     同一个用户,保存的同名session会覆盖!
     
     结果:保存只是一个,不管你点击那个之后,跳转到postdetail.jsp页面之后,从session拿出来的,始终是最后的那个 p !     不知道大家有没有什么好的解决办法?谢谢

解决方案 »

  1.   

    <%  %> 之间的代码是在服务端执行的,而 JavaScript 是在客户端执行的。
    也就是说 function session(p){
      <%session.setAttribute("post",p); %>
    } 在到达客户端之前 <%  %> 已经执行了!另外,JavaScript 根本不可能去操作 Session 的。
      

  2.   

    可以使用ajax,提交回服务器去处理。。
    添加事件:onclick="add(把主键放到这里)";
    <script type="text/javascript">
    function add( id)
    {
    var ajax=null;
    if(window.XMLHttpRequest)
    ajax=new XMLHttpRequest();
    else if(window.ActiveXObject)
    ajax=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if(ajax==null)return false;
    var url=aaa/b.do;
    url+="pid="id;
    ajax.open("get","url",false);
    ajax.send(null);//然后在aaa/b.do的servlet里写上查询,从数据库里取值,并保存到session中当然有可能执行失败
    </script>
      

  3.   

    学习了 ,我也想着在js里操作session,看来的.......
    很受益 一楼  的 !!
      

  4.   

    如果需要用JS处理,都是用JSP代码来控制JS。
    如1楼所说。。JSP是先编译的。
      

  5.   

    首先,JAVASCRIPT在客户端运行,而SESSION在服务器端运行比如:
    <script>   
      var   readfromsession   
        
      readfromsession   =   '<%=Session("string")%>'   
      </script>
    这个操作只能是单向的   
      在JS中可以读取SESSION中的值   
        
      如果想更新SESSION的值,可以通过JS用URL参数传递给一个ASPX文件,由它改变SESSION值
    客户端操作SESSION这个无法实现,
    当然使用变通的方法是可以实现的
    但麻烦而且效率低,效果死板  

      

  6.   

    jsp是在服务器上运行的,运行完将运行所生成的HTML文档发给客户端,客户端除了提交和跳转,其它操作不能影响到服务器里代码的执行
      

  7.   

    你或者可以调用ajax 把session设置部分写到后台吧
      

  8.   

    晕,我还以为是讲JS怎么操作SESSION的。
      

  9.   

    session 只有服务端才能访问的,楼主,这是概念问题啊
      

  10.   

    Session要服务器段才能操作,除非用JavaScript请求服务端的某一个method去操作,否则不可能吧
      

  11.   

    不知道楼主这样做有何意义,完全可以先把值传到后台,后台在用SESSION包装啊
      

  12.   

    JS操作session,看标题我就知道实现不了。
      

  13.   

    楼上说得很对,,尖括号的内容在生成JSP页面的时候已经执行了,,在页面上不能执行。。
      

  14.   

    <%  %> 之间的代码是在服务端执行的,而 JavaScript 是在客户端执行的。 
    也就是说 function session(p){ 
      <%session.setAttribute("post",p); %> 
    } 在到达客户端之前 <%  %> 已经执行了! 另外,JavaScript 根本不可能去操作 Session 的
    可以使用ajax,提交回服务器去处理。。 
    添加事件:onclick="add(把主键放到这里)"; 
    <script type="text/javascript"> 
    function add( id) 

    var ajax=null; 
    if(window.XMLHttpRequest) 
    ajax=new XMLHttpRequest(); 
    else if(window.ActiveXObject) 
    ajax=new ActiveXObject("Microsoft.XMLHTTP"); 

    if(ajax==null)return false; 
    var url=aaa/b.do; 
    url+="pid="id; 
    ajax.open("get","url",false); 
    ajax.send(null);//然后在aaa/b.do的servlet里写上查询,从数据库里取值,并保存到session中当然有可能执行失败 
    </script>