struts2开发流程及配置,域对象对数据存储的3种方式
一、开发流程
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种方式的更多相关文章
- iOS开发 - OC - 实现本地数据存储的几种方式一
iOS常用的存储方式介绍 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用 ...
- iOS开发 - OC - 实现本地数据存储的几种方式二(直接使用sqlite)
连接上一篇文章http://www.cnblogs.com/FBiOSBlog/p/5819418.html. 上一篇文章介绍了OC内部一些方法进行数据的本地存储,其中包括 NSUser类.Plist ...
- Ajax跨域访问XML数据的另一种方式——使用YQL查询语句
XML数据默认是不能在客户端通过Ajax跨域请求读取的,一般的做法是在服务器上写一个简单的代理程序,将远程XML的数据先读到本地服务器,然后客户端再从本地服务器通过Ajax来请求.由于我们不能对数据源 ...
- 【SpringMVC】域对象共享数据
使用ModelAndView向request域对象共享数据 index.html <a th:href="@{/testModelAndView}">使用ModelAn ...
- WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式
原文:WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 由于WPF中没有提供PropertyGrid控件,有些业务需要此类的控件.这篇文章介绍在WPF中实现PropertyGr ...
- Struts2学习第一天——struts2基本流程与配置
struts2框架 什么是框架,框架有什么用? 框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率. 学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实 ...
- 一 Struts2 开发流程
SSH与SSM简介SSM:Spring+SpringMVC+MybatisSSH:Struts2+Hibernate+SpringStruts2:是侧重于控制层的框架Hibernate:是一个ORM( ...
- 在struts2的action中操作域对象(request、session)
在struts2的Action中,操作域对象一共有三种方式: 1.ActionContext(与servelt API无关联): //相当于request ActionContext.getConte ...
- Chrome浏览器扩展开发系列之八:Chrome扩展的数据存储
Google Chrome浏览器扩展可以使用如下任何一种存储机制: HTML5的localStorage API实现的本地存储(此处略) Google的chrome.storage.* API实现的浏 ...
随机推荐
- 小道消息:CSDN社区产品重大更新
Hi,小伙伴们: 悄悄给大家透露个消息:CSDN社区将要有重大更新. 都有哪些呢?各自是:新极客头条.Ink.博乐 是不是后面两个比較眼生?不要着急,那但是我们的重中之重.我来给大家一一道来-- 先来 ...
- Fiddler2 中文手册
原文:http://blog.sina.com.cn/s/blog_66a13b8f0100vgfi.html 最近一阵研究 Fiddler2 的使用来着,一开始看起来有点找不着北,索性就根据官网资料 ...
- datagridview 单元格类型转换【备忘】
datagridview 在设定列类型后,其下面所有行的该列都与设定的列类型相同. 在需要改变某一行的某个单元格时,遇到了一些问题,再次进行备忘: 之前在遇到该问题时参考别人的博客解决过,但是时间久 ...
- OpenCV学习(7) 分水岭算法(1)
分水岭算法主要用于图像分段,通常是把一副彩色图像灰度化,然后再求梯度图,最后在梯度图的基础上进行分水岭算法,求得分段图像的边缘线. 下面左边的灰度图,可以描述为右边的地 ...
- otl下直接用sql查询语句无法查询最新的记录的问题
最近操作mysql数据库遇到了一个很奇葩的问题,由于我的程序里需要实时读取最新的记录,所以我在程序中采用定时器每20秒读一遍数据库,但是发现除了第一次初始化读取数据库成功以外,后面最新的记录全部都读不 ...
- onehot的好处,还是可以看看的
https://www.jqr.com/article/000243 一句话概括:one hot编码是将类别变量转换为机器学习算法易于利用的一种形式的过程. 类别值是分配给数据集中条目的数值编号. s ...
- GPGPU OpenCL 精确字符串查找
字符串查找是信息安全.信息过滤领域的重要操作,尤其是对大文本的实时处理.这篇作为实例,使用GPU OpenCL进行精确模式串查找. 1.加速方法 (1)将少量常量数据,如模式串长度.文本长度等,保存在 ...
- 【干货合集】Docker快速入门与进阶
收录待用,修改转载已取得腾讯云授权 Docker 在众多技术中,绝对是当红炸子鸡.这年头,如果你不懂一点容器,不学一些Docker,还怎么出去跟人炫耀技术? Docker 也是云计算技术中较为热门的一 ...
- hihoCoder 1261 String Problem II
时间限制:50000ms 单点时限:5000ms 内存限制:512MB 描写叙述 我们有一个字符串集合S,当中有N个两两不同的字符串.还有M个询问,每一个询问都会先给出一个字符串w,你须要回答下面三个 ...
- 转adb Shell root 权限
永久root带文件 因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb pus ...