Struts中的数据处理的三种方式

发布时间:2017-2-25 10:37:14 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Struts中的数据处理的三种方式 ",主要涉及到Struts中的数据处理的三种方式 方面的内容,对于Struts中的数据处理的三种方式 感兴趣的同学可以参考一下。

 Struts中的数据处理的三种方式:

public class DataAction extends ActionSupport{    @Override    public String execute() throws Exception {        // 1. 请求数据封装; 2. 调用Service处理业务逻辑,拿到结果数据 3. 数据保存到域中        /*         *         // Struts中对数据操作,方式1: 直接拿到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");        */                        //推荐:解耦的方式实现对数据的操作】        // Struts中对数据操作,方式2: 通过ActionContext类         ActionContext ac = ActionContext.getContext();        // 得到Struts对HttpServletRequest对象进行了封装,封装为一个map        // 拿到表示request对象的map         Map<String,Object> request =  ac.getContextMap();          // 拿到表示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");                return SUCCESS;    }}

尽量的用方式二,如果有些功能,第二种方式实现不了,需要采用原始的方式来做,也可以使用第一种,比如获取路径,方式二就实现不了。

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <package name="data" namespace="/" extends="struts-default">        <!-- 全局配置 -->                <global-results>            <result name="success">/data.jsp</result>        </global-results>        <action name="data" class="c_data.DataAction">        </action>     </package>    </struts>

data.jsp:

  <body>      ${request_data } <br/>      ${session_data } <br/>      ${application_data } <br/>  </body>

数据处理的实现方式三:实现接口的方式

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; }}

对数据操作的所有方法(把数据保存到域中)

方式一:直接获取servletapi

       核心类:ServletActionContext提供的静态方法

方式二:通过ActionContext获取不同(代表request/session/application)的map

方式三:实现接口的方法:(RequestAware/SessionAware/ApplicationAware)

方式一是与servlet耦合的方式,会导入servlet相关的jar包

方式二,三是与servlet解耦的方式,不会导入与servlet相关的jar包

不推荐使用第一种方式。

一般用第二种方式,

如果在程序中反复多次的用request,session,application对象,推荐使用第三种

比如开发一个BaseAction的时候(其他action继承此类),可以用第三种方式。


上一篇:(转载)虚幻引擎3--【UnrealScript教程】章节一:3.输出HelloWorld
下一篇:一般企业网站,电商可以完全可以水平拓展的lanmp系统架构

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。