一、struts1.x的目標是提供一個開發web應用的開源框架,是基於mvc設計模式來開發程序。
二、struts1.x的ActionServlet執行流程:在web.xml配置好struts1.x的配置文件信息struts-config.xml,例:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.struts.LoginActionForm"/>
</form-beans>
<action-mappings>
<action path="/login"
type="com.struts.LoginAction"
name="loginForm"
scope="request"
validate="false"
>
<forward name="success" path="/dyna_actionform.jsp"/>
</action>
1、瀏覽器發出與ActionServlet配置相匹配的請求時,服務器將請求交給struts,即ActionServlet
2、接着調用String path = processPath(request, response);將請求進行截取。
3、接着調用ActionMapping mapping = processMapping(request, response, path);通過截取到的path找到與之相應的ActionMapping
4、在ActionMapping中找到name屬性,查看scope(session或request)對應的內置對象中是否存在相應ActionForm對象,ActionForm form = processActionForm(request, response, mapping);若有,則創建,若無,則創建,並且將ActionForm放在scope中
5、接着將表單數據傳給ActionForm,利用processPopulate(request, response, form, mapping);對錶單數據進行蒐集
6、接着Action action = processActionCreate(request, response, mapping);創建Action對象,接着ActionForward forward= processActionPerform(request, response,action, form, mapping);調用執行相應的業務層,持久層對象 的方法,返回一個轉向信息
7、最後processForwardConfig(request, response, forward);在forward標籤中找到與轉向信息相匹配的轉向頁面
注意:
1.ActionMapping封裝action信息,ActionForward封裝forward信息 ,ActionConfig(map<key=path,value=ActionMapping>)存放ActionMapping配置信息,例:
<action-mappings>——>ActionMapping
<action path="/login" type="com.struts.LoginAction" name="loginForm" scope="request" validate="false" > <forward name="success" path="/dyna_actionform.jsp"/>——>ActionForward </action>
</action-mapping>
2.FormBeanConfig存放ActionForm配置信息,FormBeans(map<key=name,value=FormBeanConfig>)存放FormBeanConfig配置信
例:<form-beans>——>FormBeanConfig
<form-bean name="loginForm" type="com.struts.LoginActionForm"/>
</form-beans>
3.ModuleConfig封裝了ActionConfig和FormBeans配置信息