一、开发流程

1)引入 jar 包,其中必须引入的有(我是用的struts是2.3.32)

commons-fileupload-1.3.2.jar     |文件上传下载
commons-io-2.2.jar                   |
commons-lang3-3.2.jar      |long扩充包
freemarker-2.3.22.jar           |标签扩充
javassist-3.11.0.GA.jar             |
ognl-3.0.19.jar
struts2-core-2.3.32.jar       |struts核心包
xwork-core-2.3.32.jar           |xwork核心包

2)配置web.xml 文件,引入filter,这是固定格式

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

3)开发action

4)配置 struts.xml 配置文件,该配置文件需要放到 src 目录下。

配置文件样例如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd"> <struts>
<package name="Adminpkg" namespace="/Admin" extends="struts-default">
<action name="login" class="com.huitong.action.AdminAction" method="login">
<result name="success" type="dispatcher">/index.jsp</result>
</action>
</package>
</struts>

其中result name表示调用类 class 的方法 method 后返回的标记。

说明:package 是用来管理各个action的。

二、action类中对共享数据的处理方式有3中,

1)使用servlet api获取相应的域对象

2)使用 ActionContext 对象获取域对象

3)实现接口SessionAware,RequestAware, ApplicationAware

域对象的说明,有request, session, application

2.2.1)方式1的实现,主要的类是:ServletActionContext,实现代码如下

        HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
ServletContext servletContext = ServletActionContext.getServletContext(); request.setAttribute("request", "requestValServletActionContext");
session.setAttribute("session", "sessionValServletActionContext");
servletContext.setAttribute("application", "servletContextValServletActionContext"); return SUCCESS;

说明:在struts 框架中导入servlet 类,有点高耦合,以后尽量少用。除非到必须要用,例如获取项目地址 request.getContextPath()。

2.2.2)方式2的实现,主要的类是ActionContext,实现代码如下

        ActionContext acContext = ActionContext.getContext();    //首先获取ActionContext 对象

        Map<String, Object> request = acContext.getContextMap();
Map<String, Object> session = acContext.getSession();
Map<String, Object> application = acContext.getApplication(); request.put("request", "requestValActionContext");
session.put("session", "sessionValActionContext");
application.put("application", "applicationValActionContext"); return SUCCESS;

说明:这种方法首先获取actionContext对象。使用的是map来存储数据。这种方式一般用在方法种类比较少的情况,因为每个处理方法都需要获取对象,进而处理。

要想获取其他域对象,首先获取 actionContext 上下文环境对象。

ActionContext accontext = ActionContext.getContext();

1)获取request 对象

Map<String, Object> request = accontext.getContextMap();

2)获取 session 对象

Map<String, Object> session = accontext.getSession();

3)获取 servletContext 对象

Map<String, Object> application = accontext.getApplication();

2.2.3)方式3 的实现,主要的接口有 SessionAware,RequestAware, ApplicationAware;实现方法如下

public class datapro3 extends ActionSupport implements SessionAware,
RequestAware, ApplicationAware {
private Map<String, Object> application=null;
private Map<String, Object> request=null;
private Map<String, Object> session=null; @Override
public void setApplication(Map<String, Object> application) {
this.application = application;
} @Override
public void setRequest(Map<String, Object> request) {
this.request = request;
} @Override
public void setSession(Map<String, Object> session) {
this.session = session;
} public String pro3(){
request.put("request", "requestValRequestAware");
session.put("session", "sessionValSessionAware");
application.put("application", "applicationValApplicationAware"); return SUCCESS;
} }

该方法跟实现方式2差不多,只不过这种方法将域对象首先存储到类的属性中,在以后的处理方法上直接使用即可。所以这种方法可以应用于处理的方法比较多的情况。

struts2开发流程及配置,域对象对数据存储的3种方式的更多相关文章

  1. iOS开发 - OC - 实现本地数据存储的几种方式一

    iOS常用的存储方式介绍 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用 ...

  2. iOS开发 - OC - 实现本地数据存储的几种方式二(直接使用sqlite)

    连接上一篇文章http://www.cnblogs.com/FBiOSBlog/p/5819418.html. 上一篇文章介绍了OC内部一些方法进行数据的本地存储,其中包括 NSUser类.Plist ...

  3. Ajax跨域访问XML数据的另一种方式——使用YQL查询语句

    XML数据默认是不能在客户端通过Ajax跨域请求读取的,一般的做法是在服务器上写一个简单的代理程序,将远程XML的数据先读到本地服务器,然后客户端再从本地服务器通过Ajax来请求.由于我们不能对数据源 ...

  4. 【SpringMVC】域对象共享数据

    使用ModelAndView向request域对象共享数据 index.html <a th:href="@{/testModelAndView}">使用ModelAn ...

  5. WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式

    原文:WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 由于WPF中没有提供PropertyGrid控件,有些业务需要此类的控件.这篇文章介绍在WPF中实现PropertyGr ...

  6. Struts2学习第一天——struts2基本流程与配置

    struts2框架 什么是框架,框架有什么用? 框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率. 学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实 ...

  7. 一 Struts2 开发流程

    SSH与SSM简介SSM:Spring+SpringMVC+MybatisSSH:Struts2+Hibernate+SpringStruts2:是侧重于控制层的框架Hibernate:是一个ORM( ...

  8. 在struts2的action中操作域对象(request、session)

    在struts2的Action中,操作域对象一共有三种方式: 1.ActionContext(与servelt API无关联): //相当于request ActionContext.getConte ...

  9. Chrome浏览器扩展开发系列之八:Chrome扩展的数据存储

    Google Chrome浏览器扩展可以使用如下任何一种存储机制: HTML5的localStorage API实现的本地存储(此处略) Google的chrome.storage.* API实现的浏 ...

随机推荐

  1. CMoReader

    #ifndef __E3GLOGLOADBYFILE_H__ #define __E3GLOGLOADBYFILE_H__ #include "PubCommon\MemoryManager ...

  2. shiro中部分SpringCache失效问题

    原文:https://www.cnblogs.com/liruiloveparents/p/9392159.html shiro中部分SpringCache失效问题   1.问题抛出 今天在做Spri ...

  3. centos7 yum安装配置redis 并设置密码

    原文:https://www.cnblogs.com/fanlinglong/p/6635828.html centos7 yum安装配置redis 并设置密码 1.设置Redis的仓库地址 yum ...

  4. Tomcat:基础安装和使用教程

    背景 此文记录了 Tomcat 的基本使用方法,主要为了强化记忆. 安装步骤 第一步:下载和安装 Java 下载地址:http://www.oracle.com/technetwork/java/ja ...

  5. sqlserver锁大全

    锁定提示                                 描述  HOLDLOCK        将共享锁保留到事务完成,而不是在相应的表.行或数据页不再需要时就立即释放锁.HOLDL ...

  6. Orchard运用 - 为评论启用Gravatar头像

    在前一篇随笔中我曾分享如何为Orchard特定主题添加独立代码文件, 今儿延续如何把对应代码应用到Views上. 对此我不妨把为评论启用Gravatar头像这一例子来实现.其实很简单, 思路大概就是创 ...

  7. Eclipse中设置背景颜色与字体大小和xml文件中字体大小调整

    Eclipse中代码编辑背景颜色修改: 代码编辑界面默认颜色为白色.对于长期使用电脑编程的人来说,白色很刺激我们的眼睛,所以改变workspace的背景色,可以使眼睛舒服一些.设置方法如下: 1.打开 ...

  8. css3动画属性系列之transform细讲旋转rotate

    1.语法: transform: none |  <transform-function> [<transform-function>]* 2.取值: none         ...

  9. (转)Akka学习笔记(二):Actor Systems

    Akka学习笔记(二):Actor Systems 图中表示的是一个Actor System,它显示了在这个Actor System中最重要实体之间的关系. 什么是actor,是一个封装了状态和行为的 ...

  10. RaceWeb介绍(7):由500强公司数据高速生成百度地图——生成坐标字段及坐标数据

    接上篇. 一.生成X坐标.Y坐标两个字段. 我们须要为每一个公司建立X坐标和Y坐标字段,用来保存XY坐标. 既然为了突出"快",这一步就有程序来完毕吧. 右键单击"世界5 ...