jsp中,对象能通过链接的方式传递吗?

senlinzhiwang 2011-06-07 11:18:39
问题描述:
我在a.jsp里面有一个List对象,里面存储多个对象,每个对象有如下信息:工号,姓名,性别...。在a.jsp中,我把List中的内容展示在一个Table中,每一行是一个对象的内容,然后我需要根据需要对每一个对象进行内容修改,当我点击每行数据后面的链接“修改”链接到b.jsp后(<a href="b.jsp">修改</a>),我需要在b.jsp中得到那行数据(一个对象),然后让用户进行修改。
现在的问题是,我通过什么方式把那行的对象传递到b.jsp中,我试图通过request,但最后还是没有成功(水平有限),不想通过Session,请教达人们有什么方式啊?
...全文
299 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
senlinzhiwang 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 ce2010 的回复:]
如果涉及到用户信息,要做到安全的话还是传一个主键,查一次,在修改好点;如果是不重要的信息,session和json都行,关键是用自己最成熟的技术。当然作为初学着可以尝试用多种方式去实现,只是个人经验。希望对lz有用
[/Quote]
谢谢你,我就是这样想的,练习多用几种技术,Session我已经用的不少了,想用其它的方法试试。呵呵,那看来还是用Session了,
liuyuhua0066 2011-06-07
  • 打赏
  • 举报
回复
直接传个主键id,根据主键查到那个记录。
Apeipo 2011-06-07
  • 打赏
  • 举报
回复
错了..要把List放到session里..放到request里到b.jsp后无法取出
Apeipo 2011-06-07
  • 打赏
  • 举报
回复
吧List对象放到request里. 在链接里传个编号比如: href="b.jsp?id=4" .在b.jsp里根据编号去List中取出来.
老9 2011-06-07
  • 打赏
  • 举报
回复
如果涉及到用户信息,要做到安全的话还是传一个主键,查一次,在修改好点;如果是不重要的信息,session和json都行,关键是用自己最成熟的技术。当然作为初学着可以尝试用多种方式去实现,只是个人经验。希望对lz有用
UPC_思念 2011-06-07
  • 打赏
  • 举报
回复
传id再去后台查询
beowulf2005 2011-06-07
  • 打赏
  • 举报
回复
不推荐session存用户操作信息,当用户点击浏览器返回键,并开启多个Tab并行操作的时候,数据没设计好的话很容易串。
kevinPai2011 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liuyuhua0066 的回复:]
直接传个主键id,根据主键查到那个记录。
[/Quote]
+1
qiaolevip 2011-06-07
  • 打赏
  • 举报
回复
直接放在session即可传递。
loveMeQQhx 2011-06-07
  • 打赏
  • 举报
回复
那你用struts2标签:<s:url><s:param name="id" value="id"/></s:url>
senlinzhiwang 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhangdongqiang8 的回复:]
用session和json应该都能实现
1 session的话就把list放过去就好了,到第二个页面的时候取出来用可以了,没那么麻烦的
2 用json的话就是在第一个页面把list转成一个json对象,作为一个参数传递到第二个页面,第二个页面再解析这个json串,再取值,相对第一个麻烦了很多,所以建议还是用session吧
[/Quote]

我用的就是Session,只是感觉用的Session太多了,不只是这个地方用到,别的地方也有,所以有点不想用它。
senlinzhiwang 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 janoelives 的回复:]
你是刚开始联系jsp网页开发么?session的功能远不像你想想的那么简单
他最主要的功能就是页面传值,好好复习下9个基本对象会很有用的

你说的"不想用session"到底是"不想用"还是"不会用"呢?
如果执意不用session,就需要servlet后台来映射类实现,但是这个要比session麻烦的多
在你点击后面的"修改"按钮 要提交一个action给servlet 有dopost……
[/Quote]
说的对,我是刚开始做JSP的,不是不会用Session,是不想用Session,我想用Request,我知道可以这样用:
request.setAttribute("aaa",object);
request.getAttribute("aaa");
但是我试了试,不行,取出的是空值,如果用request.getRequestDispatcher("b.jsp").forward(request, response);那又怎么和我的链接关联呢?这样传递可以吗?
zhangdongqiang8 2011-06-07
  • 打赏
  • 举报
回复
用session和json应该都能实现
1 session的话就把list放过去就好了,到第二个页面的时候取出来用可以了,没那么麻烦的
2 用json的话就是在第一个页面把list转成一个json对象,作为一个参数传递到第二个页面,第二个页面再解析这个json串,再取值,相对第一个麻烦了很多,所以建议还是用session吧
t69lizhen 2011-06-07
  • 打赏
  • 举报
回复
用json可以的
tccsq 2011-06-07
  • 打赏
  • 举报
回复
request 可以了
JAVAJKjiankeJK 2011-06-07
  • 打赏
  • 举报
回复
可以使用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>



janoelives 2011-06-07
  • 打赏
  • 举报
回复
你是刚开始联系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倍左右
senlinzhiwang 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liuyuhua0066 的回复:]
直接传个主键id,根据主键查到那个记录。
[/Quote]
你的意思是再重新到数据库中取出相应的数据吗?我已经从数据库中取到了数据,放在List里了,再取一次是不是有点浪费啊?如果是把整个List传递到b.jsp里,没有那个必要吧?只需要得到相对应的那个需要修改的对象即可。关键在于我用什么方式传,这也是我想知道的。
senlinzhiwang 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 apeipo 的回复:]
错了..要把List放到session里..放到request里到b.jsp后无法取出
[/Quote]
不想用Session,我只想需要什么数据,就从List中取出对应的那个对象,不想把多余的对象也传到b.jsp里

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧