Action组件:负责处理一项距离的业务(应用控制器),组合,委派业务组件去完成;
内置action类:
1)forwardAction类
2)IncludeAction类
3)dispatchAction类
先说说forwardaction和includeaction,这两个是用于jsp网页间的调用或转发。因为实际上很多情况,我们没有必有让每一个客户端的请求进行一系列的业务操作,诸如以前我们用过的<jsp:forward page=""> <jsp:include page=""> 和前两者功能很相似,但是不同的是sturts要求我们通过前端控制器这样做可以让控制器能够正确的选择子系统来处理,并能控制访问的时放置的作用域对象,使得jsp相互的调用和转发得到很好的流程控制。
具体的操作:(forwardacition和includeaction的配置很相似)
<action-mapping> <action <!-- 不同点 type属性对应apache中的类文件的全限定名(后缀名为forwardaction/includeaction)--> type="org.apache.struts.actions.ForwardAction" path="/login" name="login" parameter="/test.jsp"<!-- 要转发或者要包含的jsp的路径--> > </action> <action-mapping>
DispacthAction:
有时我们需要对客户的同一请求路径的不同参数进行相应处理,那么我们可以采用这种方式
比如 “login.do/method=add”"login.do/method=delete" 请求路径都是login.do
通过add来实现增加的操作 通过delete来实现删除的操作
这样做的好处:处理一组相关的业务可以大大减少action的数目,通过一个action就可以完成。
具体的操作:
写一个类去继承DispatchAction,并拓展其中的方法 比如“add/delete”方法,
public ActionForward add(....)/public ActionForward delete(...)实现类容和EXECUTE差不多。。。
改配置文件<action path="/login" type="改成对应你写dispachaction类的全限定名" parameter=“对应请求参数的method”>