问题描述:
    我在a.jsp里面有一个List对象,里面存储多个对象,每个对象有如下信息:工号,姓名,性别...。在a.jsp中,我把List中的内容展示在一个Table中,每一行是一个对象的内容,然后我需要根据需要对每一个对象进行内容修改,当我点击每行数据后面的链接“修改”链接到b.jsp后(<a href="b.jsp">修改</a>),我需要在b.jsp中得到那行数据(一个对象),然后让用户进行修改。
   现在的问题是,我通过什么方式把那行的对象传递到b.jsp中,我试图通过request,但最后还是没有成功(水平有限),不想通过Session,请教达人们有什么方式啊?

解决方案 »

  1.   

    吧List对象放到request里.  在链接里传个编号比如: href="b.jsp?id=4" .在b.jsp里根据编号去List中取出来.
      

  2.   

    错了..要把List放到session里..放到request里到b.jsp后无法取出
      

  3.   

    不想用Session,我只想需要什么数据,就从List中取出对应的那个对象,不想把多余的对象也传到b.jsp里
      

  4.   

    你的意思是再重新到数据库中取出相应的数据吗?我已经从数据库中取到了数据,放在List里了,再取一次是不是有点浪费啊?如果是把整个List传递到b.jsp里,没有那个必要吧?只需要得到相对应的那个需要修改的对象即可。关键在于我用什么方式传,这也是我想知道的。
      

  5.   

    你是刚开始联系jsp网页开发么?session的功能远不像你想想的那么简单
    他最主要的功能就是页面传值,好好复习下9个基本对象会很有用的你说的"不想用session"到底是"不想用"还是"不会用"呢?
    如果执意不用session,就需要servlet后台来映射类实现,但是这个要比session麻烦的多
    在你点击后面的"修改"按钮 要提交一个action给servlet 有dopost方法来调用"控制类"
    而这个"控制类"你需要写入服务器跳转跳转 resquest.getresquestdispacher...forword
    将你提取出来的这个值的标识信息传递给下一页面,在通过下一页面request获取
     这就是不用session要走的弯路,你说的request不灵的原因大概是你对它还不是十分了解
    request如果要传值就需要服务器跳转,页面的跳转属于response的 所以没有request对象
    这就是前台跳转为什么不好使的原因,需要后台跳转,而后台跳转后对服务器的压力有所要求
    试想一下 每个人都用后台跳转,你的server瞬间就会爆掉,session在解决前台跳转的同时
    有及有效的存储了需要下个页面响应的信息,语句简洁 setAtribute即可,
    如果上边两种方法你都不想采用就用get提交方式在地址栏获得id或者其他的标识列
    这样不需要session
    但是信息外露 不过也是前台的以上三种方法你自己斟酌,普及下jsp思路把:
    session: 在不想暴漏信息的同时,有做前台跳转  
    get: 前台 ,信息暴漏在地址栏 但因为不涉及存取开辟内存地址 所以速度相对上一个较快
    服务器跳转传值:安全,信息一点不暴漏,如果你是高手,协内部类别人一点办法都没有
    缺点就一个词"超慢"
    因为每一次提交  需要请求 跳转 需要请求 到下一个页面获得信息还需要请求
    就是安全  但是耗时大概在前者的2 3倍左右
      

  6.   

    可以使用json技术
    如:ACTION:
                    List<User> list=new ArrayList<User>();
    User user1=new User();
    user1.setName("name1");
    user1.setPassword("password1");
    User user2=new User();
    user2.setName("name2");
    user2.setPassword("password2");
    User user3=new User();
    user3.setName("name3");
    user3.setPassword("password3");
            list.add(user1);
    list.add(user2);
    list.add(user3);
    JSONArray json=JSONArray.fromObject(list);
    try{
    PrintWriter out=response.getWriter();
    out.print(json);
    out.flush();
    }catch (Exception e) {

    }
    js:
       $(document).ready(function(){
       $("#submitbutton").click(function(){
        var params={testValue:$("#test").val()}; 
        $.ajax({
           url:'myfistJson.do',
           data:params,
           type:'post',
           dataType:'json',//返回的类型值
            success:function(data){
           $.each(data,function(i){ 
              $.each(data[i],function(key,value){
                $("#t").append("<tr><td>json"+key+"</td><td>"+value+"</td></tr>");
              })
          })
           },
           error:function(){
           alert('falie');
           }
       });
     });
    JSP:
      <form action="">
      测试输入框:<input type="text" name="testValue"  id="testValue" name="hello"><br>   
      <input type="button" name="submitbutton"  id="submitbutton" value="提交"> 
      <table border="1" width="500">
      <tr><td colspan="2" align="center">json</td></tr>
      <tbody id="t"></tbody>
      </table>
      </form>
           
      

  7.   

    用session和json应该都能实现
     1 session的话就把list放过去就好了,到第二个页面的时候取出来用可以了,没那么麻烦的
     2 用json的话就是在第一个页面把list转成一个json对象,作为一个参数传递到第二个页面,第二个页面再解析这个json串,再取值,相对第一个麻烦了很多,所以建议还是用session吧
      

  8.   

    说的对,我是刚开始做JSP的,不是不会用Session,是不想用Session,我想用Request,我知道可以这样用:
    request.setAttribute("aaa",object);
    request.getAttribute("aaa");
    但是我试了试,不行,取出的是空值,如果用request.getRequestDispatcher("b.jsp").forward(request, response);那又怎么和我的链接关联呢?这样传递可以吗?
      

  9.   


    我用的就是Session,只是感觉用的Session太多了,不只是这个地方用到,别的地方也有,所以有点不想用它。
      

  10.   

    那你用struts2标签:<s:url><s:param name="id" value="id"/></s:url>
      

  11.   

    不推荐session存用户操作信息,当用户点击浏览器返回键,并开启多个Tab并行操作的时候,数据没设计好的话很容易串。
      

  12.   

    如果涉及到用户信息,要做到安全的话还是传一个主键,查一次,在修改好点;如果是不重要的信息,session和json都行,关键是用自己最成熟的技术。当然作为初学着可以尝试用多种方式去实现,只是个人经验。希望对lz有用
      

  13.   

    谢谢你,我就是这样想的,练习多用几种技术,Session我已经用的不少了,想用其它的方法试试。呵呵,那看来还是用Session了,