struts2之数据处理的三种方式
来源:互联网 发布:淘宝千人千面影响 编辑:程序博客网 时间:2024/06/06 07:35
一,概述
Javaweb开发少不了往域对象中存数据,使用sruts2框架该如何往域对象中存数据呢?使用sruts2有三种方式往域对象中存数据,各有各的优点。
二,方式一:调用Servlet API
1)新建一个Action
package com.bighuan.c_data;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** * 数据处理 * @author bighuan * */public class DataAction extends ActionSupport{@Overridepublic String execute() throws Exception {//1,对请求数据进行封装
//2,调用service,拿到结果数据//3,向域中存数据//struts中对数据操作,1,直接拿到SerlvetApi,执行操作HttpServletRequest request = ServletActionContext.getRequest();//获取sessionHttpSession session = request.getSession();//获取applicationServletContext application = ServletActionContext.getServletContext();//保存数据request.setAttribute("requestData", "requestData111");session.setAttribute("sessionData", "sessionData222");application.setAttribute("applicationData", "applicationData333");//拿某个目录的路径ServletContext application1 = ServletActionContext.getServletContext();String uploadPath = application1.getRealPath("/upload");System.out.println(uploadPath);return SUCCESS;}}2)通过ServletActionContext拿到request对象、application对象,通过request又可以拿到session对象,然后通过相应的域对象往域中存数据,在struts.xml中配置一下跳转到Data.jsp页面,查看自己保存的数据。
配置struts.xml:
<package name="data" extends="struts-default"><global-results><result name="success">/data.jsp</result></global-results><action name="execute" class="com.bighuan.c_data.DataAction"method="execute"></action></package>
data.jsp中从域对象中取数据:
${requestScope.requestData }<br> ${sessionScope.sessionData }<br> ${applicationScope.applicationData }<br>3)在struts2中一般不推荐使用Servlet API,但是有些情况必须使用Serlvet API,比如要拿WebRoot下的upload目录的路径,使用servlet API很方便。
三,方式二:使用ActionContext
1)struts2对request、session、application进行了封装,封装成一个Map对象,只要通过ActionContext就可拿到相应的Map,以一种解耦的方式实现对数据的操作。
2)将上面那个Action类的execute()方法中的存数据的逻辑改为下面的代码,其他配置不变。同样可以在jsp页面上取出数据显示出来。
ActionContext ac = ActionContext.getContext();Map<String, Object> request = ac.getContextMap();Map<String, Object> session = ac.getSession();Map<String, Object> application = ac.getApplication();//存数据request.put("requestData", "requestData111_ActionContext");session.put("sessionData", "sessionData222_ActionContext");application.put("applicationData", "applicationData333_ActionContext");
四,方式三,通过实现相应的接口来RequestAware、SessionAware、ApplicationAware来获得域对象。
1)先贴代码,再解释。package com.bighuan.c_data;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import org.apache.struts2.interceptor.ApplicationAware;import org.apache.struts2.interceptor.RequestAware;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;/** * 数据处理 struts对数据的操作方式3,实现接口的方式 * * @author bighuan * */public class DataAction3 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware {private Map<String, Object> request;private Map<String, Object> session;private Map<String, Object> application;@Overridepublic String execute() throws Exception {// 存数据request.put("requestData", "requestData111_Aware");session.put("sessionData", "sessionData222_Aware");application.put("applicationData", "applicationData333_Aware");return SUCCESS;}// struts运行的时候会将代表request的map对象注入@Overridepublic void setRequest(Map<String, Object> request) {this.request = request;}// 注入session@Overridepublic void setSession(Map<String, Object> session) {this.session = session;}// 注入application@Overridepublic void setApplication(Map<String, Object> application) {this.application = application;}}2)实现一个RequestAware接口,就要实现setRequest方法,然后struts2在运行的时候就会将代表request的Map对象注入。其他的也一样。开发 者只需要自己在类中写一个成员变量来接收对应的Map即可。存数据的操作就和方式二一模一样了。配置一下struts.xml,运行,同样可以在jsp页面中看到数据。
3)这种方式适用于一个Action类中有多个业务方法都要往域中存数据的情况,就不用在每一个方法中通过ActionContext获得相应的Map了。
五,总结
南昌的天气变得越来越热了,博客也写的比较少了,希望自己坚持,每天学一点,总会有丰收的!!!
0 0
- struts2之数据处理的三种方式
- Struts2中的数据处理的三种方式对比
- struts2传递参数的三种方式
- struts2接数据的三种方式
- Struts2方法调用的三种方式
- Struts2接受数据的三种方式
- Struts2方法调用的三种方式
- Struts2方法调用的三种方式
- Struts2获取Session的三种方式
- Struts2方法调用的三种方式
- struts2使用session 的三种方式
- Struts2接收参数的三种方式
- struts2接收参数的三种方式
- Struts2传递参数的三种方式
- struts2获取session的三种方式
- Struts2方法调用的三种方式
- Struts2接受参数的三种方式
- struts2---获取参数的三种方式
- [网易云课堂]Linux内核分析(八)—— 理解进程调度时机跟踪分析进程调度与进程切换的过程
- ACM 6174问题
- 重放攻击
- python基础入门
- URAL 1992 CVS
- struts2之数据处理的三种方式
- 几道典型的递归算法例题
- HDU 1711 Number Sequence (KMP模板题)
- 十三、JDK的命令行工具
- while(cin>>word) 分析
- vmware虚拟机ubuntu和red hat等vmware tools安装问题
- jq实现二级下拉菜单动画效果
- Spark源码分析之分区器的作用
- spring源码-1- xml的加载与注册