struts2中的request,session等问题
来源:互联网 发布:管家婆打印软件 编辑:程序博客网 时间:2024/05/18 02:10
学到struts的数据处理的时候,发现有几种获得request和session的方式,那么几种获取数据,以及显示有什么不同呢?
一般来说,在struts中的数据处理分为三个阶段
- 请求数据封装
- 调用Service处理业务逻辑,拿到结果数据
- 数据保存到域中
其实现方式也有三种
一、直接拿到servletAPI,执行操作
HttpServletRequest request=ServletActionContext.getRequest();HttpSession session = request.getSession();ServletContext application=ServletActionContext.getServletContext();// 操作request.setAttribute("request_data", "request_data1");session.setAttribute("session_data", "session_data1");application.setAttribute("application_data", "application_data1");
在jsp上拿数据:
requset数据:<s:property value="#request.request_data"/>session数据:<s:property value="#session.session_data"/>application数据:<s:property value="#application.application_data"/>
在网页上的结果:
requset数据:request_data1 session数据: application数据:application_data1
注意:
- 该方法用法与servlet中用法相同
- ServletActionContext继承自ActionContext,所以ServletActionContext也线程安全,线程安全要求每个线程都独立进行,所以req的创建也要求独立进行,所以ServletActionContext.getRequest()这句话不要放在构造函数中,也不要直接放在类中,而应该放在每个具体的方法体中(eg:login()、queryAll()、insert()等),这样才能保证每次产生对象时独立的建立了一个req。
- 用struts2如果处理get传参是中文,只能使用该方法进行处理乱码问题
二、解耦的方式实现对数据的操作
// Struts中对数据操作,方式2: 通过ActionContext类 ActionContext ac = ActionContext.getContext(); // 得到Struts对HttpServletRequest对象进行了封装,封装为一个map // 拿到表示request对象的map Map<String,Object> request = (Map<String, Object>) ac.get("request"); // 拿到表示session对象的map Map<String, Object> session = ac.getSession(); // 拿到表示servletContext对象的map Map<String, Object> application = ac.getApplication(); // 数据 request.put("request_data", "request_data1_actionContext"); session.put("session_data", "session_data1_actionContext"); application.put("application_data", "application_data1_actionContext");
在debug时的结构图:
在jsp上拿数据:
requset数据:<s:property value="#request.request_data"/>session数据:<s:property value="#session.session_data"/>application数据:<s:property value="#application.application_data"/>
在网页上的结果:
requset数据:request_data1_actionContext
session数据:session_data1_actionContext
application数据:application_data1_actionContext
三、AOP方式
实现接口:
public class DataAction extends ActionSupport implements RequestAware, SessionAware, ApplicationAware{ private Map<String, Object> request; private Map<String, Object> session; private Map<String, Object> application; // struts运行时候,会把代表request的map对象注入 @Override public void setRequest(Map<String, Object> request) { this.request = request; } // 注入session @Override public void setSession(Map<String, Object> session) { this.session = session; } // 注入application @Override public void setApplication(Map<String, Object> application) { this.application = application; } @Override public String execute() throws Exception { // 数据 request.put("request_data", "request_data1_actionAware"); session.put("session_data", "session_data1_actionAware"); application.put("application_data", "application_data1_actionAware"); return SUCCESS; }}
在jsp的取值和网页显示与上面相同。
0 0
- struts2中的request,session等问题
- struts2 中的 Session & Request
- struts2中的request,response,session
- Struts2中获取request、session等方法
- Struts2中的session、request、respsonse获取方法
- struts2 中request和session中的管理
- Struts2中的session、request、respsonse获取方法
- struts2中几种获得request,session等对象的方法
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等 .
- struts2中获取request,session,application等属性范围对象
- struts2中几种获得request,session等对象的方法
- struts2得到request response和session等对象
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等 .
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等 .
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等
- 1005. 继续(3n+1)猜想
- C#线程运行的机制和原理
- Android动画全解析(四)
- C语言两头堵模型(去两头空格)
- poj3264-RMQ问题的ST算法
- struts2中的request,session等问题
- 文章标题
- java子类继承父类
- Win 10关机后电源灯不停闪烁的解决办法
- equals方法的重写1
- Struts 获取HttpServletRequest和HttpServletResponse的两种方式
- IOS开发之实现App消息推送(最新)
- 栈
- OpenGL--代码解读