struts2传递对象
2015-08-20 00:05
525 查看
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什么的封装对象的属性值)。
相关文章推荐
- java之 ------ 设计思想
- JAVA并发编程——守护线程(Daemon Thread)
- 几种序列化协议(protobuf,xstream,jackjson,jdk,hessian)相关数据
- Eclipse中设置编码的方式
- 在 Eclipse 中使用 Maven 构建 Web 项目
- 在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,根据hbm文件自动生成pojo和数据库脚本
- java入门之继承接口
- 使用json-lib进行Java和JSON之间的转换
- java基础学习集合学习笔记
- JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别
- Java心得17
- Struts2-Ajax无刷新显示信息
- java内存结构(运行时数据区域)
- Java-Thread (线程)
- ajax+json+java
- java无加减乘除运算符实现加法
- java的枚举类型
- Spring-boot 学习笔记(1)
- Java-Exception(异常)
- JavaFX2 - 文本可复制的Label