`
lyy3323
  • 浏览: 88090 次
  • 性别: 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之,不解释。公司同事告诉我的。

相关推荐

    AJAX和struts2传递JSON数组

    在本场景中,我们将探讨如何使用AJAX来传递JSON数组,并在Struts2的Action中接收和处理这些数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...

    struts2jar包

    在Struts2中,OGNL用于传递Action与视图之间的数据,以及在拦截器中进行表达式计算。 4. **struts2-convention-plugin.jar**:这是Struts2的约定优于配置插件,它简化了Action类和结果配置,使得开发者可以按照一定...

    Struts2中的参数传递

    1. **封装OGNL操作,实现值的传递**:Struts2通过对OGNL表达式的封装,实现从客户端传入的参数到Java对象之间的值传递。这一过程包括但不限于对各种复杂类型的处理,如数组、列表、映射等。 2. **类型转换**:为了...

    struts2 向结果传参数

    总的来说,Struts2提供了多种方式来向结果传递参数,这使得它在处理复杂的业务逻辑和页面跳转时具有高度的可定制性。根据项目的具体需求,选择合适的方法可以提高代码的可维护性和效率。在实践中,结合使用不同的...

    jQuery+json异步实现JSP和struts2之间的数据传递

    "jQuery+json异步实现JSP和struts2之间的数据传递"是一个典型的应用场景,它结合了前端JavaScript库jQuery与后端MVC框架Struts2,通过JSON这种轻量级的数据交换格式进行高效的数据交互。下面我们将详细探讨这一主题...

    使用Struts2的JSON插件来实现JSON数据传递

    至此,你已经掌握了如何使用Struts2的JSON插件进行数据传递的基本步骤。然而,Struts2 JSON插件还提供了许多高级特性,如自定义JSON序列化策略、处理复杂类型、支持国际化等。在实际开发中,你可以根据项目需求灵活...

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

    本文将深入探讨如何使用jQuery的AJAX方法发送JSON对象数组到Struts2的Action,并在后端进行处理。 首先,我们了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

    Struts2_入门篇_基本配置_通配符_参数注入_内置对象获取等。。。

    本入门篇主要涵盖了Struts2的基础配置、通配符使用、参数注入以及内置对象的获取,非常适合初学者进行学习。 1. **基础配置**:在Struts2中,基础配置主要通过`struts.xml`文件完成。这个文件定义了Action(动作)...

    struts2传递参数及ModelDriven的使用示例

    本示例主要讲解了如何在Struts2中传递参数以及使用ModelDriven模式。首先,我们来逐一解析涉及的知识点。 1. **Struts2框架**:Struts2是Apache软件基金会的一个开源项目,它是基于MVC设计模式的Web应用框架,旨在...

    struts2 API帮助文档

    - OGNL是Struts2中的表达式语言,用于在Action和视图之间传递数据。它可以访问对象的属性,执行方法,甚至进行复杂的运算和控制结构。 7. **插件(Plugins)** - Struts2支持多种插件来扩展功能,如Struts2-dojo-...

    struts2 学习重点笔记

    - **自动填充**:Struts2 自动从 request 中获取数据并填充到 Action 对象中。 - **原理**:通过拦截器实现,拦截器会查找与 Action 类中的 setter 方法相匹配的请求参数,并调用这些方法填充数据。 **3.3 数据传递...

    struts2 ,struts2 demo

    OGNL是Struts2中的默认表达式语言,用于在Action和视图之间传递数据。例如,`${user.name}`可以获取User对象的name属性。 **7. Struts2的注解** 除了XML配置外,Struts2还支持使用注解进行配置,使得代码更加简洁。...

    struts2所有jar包程序文件

    2. `xwork-core.jar`:XWork是Struts2的基础,提供了许多底层的功能,如类型转换、对象图导航、事件处理等。 3. `ognl.jar`:Object-Graph Navigation Language (OGNL)是Struts2中使用的表达式语言,用于在视图层和...

    Struts2 demo2

    4. **OGNL (Object-Graph Navigation Language)**: OGNL是Struts2中的表达式语言,用于在Action对象和JSP页面之间传递数据。它允许动态访问和修改对象的属性,以及执行复杂的逻辑操作。 5. **Token机制**: - **...

    Struts2的视频学习代码

    4. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts2中的默认表达式语言,用于在视图和模型之间传递数据。它允许开发者在JSP或其他视图层中直接访问Action对象的属性,或者设置模型数据。例如,`${user...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    - 这个过滤器会捕获所有进入Web应用的HTTP请求,并将它们传递给Struts2框架处理。 - 配置过程中需要注意过滤器的初始化参数,这些参数对于框架的正确运行至关重要。 - **使用struts.xml实现页面导航**: - `...

    struts2 (对象.属性)注入

    ### Struts2 (对象.属性)注入解析 #### 一、引言 随着技术的发展,Struts2框架作为Struts1的升级版本,在处理表单数据方面进行了显著改进。Struts1时代,开发者通常需要创建FormBean来封装前端传来的表单数据,这...

    Struts2主要Lib

    6. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认的表达式语言,用于在Action与视图之间传递数据。开发者可以通过OGNL表达式访问Action属性,以及在JSP中动态地显示和修改数据。 7. **...

    struts2全部的jar包

    OGNL是Struts2中的默认表达式语言,用于在Action与视图之间传递数据。它允许在Action、JSP、甚至配置文件中灵活地访问和修改对象属性。 7. **Struts2的JAR包**: - `struts2-core.jar`:包含框架的核心组件,如...

    尚硅谷_佟刚_Struts2

    8. **Struts2与Spring集成**:通过Struts2的Spring插件,可以实现Action类的依赖注入,便于管理对象和事务。 9. **表单验证**:Struts2提供了强大的表单验证机制,可以通过XML或注解方式定义验证规则,进行客户端和...

Global site tag (gtag.js) - Google Analytics