Struts2之Action的实现
对于Struts2框架来说,最重要的莫过于Action类的编写,类比于Servlet,Action类也是通过类的实例对象调用方法来处理请求的,Action类的实例对象是由Struts2的核心Filter,根据请求的Action,来决定生成哪个Action类的实例对象。
不同与servlet,一个类要成为Action类并不需要继承任何Struts2的基类,或者实现任何接口。
public class LoginAction
{
private String name;
private Sting password;
//name Field的setter方法和getter方法
......
//password Field的setter方法和getter方法
.....
//Action类默认的处理用户请求的方法:execute() 类似于servlet类中service()方法
public String execute()
{
......... //处理代码
}
}
分析一下一个请求到Action中被处理的整个过程: --------这个地方也是Struts2框架的核心
页面的一个请求,请求中有两个属性name,password → 该请求被Struts2的核心Filter拦截 → 可能先根据常量配置对请求参数进行解析,转码等操作 →
核心Filter根据该请求所请求的Action类,生成这个Action类的实例对象(根据struts.xml配置文件的对应关系,生成实例对象利用了反射技术) →
核心Filter把请求中属性 调用Action类的实例对象的setter方法赋给实例对象Field → 通过Action类的实例对象调用execute()方法来处理请求,放回一个逻辑视图名 →
核心Filter根据放回的逻辑视图名 对应于struts.xml配置文件中逻辑视图名与物理视图名对应关系 ,转发到物理视图页面
由这个过程可见核心Filter对于整个过程起了举足轻重的作用,而这个核心Filter究竟是如何详细的处理的不用程序员关心 。
一个类是Action类 是不需要实现任何接口或继承任何基类的 但是Struts2框架为了使开发者开发的Struts更加规范 ,提供了Action接口和ActionSupport基类 ,程序员可以选择的进行实现或继承
Action接口 ---------包含了一些结果字符串
ActionSupport类 -------是Action接口的实现类 ,里面提供了一些默认的方法
Action访问Servlet的API
不同于Struts1, Struts2的Action没有与任何的Servlet API耦合 ,但是我们又想使用servlet中的几大对象如ServletContext对象 ,request对象 ,response对象,session对象 ,application对象怎么办?
大概有三种方式:
1.通过ActionContext类的实例对象 ,调用该类提供的方法
这种方式并不是真正的拿到了request对象,response对象 .... 那些方法返回不是request对象........,但是向其中添加值,与向request对象.....,添加值得效果相同。
2.通过让该Action类选择实现ServletContextAware接口 ,ServletRequestAware接口 ,ServletResponseAware接口
这种方式可以获得requst对象....,但是想获得某个对象,就要实现特定的接口,也不是很方便。
3.通过ServletActionContext工具类
getPageContext()
getRequest()
getResponse()
getServletContext()
这种方式可以获得pageContext对象,request对象,reponse对象,servletContext对象。这种方式最方便,推荐使用这种方式。
Struts2之Action的实现的更多相关文章
- struts2的action是多例,servlet是单例
struts2中action是多例的,即一个session产生一个action如果是单例的话,若出现两个用户都修改一个对象的属性值,则会因为用户修改时间不同,两个用户访问得到的 属性不一样,操作得出的 ...
- Struts2中Action接收参数的四种形式
1.Struts2的Action接收参数的三种形式. a. 使用Action的属性接收(直接在action中利用get方法来接收参数): login.js ...
- Struts2中Action取得表单数据的几种方法
Struts2中Action取得表单数据的几种方法 Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form act ...
- Struts2的Action(二)
Struts2的Action可以是一个POJO(即简单的javaBean),也实现Action接口,或者继承ActionSupport类. 1.Action接口: public interface A ...
- Struts2之Action
Struts2之Action MVC模式中需要有一个控制器来负责浏览器与服务器之间的通信,实现用户与服务器的交互.在Struts2框架中实现这一功能的是Action,它是整个框架最核心的部分.Acti ...
- 浅析Struts1和Struts2的Action线程安全问题 转
浅析Struts1和Struts2的Action线程安全问题 转 http://blog.csdn.net/virgoboy2004/article/details/5876133 [问题描述]最近 ...
- struts1 和 struts2中Action什么时候实例化
精帖1:http://blog.csdn.net/lfsf802/article/details/7277013 精帖1:http://blog.csdn.net/wmj2003/article/de ...
- struts2的action从request获取参数值的几种方式
使用jquery框架的ajax能够方便的向后台传递参数,以$.post为例,参数有2种方式字符串和键值对:$.post(url, "name=aty&age=25")和$. ...
- struts2 修改action的后缀
struts2 修改action的后缀 struts2 的默认后缀是 .action 虽然很直观,但是很烦琐.很多人喜欢将请求的后缀改为 .do 在struts2中修改action后缀有两种比较简单的 ...
- 关于struts2中action请求会执行两次的问题
关于struts2中action请求会执行两次的问题 在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...
随机推荐
- Codeforces Round #446 (Div. 2)
Codeforces Round #446 (Div. 2) 总体:rating涨了好多,虽然有部分是靠和一些大佬(例如redbag和ShichengXiao)交流的--希望下次能自己做出来2333 ...
- 【CJOJ2512】gcd之和(莫比乌斯反演)
[CJOJ2512]gcd之和(莫比乌斯反演) 题面 给定\(n,m(n,m<=10^7)\) 求 \[\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)\] 题解 首先把公因数直 ...
- 【洛谷1032 】【CJOJ1711】【NOIP2002】字串变换
###题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1.A2 可以变换 ...
- [BZOJ1604] [Usaco2008 Open] Cow Neighborhoods 奶牛的邻居 (queue & set)
Description 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l ...
- A brief introduction to weakly supervised learning(简要介绍弱监督学习)
by 南大周志华 摘要 监督学习技术通过学习大量训练数据来构建预测模型,其中每个训练样本都有其对应的真值输出.尽管现有的技术已经取得了巨大的成功,但值得注意的是,由于数据标注过程的高成本,很多任务很难 ...
- Linux shell 脚本(一)
一.初识脚本 shell:一类介于系统内核与用户之间的解释程序.脚本:一类使用特定语言,按预设顺序执行的文件批处理.宏.解释型程序创建shell脚本:理清任务过程--整理执行语句--完善文件结构1.任 ...
- 【Unity与23种设计模式】适配器模式(Adapter)
GoF中定义: "将一个类的接口转换成为客户端期待的类接口.适配器模式让原本接口不兼容的类能一起合作." 适配器模式与装饰模式有一定的相似之处 两者都是在着手解决C#不能多继承的问 ...
- Linux shell 基础
目录 一.shell脚本的基本使用 1.语言规范 2.变量 3.重定向(>,>>) 二.运算符和常用判断 1.比较运算符 2.逻辑运算符 3.常用判断 三.程序结构 1.分支(if语 ...
- Java 中 利用正则表达式 获取 网页图片
import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.URL;i ...
- 前端的UI设计与交互之数据展示篇
合适的数据展示方式可以帮助用户快速地定位和浏览数据,以及更高效得协同工作.在设计时有以下几点需要注意:依据信息的重要等级.操作频率和关联程度来编排展示的顺序.注意极端情况下的引导.如数据信息过长,内容 ...