1. 程式人生 > >Strust2常見知識點

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>