Action
Action是Struts中的基础组件。我们学过了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给我们提供了很多子类,把我们常用到的方法都封装好了,我们直接调用即可,框架的使用,大大的简化了我们的开发。
Struts——三大组件(三)Action,布布扣,bubuko.com