struts中的action与DispatchAction

struts中的action与DispatchAction
  
初学struts也是一知半解,比如action与dispatchAction的区别,最近便让我十分困惑。  

做为一个初学者,在目前使用过的东西中,主要有mapping.findForward(),action,dispatchAction三个实用功能,这三者放在一起本不太合适,但是在我看来,也有一定的相关性。  

struts主要用途
1. 判断url传值所要做的操作。比如 http://www.baidu.com/index.jsp?run=showAll ,这个如果使用了action,可以使用request.getParameter()接收。
2. 使用mapping.findForward(url);替换servlet的response.sendRedirect("http://www.baidu.com");
3. 把form提交的内容封装到formBean。这样在使用了大量form的时候,可以用formBean的一实例lf.formName这样去调用。
好处在于不用使用request.getParameter("formName");去接收。
4. 使用dispatchAction,在struts-config.xml中进行配置,直接可以判断get链接中的传值,也可以避免使用request.getParameter("formName");去接收。

formBean与dispatchAction的区别: 
显而易见,formBean使用在大量的post表单的情况下。
dispatchAction常用来处理url链接中传来的值。

Action与dispatchAction的区别: 
这里使用区别并不合适,因为dispatchAction继承自Action,所以dispatchAction是对action进行了功能的扩充,action常需要使用getParameter()先获取传入的值,再判断这个值是否正常,再重定向到不同的页面。 
而dispatchAction把判断放以了struts-config.xml文件中,而不需要再到业务层进行判断。并且dispatchAction在使用中,更常用于处理url传入的get请求。


Struts的生存周期

启动web服务器 -- 加载web.xml文件 -- 产生ActionServlet实例 -- 加载struts-config.xml文件 -- 解析出多个action并放入actionMapping池 
客户端发现请求 -- web容器 -- 请求发送到ActionServlet -- 分发到不同的action并实例化 -- 模型层处理 -- 处理结果返回到actionServlet -- 返回结果到视图层

举例
下面是一个使用了dispatchAction的项目的完整struts-config.xml配置
---------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<form-beans>      //formbean的定义,name="loginForm"对应于下文中的name="loginForm"
<form-bean name="loginForm" type="org.jsw.struts.form.LoginForm" />
</form-beans>
<action-mappings >

<action                    //定义了一个action
path="/manager"           //此action的访问路径
name="loginForm"          //此action用于接收哪个formbean,对应于上文<form-beans>中的内容
parameter="method"      //此action用于接怍method的值,如果method值是add,那么自动调用业务层的add方法
type="com.umt.struts.action.ManagerAction">
<forward name="success" path="/success.jsp"></forward>     //定义了重向向地址
<forward name="delete" path="/delete.jsp"></forward>
</action>
</action-mappings>

<message-resources parameter="com.jsw.struts.ApplicationResources" />
</struts-config>

你可能感兴趣的:(struts中的action与DispatchAction)