首页 > 代码库 > Struts——三大组件(三)Action

Struts——三大组件(三)Action

Action

    ActionStruts中的基础组件。我们学过了Struts的执行流程,处理最终都会调到一个Action类;我们在Action中取得表单数据;进行业务逻辑处理;页面转发、传递等。

 

一、配置文件

<actionpath="/login"
type="struts.LoginAction"
name="loginForm"                
scope="request"                
>


二、Action代码

       生成Action后,当被调用时,默认调用execute()方法。


public ActionForwardexecute(ActionMapping mapping, ActionForm form,
HttpServletRequestrequest, HttpServletResponse response)
throwsException {        
//通过ActionForm取得表单数据
LoginFormlaf=(LoginForm)form;
Stringusername = laf.getUsername();
Stringpassword = laf.getPassword();
//调用业务逻辑
UserManageruserManager=new UserManager();
try{
userManager.Login(username,password);
//跳转
    returnmapping.findForward("success");
}catch(UserNotFinde){
e.printStackTrace();
request.setAttribute("msg","用户不能找到");
}catch(PasswordErrore){
e.printStackTrace();
request.setAttribute("msg","密码错误");
}        
//跳转
returnmapping.findForward("error");
}


 

以上是Action的简单使用。Action作为父类,有以下几大子类:

1.ForwardAction(请求转发)

      可以转发到其他web组件,仅仅提供一个转发功能,不作处理,真正完成跳转的是ActionForward类。

2.IncludeAction(包含页面)

       包含其他web组件。

3.DispatchAction(同一界面一个表单多个提交)

      通常一个Action只完成一个操作,用这个Action可以完成一组相关的操作。不能重写DispatchAction 的execute()方法

4.MappingDispatchAction(多个表单一个Action

      继承自DispatchAction,可将同一个Action的不同方法映射成多个Action URI 。不能重写MappingDispatchAction的execute()方法

5.LookupDispatchAction(继承自DispatchAction

      可以定义多个方法,但主要用于一个表单里有多个按钮,而这些按钮又有一个共同的名字的场合。不能重写LookupDispatchAction 的execute()方法。

6.SwitchAction

       用于子模块之间的切换,多个配置文件之间的页面跳转。

 

ps:不做详细介绍,有兴趣的可以看一下

 

总结:

        Action是真正的工作者,我们的业务逻辑处理,数据验证,页面跳转需要通过Action完成。Action给我们提供了很多子类,把我们常用到的方法都封装好了,我们直接调用即可,框架的使用,大大的简化了我们的开发。