[转载]Struts简单分析

来源:互联网 发布:centos 7 邮件服务器 编辑:程序博客网 时间:2024/05/06 18:04
原文地址:http://www.matrix.org.cn/blog/wenic705/archives/000889.html
------------------------------

给朋友讲了struts,写了大半天,转到这个上面。
action调用后缀是指定而非一定是*.do
web.xml有如下定义。
<servlet>


<servlet-name>action</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>

<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>

<servlet-name>action</servlet-name>
<url-pattern>/do/*</url-pattern>
</servlet-mapping>
这个定义不一样。

不过通常是这样:
<servlet-mapping>


<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
定义成
<servlet-mapping>

<servlet-name>action</servlet-name>
<url-pattern>*.sdfsdf</url-pattern>
</servlet-mapping>
也能行。
还有*.do不是文件,只是一个suffix。
web一般流程是


view---------------->servlet--------->service------->dao--------->database然后返回
从架构上来讲,struts只有一个Servlet.它所有的请求都通过ActionServlet.通过java的映射机制
调出Action ,如果action extends Action就执行execute()
,如果extends DispatchAction就必须指定
parameter=,执行它的指定method.
进行处理后通过ActionMapping.findForward("path")来跳到下一个页面。
既然讲了,就还讲一些。
struts的配置文件struts-config.xml
一般分为form,global,action,plugin
form 是指actionForm的定义,这个简单。
global有global-forwards ,global-exceptions定义的是全局定义。
action 可以有简单的
<action path="/test" type="org.apache.struts.actions.ForwardAction"
parameter="/WEB-INF/pages/common/main.jsp"/>
直接跳转,也有复杂点的
<action
path="/test/listQuotation"
type="net.villion.test.webapp.action.market.QuotationAction"
name="quotationForm"
scope="request"
input="list"
parameter="action"
unknown="false"
validate="false"


<forward
name="list"
path="association.quotation.list"
redirect="false"
/>
<forward
name="add"
path="association.quotation.add"
redirect="false"
/>
<forward
name="edit"
path="association.quotation.edit"
redirect="false"
/>
<forward
name="view"
path="association.quotation.view"
redirect="false"
/>
</action>
这个就是用了tiles的,forwar
path定义在tiles配置里面。讲重要的参数parameter="action"
validate="false"
parameter="action"
就说明我调用的url是/*.do?action=".."形式的。validate="false"说明不用对这个表单进行验证。
struts同一个表单,不同的地方有些地方验证,有些不用。就是这里指定了。
还有一般大家没有注意的重要参数redirect,这个是指参数是否继续传递下去,默认false,继续传递。有时候非常有用的。
plugin,struts的国际化,验证,以及tiles都是插件,有需要自己也可以写插件放进去