`
lyy3323
  • 浏览: 86096 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

由STRUTS2传递对象开始说起。。。

阅读更多

发帖次数较少,大牛轻拍。。

------------------------------------------

由于最近在使用struts2,一些应用难免犯浑。进入正题。

 

大概流程 action(A)----------->产生对象USRR------>A.jsp----------->B.action----------->B.jsp

 

由于B.jsp还需使用user对象。故产生了想在A.JSP传递这个对象到b.action.

 

主流做法:

1.放在session

2.传递某些参数,再去数据库查询一遍这个对象。

3.页面隐藏USER对象中的各个属性。

 

为什么不能在A.jsp页面直接传递对象到action呢?

 

-----------------

操刀入手:

----------

尝试1:

在A.jsp中写入

request.setAttribute("user");

在B.action中获取request.setAttribute("user");

结果一直是null.

百思不得其解,一直以为是struts2中封装request的某些原因,或者是拦截器在作祟。。

后来猛然发现:是因为不是同一个request的关系,和struts2无关。。。

因为这个request 是上次的请求对象,新的请求会重新产生request.

 

总结一下:

在JSP 页面上使用settAttribute是没有用的。

即:客户端发出请求,服务器端相应完毕后,request即失效了。

 

剩下的讲究基本是response.sendRedirect 或者是 forward:

 

如果用request,要注意request的范围仅限于同一个request对象;
如果使用了form的"action"或者response.sendRedirect("xxx.jsp")等调转,
则不再是同一个request对象,即用request.getAttribute("name")将取不到值。
换成request.getRequestDispatcher("xxx.jsp").forward(request,response);
才能共享request中数据.

 

如果采用getParameter的形式,抱歉,只能支持string.

 

 

jsp页面传递对象是不是就无解呢?(别告诉我JSON什么的封装对象的属性值)。

 

 

0
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics