struts2-实现Action
2016-12-17 18:00
423 查看
在Struts2中,一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元。
也就是说,用户的每次请求,都会转到一个相应的Action类里面,由这个Action类来进行处理,因此说一个Action类代表了用户的一次请求或调用。
换句简单的话来说,Action就是用来处理一次用户请求的对象。
在实际开发的时候,通常会让Action实现Action接口或继承ActionSupport类。
定义action的3种方法
1.定义一个普通的类,类中只要有一个public String execute()方法且返回一个字符串即可。
2.定义一个类,实现Action接口,xwork2.Action这个包的。
3.也是最常用的一种,继承xwork2.ActionSupport这个类。
1、在web.xml 文件中定义核心 Filter 来拦截用户请求。
2、如果需要以POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅以GET方式发送请求,则无须经过这一步。
3、定义处理用户请求的 Action类。
4、配置Action。配置Action 就是指定哪个请求对应哪个Action进行处理,从而让核心控制器根据配置来创建合适的Action 实例。
5、配置处理结果和物理视图资源之间的对应关系(配置Result)。
6、编写视图资源。
实现 Action
Action 类包含了对用户请求的处理逻辑,Action 类也被称为业务控制器。
Struts 2 通常直接使用 Action 来封装 HTTP 请求参数,因此,Action 类里还应该包含与请求参数对应的属性,并且为这些属性提供对应的setter 和 getter方法。
上面代码继承了 ActionSupport 类,其目的是为了让用户开发Action 类 更规范。
Action 访问 Servlet API :
Struts 2 提供了一个 ActionContext 类 ,Action 可以通过 该类来访问 Servlet API 。 ActionContext 类中包含的几个常用的方法。
> Object get(Object key) : 类似调用 HttpServletRequest 的 getAttribute(String name) 方法 。
> Map getApplication() : 返回一个Map 对象, 模拟了该应用的 ServletContext 实例。
> static ActionContext getContext() : 获取 ActionContext 实例。
> Map getParameters() : 获取所有请求参数。类似调用 HttpServletRequest 的 getParameterMap() ;
> Map getSession() : 返回一个 Map 对象,该对象模拟了 HttpSession 实例。
> void setApplication ( Map application) : 直接传入一个Map实例,将该Map实例里的key-value 对转换成 application 的属性名、属性值。
> void setSession (Map session) : 和 setApplication(Map application) 相似。
配置 Action
实现了 Action 类之后,剩下的便是在 struts.xml 文件中配置该 Action 了。所谓配置 Action 就是让 应用知道哪个 Action 该处理哪个请求,也就是完成用户请求和Action 的对应关系。如下:
Struts 2 使用包来阻止Action ,因此,将Action 定义放在包定义下完成,定义Action 通过使用
如上,虽然定义了三个Action, 但每一个Action 的 Class 属性值是一样的。通过指定method属性,让Action 调用指定的方法来处理用户请求。
Action 只是一个逻辑控制器,它并不是直接对浏览者生成任何响应。因此,Action 处理完用户请求后,Action需要将指定的视图资源呈现给用户。所以在配置Action时应该配置逻辑视图和物理视图资源之间的一次映射(上面代码中的 result 子元素)。
http://www.cnblogs.com/jbelial/archive/2012/07/10/2584738.html
http://sishuok.com/forum/blogPost/list/4045.html
http://sishuok.com/forum/blogPost/list/4046.html
也就是说,用户的每次请求,都会转到一个相应的Action类里面,由这个Action类来进行处理,因此说一个Action类代表了用户的一次请求或调用。
换句简单的话来说,Action就是用来处理一次用户请求的对象。
在实际开发的时候,通常会让Action实现Action接口或继承ActionSupport类。
定义action的3种方法
1.定义一个普通的类,类中只要有一个public String execute()方法且返回一个字符串即可。
2.定义一个类,实现Action接口,xwork2.Action这个包的。
3.也是最常用的一种,继承xwork2.ActionSupport这个类。
1 public classIndexAction1 { public String execute(){ return "success"; } } 2 importcom.opensymphony.xwork2.Action; public classIndexAction2 implements Action{ public String execute() { return "success"; } } 3主要用这种方法 importcom.opensymphony.xwork2.ActionSupport; public classIndexAction3 extends ActionSupport { @Override public String execute() throwsException { // TODO Auto-generated methodstub return super.execute(); } }
1、在web.xml 文件中定义核心 Filter 来拦截用户请求。
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2、如果需要以POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅以GET方式发送请求,则无须经过这一步。
3、定义处理用户请求的 Action类。
4、配置Action。配置Action 就是指定哪个请求对应哪个Action进行处理,从而让核心控制器根据配置来创建合适的Action 实例。
<action name="login" class = "LoginAction"> ... </action>
5、配置处理结果和物理视图资源之间的对应关系(配置Result)。
<action name="login" class = "LoginAction"> <result name = "success">login_success.jsp</result> </action>
6、编写视图资源。
实现 Action
Action 类包含了对用户请求的处理逻辑,Action 类也被称为业务控制器。
Struts 2 通常直接使用 Action 来封装 HTTP 请求参数,因此,Action 类里还应该包含与请求参数对应的属性,并且为这些属性提供对应的setter 和 getter方法。
package Action; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private String username ; private String password ; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } }
上面代码继承了 ActionSupport 类,其目的是为了让用户开发Action 类 更规范。
Action 访问 Servlet API :
Struts 2 提供了一个 ActionContext 类 ,Action 可以通过 该类来访问 Servlet API 。 ActionContext 类中包含的几个常用的方法。
> Object get(Object key) : 类似调用 HttpServletRequest 的 getAttribute(String name) 方法 。
> Map getApplication() : 返回一个Map 对象, 模拟了该应用的 ServletContext 实例。
> static ActionContext getContext() : 获取 ActionContext 实例。
> Map getParameters() : 获取所有请求参数。类似调用 HttpServletRequest 的 getParameterMap() ;
> Map getSession() : 返回一个 Map 对象,该对象模拟了 HttpSession 实例。
> void setApplication ( Map application) : 直接传入一个Map实例,将该Map实例里的key-value 对转换成 application 的属性名、属性值。
> void setSession (Map session) : 和 setApplication(Map application) 相似。
配置 Action
实现了 Action 类之后,剩下的便是在 struts.xml 文件中配置该 Action 了。所谓配置 Action 就是让 应用知道哪个 Action 该处理哪个请求,也就是完成用户请求和Action 的对应关系。如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <include file = "struts-default.xml" /> <package name="default" extends = "struts-default"> <action name="login" class = "LoginAction"> <result name = "success">login_success.jsp</result> </action> </package> </struts>
Struts 2 使用包来阻止Action ,因此,将Action 定义放在包定义下完成,定义Action 通过使用
<package name = "default" extends = "struts-default"> <!-- 添加action --> <action name="register" class = "userAction" method = "register"> <result name = "success">/register_success.jsp</result> </action> <action name="login" class = "userAction"> <result name = "success">/login_success.jsp</result> <result name = "error">/login.jsp</result> </action> <action name="logout" class = "userAction" method = "logout"> <result name = "success">/index.jsp</result> </action> </package>
如上,虽然定义了三个Action, 但每一个Action 的 Class 属性值是一样的。通过指定method属性,让Action 调用指定的方法来处理用户请求。
Action 只是一个逻辑控制器,它并不是直接对浏览者生成任何响应。因此,Action 处理完用户请求后,Action需要将指定的视图资源呈现给用户。所以在配置Action时应该配置逻辑视图和物理视图资源之间的一次映射(上面代码中的 result 子元素)。
http://www.cnblogs.com/jbelial/archive/2012/07/10/2584738.html
http://sishuok.com/forum/blogPost/list/4045.html
http://sishuok.com/forum/blogPost/list/4046.html
相关文章推荐
- Struts2中实现自动发送action请求后到初始化网站首页的学习【转】
- Struts2中ajax结合action实现表单时时验证
- 学习struts2建bbs总结二:登录loginAction的简单实现
- struts2 中同一个action的实现中对应多个input的处理方法
- Struts2 ognl <s:action.../>标签详解(两种实现方式)
- struts2——为Action配置Method属性,实现同一文件,多个Action
- struts2中的利用结果类型实现Action协作(七)
- 利用jquery框架中ajax实现前台与struts2中action交互
- struts2中通过Action以InputStream的下载文件以及在iOS以及Android端接收的实现方式
- struts2中action实现ModelDriven后无法返回json的解决方法
- JS简单实现ajax访问Struts2的action类
- struts2中action实现Preparable接口的利弊
- Struts2基于XML配置方式实现对Action方法进行校验
- 实现Action---struts2学习笔记
- Struts2利用convention-plugin 实现零配置时Action与jsp的对应关系
- spring2+struts2实现action间的跳转并给予成功提示
- struts2中action实现Preparable接口
- Struts2基于XML配置方式实现对action的所有方法进行输入校验
- struts2如何实现弹出action返回的错误信息
- struts2中action实现ModelDriven后无法返回json的问题