Struts的Action类
来源:互联网 发布:吉首大学网络管理中心 编辑:程序博客网 时间:2024/05/14 16:53
1、Action类
org.apache.action.Action类是Struts的心脏,也是客户请求和业务操作间的桥梁。每个Action类通常涉及为代替客户完成某种操作。
一旦正确的Action实例确定,就会调用RequestProcessor类的processActionPerform()方法,processActionPerform()方法,负责调用Action实例的execute()方法。
execute()方法有4个参数:ActionMapping对象、ActionForm对象 、HttpServletRequest对象和HttpServletResponse对象。ActionForm对象封装了表单数据,因此Action类可以通过getter方法从该对象中获得表单数据,然后调用模型组件处理这些数据。Action类又通过ActionMapping对象的findForward()方法获得一个ActionForward对象,然后把处理结果转发到ActionForward对象所指的目标。
其具体的实现过程如下代码所示:
package login;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.util.*;
publlic class loginAction extends Action{
public ActionForward execute(ActionMapping actionmapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response )
{
loginActionForm loginForm=(loginActionForm) actionForm;
//从form bean中取出表单数据
String username=loginForm.getUsername();
String password=loginForm.getPassword();
//生成一个Session对象
HttpSession session=request.getSession(true);
session.removeAttribute("username");
session.setAttribute("username",username);
//生成一个ArrayList对象,并把用户名和密码的值寸入该对象中
ArrayList arr=new ArrayList();
arr.add(username);
arr.add(password);
String prompt;
//调用模型组件loginHandler,检查该用户是否已经注册
loginHandler login=new loginHandler();
boolean mark=login.checkLogin(arr);
if(mark) prompt="Success";
else prompt="Fail";
return actionMapping.findForward(prompt);
}
}
2.ActionMapping类
ActionMapping存储了与特定用户请求对应的特定Action的相关信息,例如输入页面、转发页面等。ActionServlet将ActionMapping传送到Action类的execute()方法,然后Action将调用ActionMapping的findForward()方法,此方法返回一个指定名称的ActionForward,这样Action就完成了本地转发。若没有找到具体的ActionForward,就返回一个null。
3.ActionForward类
Action类中的execute()方法返回一个ActionForward对象。ActionForward对象代表一个Web资源的逻辑抽象表示形式。这里的Web资源通常就是JSP页面或Java Servlet。
ActionForward是该资源的包装类,所以应用程序和实际资源之间并无多少瓜葛。实际的Web资源只在配置文件struts-config.xml中指定(如forward元素的name,path和redirect属性),并非在程序代码中写入。RequestDispatch会根据redirect属性的值,来决定ActionForward实例要进行转发还是重定向。
要从一个Action实例返回一个ActionForward实例,可以在Action类内动态地创建一个ActionForward实例,或者更常见的做法是使用ActionMapping的findForward()方法找出配置文件中预先配置的一个ActionForward实例,如下所示:
return mapping.findForward("Success");
其中,mapping是一个ActionMapping实例,该程序片断能够返回一个参数“Success”对应的ActionForward实例,以下代码是在配置文件struts-config.xml中定义的forward元素:
<action name="loginActionForm" type="login.loginAction"
validate="false" input="/login.jsp"
scope="request" path="/loginAction">
<forward name="Success" path="/main.jsp" redirect="true"/>
<forward name="Fail" path="/register.jsp" redirect="true"/>
<action/>
ActionMapping类的findForward()方法首先会调用findForwardConfig()方法,以查看在<action>元素中是否包含<forward>子元素,如果有,就会检查<global-forwards>元素片段。一旦找到匹配的ActionForward实例,就会从execute()方法将其返回给RequestProcessor。下面是ActionMapping类的findForward()方法:
public ActionForward findForward(String name)
{
ForwardConfig config=findForwardConfig(name);
if(config==null)
{
config=getModuleConfig().findForwardConfig(name);
}
return ( (ActionForward) config );
}
文章出处:飞诺网(http://www.diybl.com/course/3_program/java/javashl/2008311/104073.html)
- Struts的Action类
- 【Struts】Action 2 action类
- struts中Action类的国际化
- 介绍一下Struts的Action类
- Struts的action理解
- Struts常用的Action
- Struts 2 的Action
- struts 的 Action
- 关于Struts的Action
- Struts里面的Action
- struts的action注解
- struts 的默认action
- struts的Action接口
- Struts之Action类
- struts中的action类
- struts之action类
- Struts 2读书笔记-----struts 的action配置
- Struts中Action的种类
- J2EE与.NET技术对比
- linux下模块加载的一些问题
- (1)为什么会使用分布式类库(WebService,Remoting,WCF... ...)(2010.3.30)
- jQuery
- JVM内存分配设置
- Struts的Action类
- JavaScript:The World's Most Misunderstood Programming Language
- js 中的 instanceof与typeof区别
- oracle本身的常用数据字典表
- JQuery总结
- IT行业 何去何从 人生规划
- 網址
- 激励人们通常是最有效的基本方法
- Timesten数据库安装及配置体验