Strust2常見知識點
Struts2執行流程
應用程式啟動,進入strutspreparAndExcuteFilter 類,進入配置 檔案struts.xml,xml 檔案配置了請求的路徑和請求的型別
裡面的一些引數:
預設的型別為:dispatcher型別,跳轉的是頁面
redirectAction :跳轉的為其他的action,使用param ${param}傳遞引數
stream:用於檔案匯出,匯入操作
chain:用於action之間的條轉
redirect:用於頁面和action之間的跳轉
json:輸出的檔案格式為json格式
注意:
redirect表示客戶端重定向,用於重定向到某個頁面。
redirectAction也表示客戶端重定向,用於重定向到某個Action
chain表示服務端請求轉發,用於多個Action之間資料資訊的共享。
redirect和redirecAction類似於response.sendRedirect(url);
chain類似於request.getRequestDispatcher(url).forward(request, response);
根據nameplace 匹配前端url來路徑,進入配置的class類裡面,根據action裡面的name和class
進入匹配的方法,執行controller層的邏輯,返回不同的常量 :
SUCCESS:Action正確的執行完成,返回相應的檢視,success是name屬性的預設值。
NONE:表示Action正確的執行完成,但並不返回任何檢視。
ERROR:表示Action執行失敗,返回到錯誤處理檢視。
INPUT:Action的執行,需要從前端介面獲取引數,INPUT就是代表這個引數輸入的介面,一般在應用中,會對這些引數進行驗證,如果驗證沒有通過,將自動返回到該檢視。
LOGIN:Action因為使用者沒有登陸的原因沒有正確執行,將返回該登陸檢視,要求使用者進行登陸驗證。
,在根據返回值,進入不同的頁面或者進入不同的action
參考例子:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.multipart.maxSize" value="10485760000"/> <package name="global" extends="struts-default"> <interceptors> <interceptor-stack name="globalStack"> <interceptor-ref name="exception"> <param name="logEnabled">true</param> <param name="logLevel">info</param> </interceptor-ref> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="globalStack"/> <global-results> <result name="error">/common/error.jsp</result> <result name="warning">/common/warning.jsp</result> </global-results> <!-- 定義所有的全域性異常對映 --> <global-exception-mappings> <exception-mapping exception="com.sse.report.core.exception.ThrowedException" result="warning" /> </global-exception-mappings> </package> <package name="report" namespace="/" extends="global"> <action name="report" class="reportAction" method="report"> <result type="chain"> <param name="actionName">${appId}_report</param> <param name="namespace">/app</param> </result> </action> <action name="dynamicReport" class="reportAction" method="dynamicReport"> <result> /common/dynamic_report.jsp </result> <result name="uploadDisplay" type="chain"> <param name="actionName">uploadDisplay</param> <param name="namespace">/</param> </result> <result name="upload" type="chain"> <param name="actionName">upload</param> <param name="namespace">/</param> </result> </action> <action name="customReport" class="reportAction" method="customReport"> <result> /app/report/${appId}.jsp </result> </action> <action name="display" class="reportAction" method="display"> <result type="chain"> <param name="actionName">${appId}_display</param> <param name="namespace">/app</param> </result> </action> <action name="dynamicDisplayRs" class="reportAction" method="dynamicDisplayRs"> <result type="chain"> <param name="actionName">${appId}_dynamicDisplayRs</param> <param name="namespace">/app</param> </result> </action> <action name="dynamicDisplay" class="reportAction" method="dynamicDisplay"> <result> /common/dynamic_display.jsp </result> </action> <action name="xDisplay" class="reportAction" method="xDisplay"> <result name="success"> /common/x_display.jsp </result> <result name="xExport" type="redirectAction"> <param name="actionName">xExport</param> <param name="appId">${appId}</param> <param name="uuid">${uuid}</param> <param name="type">${exportType}</param> </result> </action> <action name="xDisplayPiece" class="reportAction" method="xDisplayPiece"> <result name="success"> /common/x_display_piece.jsp </result> </action> <action name="xExport" class="xExportAction"> <result type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> <param name="contentDisposition">attachment;filename="${fileName}"</param> </result> </action> <action name="flex" class="reportAction" method="flex"> <result> /common/flex.jsp </result> </action> <action name="export" class="exportAction"> <result type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> </result> </action> <action name="docRemark" class="reportAction" method="docRemark"> <result type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> </result> </action> <action name="tableDisplay" class="tablePagingAction" method="pading"> <result> /common/dynamic_table.jsp </result> </action> <!-- 文件輸出模組應用 --> <action name="dm" class="reportAction" method="dataModule"> <result type="chain"> <param name="actionName">dm</param> <param name="namespace">/app</param> </result> </action> <action name="upload*" class="uploadReportAction"> <result> /common/upload{1}_report.jsp </result> </action> </package> <!-- 瀏覽器相容相關配置 --> <package name="browser" namespace="/browser" extends="global"> <action name="compatible"> <result>/browser/compatible.html</result> </action> <action name="download" class="browserAction" method="download"> <result name="file" type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> <param name="contentDisposition">attachment;filename="${fileName}"</param> </result> <result name="file_not_fund"> /common/fileNotFund.jsp </result> </action> </package> <package name="json" namespace="/" extends="json-default"> <action name="textUpload" class="textUploadAction"> <result type="json"> <param name="root">result</param> <param name="contentType">text/html</param> </result> </action> <action name="search" class="searchAction"> <result type="json"> <param name="root">result</param> <param name="contentType">text/html</param> </result> </action> <action name="getBondsByType" class="bondInfoAction" method="getBondsByType"> <result type="json"> <param name="root">result</param> <param name="contentType">text/html</param> </result> </action> <!-- hkk 6/30 --> <action name="*_json_*" class="{1}Action" method="{2}"> <result type="json"> <param name="root">result</param> <param name="contentType">text/html</param> </result> </action> </package> <!-- portal add by lzq --> <package name="portal-login-json" namespace="/portalLogin" extends="json-default"> <action name="*_json_*" class="{1}Action" method="{2}"> <result type="json"> <param name="root">result</param> <param name="contentType">text/html</param> </result> </action> </package> <package name="portal-login" namespace="/portalLogin" extends="global"> <action name="browser"> <result>/portal/browser.html</result> </action> </package> <package name="portal-json" namespace="/portal" extends="json-default"> <action name="*_json_*" class="{1}Action" method="{2}"> <result type="json"> <param name="root">result</param> <param name="contentType">text/html</param> </result> </action> <action name="upload*" class="UploadAction" method="{1}"> <result type="json"> <param name="contentType">text/html</param> </result> </action> </package> <package name="portal" namespace="/portal" extends="global"> <action name="index" class="IndexAction" method="portalInput"> <result>/portal/index.html</result> </action> <action name="admin"> <result>/portal/admin.html</result> </action> <action name="notAuthority"> <result>/portal/notAuthority.html</result> </action> <action name="signout"> <result>/portal/signout.html</result> </action> <action name="login"> <result>/portal/login.html</result> </action> <action name="user"> <result>/portal/user.html</result> </action> <action name="password"> <result>/portal/password.html</result> </action> <action name="help"> <result>/portal/help.html</result> </action> <action name="enter"> <result>/portal/enter.html</result> </action> <action name="system_frame_*"> <result>/portal/system/{1}.html</result> </action> </package> <package name="app-json" namespace="/app" extends="json-default"> <action name="*_json_*" class="{1}ReportAction" method="{2}"> <result type="json"> <param name="root">result</param> <param name="contentType">text/html</param> </result> </action> </package> <package name="app" namespace="/app" extends="global"> <action name="*_report" class="{1}ReportAction" method="reportInput"> <result> /app/report/{1}.jsp </result> </action> <action name="*_son_report_*" class="{1}ReportAction" method="reportSonInput"> <result> /app/report/{1}_{2}.jsp </result> </action> <action name="*_html_report_*" class="{1}ReportAction" method="reportHtmlInput"> <result>/app/report/{1}_{2}.html</result> </action> <action name="*_dynamicDisplayRs" class="{1}ReportAction" method="diy"> <result> /common/dynamic_display.jsp </result> </action> <action name="*_display" class="{1}ReportAction"> <result>/app/display/{1}_display.jsp</result> </action> <action name="*_region_*" class="{1}ReportAction" method="{2}"> <result>/app/display/{1}_region_{2}.jsp</result> </action> <action name="*_export" class="{1}ReportAction" method="export"> <result type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> </result> <result name="file" type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> <param name="contentDisposition">attachment;filename="${fileName}"</param> </result> <result name="file_not_fund"> /common/fileNotFund.jsp </result> </action> <!-- hkk 6/30 --> <action name="dm_*" class="DMReportAction" method="{1}"> <result>/app/report/dm/{1}.jsp</result> <result name="download" type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> </result> </action> </package> <package name="dm" namespace="/" extends="global"> <action name="nav" class="DMReportAction"> <result>/mod/dm/nav.jsp</result> </action> </package> <package name="olap" namespace="/" extends="global"> <action name="toOlap" class="reportAction" method="olap"> <result type="chain"> <param name="actionName">${appId}Olap</param> <param name="namespace">/</param> </result> </action> <action name="olap_*" class="reportAction" method="olap"> <result type="chain"> <param name="actionName">${appId}Olap_{1}</param> <param name="namespace">/</param> </result> </action> <action name="*Olap" class="{1}OlapAction"> <result name="success"> /olap/olap.jsp </result> <result name="error"> /olap/olap_error.jsp </result> </action> <action name="*Olap_*" class="{1}OlapAction" method="{2}"> <result> /olap/olap_report.jsp </result> </action> <action name="*OlapExport_*" class="{1}OlapAction" method="{2}"> <result type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> </result> </action> </package> <package name="doc" namespace="/" extends="global"> <action name="toDocSearch" class="reportAction" method="docSearch"> <result type="chain"> <param name="actionName">${appId}DocSearch</param> <param name="namespace">/</param> </result> </action> <action name="*DocSearch" class="{1}DocSearchAction"> <result> /common/doc_search.jsp </result> </action> <action name="*DocExport" class="{1}DocSearchAction" method="export"> <result type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> </result> </action> <action name="*DocExportByHand" class="{1}DocSearchAction" method="exportByHand"> <result type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> </result> </action> </package> <package name="upload" namespace="/upload" extends="global"> <action name="*File" class="uploadReportAction" method="{1}File"> <result type="stream"> <param name="allowCaching">false</param> <param name="inputName">fileStream</param> </result> </action> <action name="*" class="uploadReportAction" method="{1}"> <result>/common/upload_{1}.jsp</result> </action> </package> <package name="admin" namespace="/admin" extends="json-default"> <action name="index"> <result> /admin/index.jsp </result> </action> <action name="*_region_*" class="{1}Action" method="{2}"> <result>/admin/{1}_region_{2}.jsp</result> </action> <action name="*_*" class="{1}Action" method="{2}"> <result type="json"> <param name="root">result</param> <param name="contentType">text/html</param> </result> </action> </package> </struts>