`
lyy3323
  • 浏览: 86008 次
  • 性别: 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什么的封装对象的属性值)。

分享到:
评论
15 楼 iday 2011-05-30  
lyy3323 写道
iday 写道
用stream传。

是否可以详细的说说。

request.getOutputStream().write()
这样说详细了哇?
14 楼 amwiacel 2011-05-30  
楼主,你的action1->b.jsp->action2那个b.jsp需要显示给用户吗?如果不需要直接用chain:action1->action2就行了,如果要显示的话,要么是session或传id重新获取了.
13 楼 wuliaolll 2011-04-27  
同意楼上……

楼主都没弄明白什么是请求。

请求与请求除了sessionid相同共session外,没有任何联系,何来共享request之说。
12 楼 oxoxo 2011-04-27  
还是弄清http协议吧。。。。。。弄清什么是请求
11 楼 lyy3323 2011-04-27  
iday 写道
用stream传。

是否可以详细的说说。
10 楼 iday 2011-04-27  
用stream传。
9 楼 lyy3323 2011-04-27  
alyouge 写道
我表述的ACTION-JSP-ACTION不符合啊

====================================================

你这种想法本身都是个问题。不在一次请求中,只能再传个ID什么的参数!!!然后再处理!




恩,基本是这样。为什么设置成对象不能传递呢,总觉得原理上还不是很清晰。
和http协议有关?只支持string?
8 楼 alyouge 2011-04-27  
我表述的ACTION-JSP-ACTION不符合啊

====================================================

你这种想法本身都是个问题。不在一次请求中,只能再传个ID什么的参数!!!然后再处理!
7 楼 zhizhuodeyu 2011-04-27  
peterwei 写道
strtus2的result类型有chain,请google之,不解释。公司同事告诉我的。


resul的type类型chain是服务器之间action跳转  所以value stack是共享的  也就是说request是共享的
所以你可以直接冲action(A)直接跳转到action(B),user对象就可以带过去了

struts2中的action跳转需要用参数的,详情介意你还是google一下.
6 楼 lyy3323 2011-04-27  
sy197661944 写道
这是
转发 和 重定向 的区别吧...
转发还是原来的 request




问题就是在struts2的时候 怎么才能共享request.
5 楼 lyy3323 2011-04-27  
haytalent 写道
A 页面使用<s:textfield name="" ></s:textfield> 传递到Baction  action继承modelDriven




modelDriven .....
不知道理解的对不对,
仅仅只是用了模型驱动,仅仅只是省略了以前user.name的写法,可以直接写name.
但是还是无法传递对象。

<s:textfield name="" ></s:textfield> 也只能是逐个字段一个一个的写。不能直接传递一个对象,。
4 楼 lyy3323 2011-04-27  
peterwei 写道
strtus2的result类型有chain,请google之,不解释。公司同事告诉我的。



type="chain" 是跳转到ACTION 的,
和我表述的ACTION-JSP-ACTION不符合啊。
3 楼 sy197661944 2011-04-27  
这是
转发 和 重定向 的区别吧...
转发还是原来的 request
2 楼 haytalent 2011-04-27  
A 页面使用<s:textfield name="" ></s:textfield> 传递到Baction  action实现modelDriven 接口


你的流程是action(A)----------->产生对象USRR------>A.jsp----------->B.action----------->B.jsp
我在A页面用<s:form>
             <s:textfield name="" ></s:textfield>
             <s:textfield name="" ></s:textfield>
          <s:form>

actionA里用模型对象去取,返回到A页面值还是有的,再提交到actionB里模型对象去取
1 楼 peterwei 2011-04-27  
strtus2的result类型有chain,请google之,不解释。公司同事告诉我的。

相关推荐

    Struts2中的参数传递

    我们知道,Struts2完成参数传递处理工作的基础是OGNL和ValueStack。而在这个 过程中,我也把Struts2所要做的工作大致归纳为两个方面: 1. 对OGNL操作进行封装,完成OGNL表达式所表示的值到Java对象的值传递机制 2. ...

    Struts2返回JSON对象.doc

    Struts2返回JSON对象. 通过Struts2框架返回json对象,更好传递数据

    Struts2 in action中文版

    3.4 向对象传递数据 51 3.4.1 对象支持的JavaBean属性 52 3.4.2 ModelDriven动作 54 3.4.3 域对象用作数据转移的潜在危险 55 3.5 案例研究:文件上传 56 3.5.1 通过struts-default包获得内建的支持 56 3.5.2 ...

    struts项目学习笔记

    Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型 由传统Struts1和WebWork两个经典框架发展而来 Struts2框架=Struts2+XWork Strust2 核心功能 允许POJO(Plain Old Java Objects,简单javabean对象,没有继承,...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    struts2中的OGNL.ppt

    Struts2的一个关键特性就是它可以对Action携带的数据进行读写访问,例如在前面我们在表单中使用user.username指定数据传递给Action的user对象的username属性,在元素中使用user.username来获取用户的名字,这是通过...

    ActionForm属性中存在对象数组如何处理

    ActionForm属性中存在对象数组如何处理

    Struts框架的学习

    2、 JSP将请求发送到主控制器(并对请求参数做了第一次封装处理) 3、 在将信息传递到副控制器前ActionFrom 对请求参数做了第二次封装处理 4、 主控制做出判断通过Struts-confing.xml配置文件去问符合要求访问的副控制...

    jquery的ajax传json对象数组到struts2的action

    google搜到的。我看大神的文章发布时间是2014年5月。亲测好用。 某度搜技术类的真真真心不行。

    struts2 jquery json

    应用struts2 jquery json简单小例子。可编译,可执行,可看效果。注释很详细。包也很齐全。 1,表单提交。怎么来回传递值的(包括字符串,对象,集合),解析json。 2,ajax提交,操作字符串,对象,数组。

    谈谈你对Struts的理解。

    要说明的是, ActionServlet把formbean对象传递给action的execute方法之前,可能会调用formbean的validate方法进行校验,只有校验通过后才将这个formbean对象传递给action的execute方法,否则,它将返回一个错误页面...

    Struts in Action[文字版][中文]

    通过基于标准的技术, “填空式”的软件开发方法,Struts可以减轻在创建新项目时那些令人抱怨的极费时间的工作。 1.介绍 2.深入Struts架构 3.构建一个简单应用 4.配置Struts组件 5.用ActionForm传递数据 6.连线...

    struts2 Ajax json Jquery demo

    使用JQuery传递数据到struts action ,并返回JSON对象数据,在JQuery回调函数解析数据的,Ajax异步处理的小测试

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...

    struts2_demo.rar_Java编程_Java_

    struts2_demo是一个非常适合struts2初学者的入门实例。里面包括了10个小故事,每个故事都针对一个经典的知识点:第一个故事,讲述如何在Struts2.0里开发你的Hello world第二个故事,模拟登陆,主要是看formbeean对象...

    struts2.3.41测试用例

    在JSP页面中通过链接向服务器传递一个对象,并在控制台打印对象信息

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)130224.rar

    它通过ActionForm和Action类来实现数据的传递和处理,同时利用配置文件struts-config.xml来管理页面跳转和Action之间的映射关系。Hibernate3.0作为持久层框架,负责与数据库进行交互。它通过ORM(对象关系映射)技术...

    一个利用struts做的简单国际化

    2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换成unicode 3、在jsp中采用标签来读取国际化消息文本 4、了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置,设置...

Global site tag (gtag.js) - Google Analytics