<url>中的 *.action *.do /*

本文介绍了几种常见的URL模式匹配方法,包括以.action和.do结尾的请求处理方式,以及通配符/*用于捕获所有请求的场景。这对于理解Web应用中如何路由不同类型的请求非常有用。

<url-pattern>   </url-pattern>

*.action   处理以 .action 结尾的请求

*.do   处理以 .do 结尾的请求

/*   处理所有请求

逐行解释下面代码:<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"> <xwork> <package name="developer" extends="default"> <action name="changeUserLogin" class="com.smics.apps.erc.action.developer.ChangeUserLogin"> <result name="success" type="redirect">/user/toDo.action</result> </action> </package> <package name="erc" extends="default"> <action name="index" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="redirect">/user/toDo.action</result> </action> </package> <package name="user" extends="default" namespace="/user"> <action name="checkFormData" class="com.smics.apps.erc.action.user.CheckBack"> <result name="success"> <param name="contentType">text/xml</param> <param name="location">/user/checkRuncardStatus.ftl</param> </result> </action> <action name="viewLockInfo" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/unlockList.ftl</result> </action> <action name="unlockRuncard" class="com.smics.apps.erc.action.user.UnlockRuncard"> <interceptor-ref name="validationStack"/> <result name="success" type="redirect">/user/viewLockInfo.action?requestFormId=${requestForm.id}</result> <result name="input" type="freemarker">/user/unlockList.ftl</result> </action> <action name="withdrawLockRuncard" class="com.smics.apps.erc.action.user.WithdrawLockRuncard"> <interceptor-ref name="validationStack"/> <result name="success" type="redirect">/user/viewLockInfo.action?requestFormId=${requestForm.id}</result> <result name="input" type="freemarker">/user/unlockList.ftl</result> </action> <action name="eRuncardRule" class="com.smics.apps.erc.action.user.stepForm.RuncardInfoRule"> <result name="success" type="freemarker">/user/compareResult.ftl</result> <result name="input" type="freemarker">/user/previewRequestForm.ftl</result> </action> <action name="stepCompareRule" class="com.smics.apps.erc.action.user.stepForm.StepCompareRule"> <result name="success" type="freemarker">/user/stepCompareRule.ftl</result> </action> <action name="viewCompareInfo" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/compareResult.ftl</result> </action> <action name="checkStrLotStatus" class="com.smics.apps.erc.action.user.CheckStrLotStatus"> <result name="success" type="freemarker">/user/viewRequestForm.ftl</result> <result name="input" type="freemarker">/user/viewRequestForm.ftl</result> </action> <action name="showStepInfo" class="com.smics.apps.erc.action.user.ShowStepList"> <result name="success" type="freemarker">/user/showStepInfo.ftl</result> </action> <action name="updateWaferGroupResult" class="com.smics.apps.erc.action.user.UpdateWaferGroupResult"> <result name="success" type="redirect">viewUpdateRequestForm.action?requestFormId=${requestForm.id}</result> <result name="input" type="freemarker">/user/createNewErc.ftl</result> <result name="repeat" type="redirect">toDo.action</result> </action> <action name="copyRuncard" class="com.smics.apps.erc.action.user.CopyRuncard"> <result name="success" type="freemarker">/user/createNewErc.ftl</result> </action> <action name="viewCreateNewErc" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/viewCreateNewErc.ftl</result> </action> <action name="createNewErc" class="com.smics.apps.erc.action.user.CreateNewErc"> <!--result name="success" type="freemarker">/user/createNewErc.ftl</result--> <result name="success" type="redirect">viewUpdateRequestForm.action?requestFormId=${requestForm.id}</result> <result name="input" type="freemarker">/user/viewCreateNewErc.ftl</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> <action name="updateRequestForm" class="com.smics.apps.erc.action.user.UpdateRequestForm"> <interceptor-ref name="validationStack"/> <result name="success" type="freemarker">/user/previewRequestForm.ftl</result> <!--result name="eRuncardRuleAll" type="redirect">eRuncardRuleAll.action?requestFormId=${requestForm.id}</result--> <result name="input" type="freemarker">/user/createNewErc.ftl</result> <!--result name="input" type="redirect">viewUpdateRequestForm.action?requestFormId=${requestForm.id}</result--> <result name="signoff" type="freemarker">/user/viewWorkFlowEntry.ftl</result> </action> <action name="viewUpdateRequestForm" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/createNewErc.ftl</result> <result name="input" type="freemarker">/user/createNewErc.ftl</result> </action> <action name="saveRequestForm" class="com.smics.apps.erc.action.user.SaveRequestForm"> <!--result name="success" type="freemarker">/user/createNewErc.ftl</result--> <result name="success" type="redirect">viewUpdateRequestForm.action?requestFormId=${requestForm.id}</result> <result name="input" type="freemarker">/user/createNewErc.ftl</result> <result name="repeat" type="redirect">toDo.action</result> </action> <action name="updateHoldLotInfo" class="com.smics.apps.erc.action.user.UpdateHoldLotInfo"> <!--result name="success" type="freemarker">/user/createNewErc.ftl</result--> <result name="success" type="redirect">viewUpdateRequestForm.action?requestFormId=${requestForm.id}</result> <result name="input" type="freemarker">/user/createNewErc.ftl</result> <result name="repeat" type="redirect">toDo.action</result> </action> <action name="updateFormToClearLotInfo" class="com.smics.apps.erc.action.user.UpdateFormToClearLotInfo"> <!--result name="success" type="freemarker">/user/createNewErc.ftl</result--> <result name="success" type="redirect">viewUpdateRequestForm.action?requestFormId=${requestForm.id}</result> <result name="input" type="freemarker">/user/createNewErc.ftl</result> <result name="repeat" type="redirect">toDo.action</result> </action> <action name="updateFormForCompletedStepNo" class="com.smics.apps.erc.action.user.UpdateFormForCompletedStepNo"> <!--result name="success" type="freemarker">/user/createNewErc.ftl</result--> <result name="success" type="redirect">viewUpdateRequestForm.action?requestFormId=${requestForm.id}</result> <result name="input" type="freemarker">/user/createNewErc.ftl</result> <result name="repeat" type="redirect">toDo.action</result> </action> <action name="updateLotInfo" class="com.smics.apps.erc.action.user.UpdateLotInfo"> <!--result name="success" type="freemarker">/user/createNewErc.ftl</result--> <result name="success" type="redirect">viewUpdateRequestForm.action?requestFormId=${requestForm.id}</result> <result name="input" type="freemarker">/user/createNewErc.ftl</result> <result name="repeat" type="redirect">toDo.action</result> </action> <action name="showSelectModule" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/includeSelectModule.ftl</result> </action> <action name="showSelectMfg" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/includeSelectMfg.ftl</result> </action> <action name="showSingleSelectMfg" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/includeSingleSelectMfg.ftl</result> </action> <action name="showSelectE1" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/includeSelectE1.ftl</result> </action> <action name="searchLotOwnerId" class="com.smics.apps.erc.action.user.SearchLotOwnerId"> <result name="success" type="freemarker">/user/searchLotOwnerIdResult.ftl</result> </action> <action name="toDo" class="com.smics.apps.erc.action.user.ToDo"> <result name="success" type="freemarker">/user/toDo.ftl</result> <result name="input" type="freemarker">/user/toDo.ftl</result> </action> <action name="etAction" class="com.smics.apps.erc.action.user.etAction"> <result name="success" type="freemarker">/user/etcToDo.ftl</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> <action name="processed" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/processed.ftl</result> </action> <action name="myDrafts" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/myDrafts.ftl</result> </action> <action name="deleteDraft" class="com.smics.apps.erc.action.user.DeleteDraft"> <result name="success" type="redirect">myDrafts.action</result> <result name="input" type="freemarker">/user/myDrafts.ftl</result> </action> <action name="viewRequestForm" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/viewRequestForm.ftl</result> </action> <action name="submitRequestForm" class="com.smics.apps.erc.action.user.stepForm.SubmitRequestForm"> <interceptor-ref name="waitSession"/> <result name="success" type="redirect">/user/toDo.action</result> <result name="input" type="freemarker">/user/previewRequestForm.ftl</result> <result name="wait" type="freemarker">/user/waitSession.ftl</result> </action> <action name="continueRuncard" class="com.smics.apps.erc.action.user.stepForm.ContinueRuncard"> <interceptor-ref name="waitSession"/> <result name="success" type="redirect">/search/myApplications.action</result> <result name="input" type="freemarker">/user/previewRequestForm.ftl</result> </action> <action name="cancelRuncard" class="com.smics.apps.erc.action.user.stepForm.CancelRuncard"> <interceptor-ref name="waitSession"/> <result name="success" type="redirect">/user/myDrafts.action</result> <result name="input" type="freemarker">/user/previewRequestForm.ftl</result> </action> <action name="viewWorkFlowEntry" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/viewWorkFlowEntry.ftl</result> <result name="input" type="freemarker">/user/viewRequestForm.ftl</result> </action> <action name="deleteLastLog" class="com.smics.apps.erc.action.user.DeleteLastLog"> <!--result name="success" type="freemarker">/user/viewWorkFlowEntry.ftl</result--> <result name="success" type="redirect">/user/viewWorkFlowEntry.action?requestFormId=${requestForm.id}</result> </action> <action name="signOffRequestForm" class="com.smics.apps.erc.action.user.SignOffRequestForm"> <interceptor-ref name="waitSession"/> <result name="success" type="redirect">/user/toDo.action</result> <result name="bedone" type="freemarker">/user/viewRequestForm.ftl</result> <result name="input" type="freemarker">/user/viewWorkFlowEntry.ftl</result> <result name="wait" type="freemarker">/user/waitSession.ftl</result> </action> <action name="withDraw" class="com.smics.apps.erc.action.user.ApplicantWithDraw"> <interceptor-ref name="waitSession"/> <result name="success" type="redirect">/search/myApplications.action</result> <result name="input" type="freemarker">/user/viewRequestForm.ftl</result> <result name="wait" type="freemarker">/user/waitSession.ftl</result> </action> <action name="keyinWithDraw" class="com.smics.apps.erc.action.user.KeyinWithdraw"> <interceptor-ref name="waitSession"/> <result name="success" type="freemarker">/user/viewRequestForm.ftl</result> <result name="input" type="freemarker">/user/viewRequestForm.ftl</result> <result name="wait" type="freemarker">/user/waitSession.ftl</result> </action> <action name="keyInCloseRuncard" class="com.smics.apps.erc.action.user.KeyInCloseRuncard"> <result name="success" type="freemarker">/user/viewRequestForm.ftl</result> <result name="input" type="freemarker">/user/viewRequestForm.ftl</result> </action> <action name="checkStepNoExistInFecp" class="com.smics.apps.erc.action.user.CheckStepNoExistInFecp"> <result name="success" type="redirect">/success.xml</result> <result name="error" type="redirect">/error.xml</result> </action> <!-- for qtime --> <action name="comeinQTime" class="com.smics.apps.erc.action.user.ComeinQTimeAction"> <result name="success" type="freemarker">/user/qtime.ftl</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> <action name="comeinMainFlowQTime" class="com.smics.apps.erc.action.user.ComeinMainFlowQTimeAction"> <result name="success" type="freemarker">/user/qtimeMainFlow.ftl</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> <action name="addQTime" class="com.smics.apps.erc.action.user.AddQTimeAction"> <result name="success" type="redirect">comeinQTime.action?requestFormId=${requestForm.id}&groupResultId=${groupResult.id}</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> <action name="deleteQTime" class="com.smics.apps.erc.action.user.DeleteQTimeAction"> <result name="success" type="redirect">comeinQTime.action?requestFormId=${requestForm.id}&groupResultId=${groupResult.id}</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> <action name="addMainFlowQTime" class="com.smics.apps.erc.action.user.AddMainFlowQTimeAction"> <result name="success" type="redirect">comeinMainFlowQTime.action?requestFormId=${requestForm.id}&groupResultId=${groupResult.id}</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> <action name="deleteMainFlowQTime" class="com.smics.apps.erc.action.user.DeleteMainFlowQTimeAction"> <result name="success" type="redirect">comeinMainFlowQTime.action?requestFormId=${requestForm.id}&groupResultId=${groupResult.id}</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> <!-- for qtime --> <action name="newRequest" class="com.smics.apps.erc.action.user.NewRequestAction"> <result name="success" type="freemarker">/user/viewCreateNewErc.ftl</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> <action name="popUpFetchStepInfo" class="com.smics.apps.erc.action.user.PEFetchStepComeinAction"> <result name="success" type="freemarker">/user/popUpFetchStepInfo.ftl</result> <result name="error" type="freemarker">/user/error.ftl</result> </action> </package> <!--StepForm function--> <package name="stepForm" extends="default" namespace="/stepForm"> <action name="showSpec" class="com.smics.apps.erc.action.user.stepForm.ShowSpec"> <result name="success" type="freemarker">/user/stepForm/viewSpecForm.ftl</result> <result name="input" type="freemarker">/user/stepForm/viewSpecForm.ftl</result> </action> <action name="viewStepForm" class="com.smics.apps.erc.action.user.stepForm.BaseStepFormAction"> <result name="success" type="freemarker">/user/stepForm/viewStepForm.ftl</result> </action> <action name="addStepForm" class="com.smics.apps.erc.action.user.stepForm.AddStepForm"> <result name="success" type="redirect">viewStepForm.action?requestFormId=${requestForm.id}&command=${command}&stepForm.area=${command}</result> <result name="input" type="freemarker">/user/stepForm/viewStepForm.ftl</result> </action> <action name="deleteStepForm" class="com.smics.apps.erc.action.user.stepForm.DeleteStepForm"> <result name="success" type="redirect">viewStepForm.action?requestFormId=${requestForm.id}&command=${command}&stepForm.area=${command}</result> </action> <action name="showOvl" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/stepForm/includeOvlData.ftl</result> </action> <action name="showWaferId" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/stepForm/waferAndSlotId.ftl</result> </action> <action name="showWaferIdStr" class="com.smics.apps.erc.action.user.stepForm.BaseStepFormAction"> <result name="success" type="freemarker">/user/stepForm/waferAndSlotIdStr.ftl</result> </action> <action name="showSlotId" class="com.smics.apps.erc.action.user.UserBaseAction"> <result name="success" type="freemarker">/user/stepForm/waferAndSlotId.ftl</result> </action> <action name="showSlotIdStr" class="com.smics.apps.erc.action.user.stepForm.BaseStepFormAction"> <result name="success" type="freemarker">/user/stepForm/waferAndSlotIdStr.ftl</result> </action> <action name="changeArea" class="com.smics.apps.erc.action.user.stepForm.ChangeArea"> <result name="success" type="freemarker">/user/stepForm/viewStepForm.ftl</result> </action> <action name="printRuncard" class="com.smics.apps.erc.action.user.stepForm.PrintRuncard"> <result name="success" type="freemarker">/user/stepForm/printRuncard.ftl</result> <result name="error" type="freemarker">/user/stepForm/error.ftl</result> </action> <action name="viewPrintRuncard" class="com.smics.apps.erc.action.user.stepForm.ViewPrintRuncard"> <result name="success" type="freemarker">/user/stepForm/viewPrintRuncard.ftl</result> <result name="input" type="freemarker">/user/stepForm/viewRequestForm.ftl</result> </action> <action name="updateStepInfo" class="com.smics.apps.erc.action.user.stepForm.UpdateStepInfo"> <result name="success" type="freemarker">/user/stepForm/viewStepForm.ftl</result> <result name="input" type="freemarker">/user/stepForm/viewStepForm.ftl</result> </action> </package> <!--Admin function--> <package name="admin" extends="default" namespace="/admin"> <action name="viewSpecialInfo" class="com.smics.apps.erc.action.admin.specialDuty.BaseDutyInfo"> <result name="success" type="freemarker">/specialDuty/viewSpecialDutyInfo.ftl</result> </action> <action name="addSpecialEmployee" class="com.smics.apps.erc.action.admin.specialDuty.AddSpecialEmployee"> <result name="success" type="redirect">viewSpecialInfo.action</result> <result name="input" type="freemarker">/specialDuty/viewSpecialDutyInfo.ftl</result> </action> <action name="deleteSpecialDutyInfo" class="com.smics.apps.erc.action.admin.specialDuty.DeleteSpecialDutyInfo"> <result name="success" type="redirect">viewSpecialInfo.action</result> <result name="input" type="freemarker">/specialDuty/viewSpecialDutyInfo.ftl</result> </action> <action name="viewMaintainInfo" class="com.smics.apps.erc.action.admin.QEMaintain.BaseQEMaintain"> <interceptor-ref name="validationStack"/> <result name="success" type="freemarker">/QEMaintain/viewMaintainInfo.ftl</result> </action> <action name="maintainInfo" class="com.smics.apps.erc.action.admin.QEMaintain.MaintainInfo"> <result name="success" type="redirect">viewMaintainInfo.action</result> <result name="input" type="freemarker">/QEMaintain/viewMaintainInfo.ftl</result> </action> <action name="index" class="com.smics.apps.erc.action.admin.BaseSuperAdminActon"> <result name="success" type="freemarker">/admin/index.ftl</result> </action> <action name="viewDefineFab" class="com.smics.apps.erc.action.admin.BaseAdminAction"> <result name="success" type="freemarker">/admin/defineFab.ftl</result> </action> <action name="defineFab" class="com.smics.apps.erc.action.admin.SetFabId"> <interceptor-ref name="validationStack"/> <result name="success" type="redirect">viewDefineFab.action</result> <result name="input" type="freemarker">/admin/defineFab.ftl</result> </action> <action name="viewAreaList" class="com.smics.apps.erc.action.admin.BaseAdminAction"> <result name="success" type="freemarker">/admin/addAreaList.ftl</result> </action> <action name="addAreaList" class="com.smics.apps.erc.action.admin.AddAreaList"> <interceptor-ref name="validationStack"/> <result name="success" type="redirect">viewAreaList.action</result> <result name="input" type="freemarker">/admin/addAreaList.ftl</result> </action> <action name="deleteAreaList" class="com.smics.apps.erc.action.admin.DeleteAreaList"> <result name="success" type="redirect">viewAreaList.action</result> <result name="error" type="freemarker">/admin/addAreaList.ftl</result> </action> <action name="viewRoleMembers" class="com.smics.apps.erc.action.admin.BaseAdminAction"> <result name="success" type="freemarker">/admin/addRoleMembers.ftl</result> </action> <action name="addRoleMember" class="com.smics.apps.erc.action.admin.AddRoleMember"> <result name="success" type="redirect">viewRoleMembers.action</result> <result name="input" type="freemarker">/admin/addRoleMembers.ftl</result> </action> <action name="deleteRoleMember" class="com.smics.apps.erc.action.admin.DeleteRoleMember"> <result name="success" type="redirect">viewRoleMembers.action</result> <result name="error" type="freemarker">/admin/addRoleMembers.ftl</result> </action> <action name="viewMaximumOfSteps" class="com.smics.apps.erc.action.admin.BaseAdminAction"> <result name="success" type="freemarker">/admin/addMaximumOfSteps.ftl</result> </action> <action name="addMaximumOfSteps" class="com.smics.apps.erc.action.admin.AddMaximumOfSteps"> <result name="success" type="redirect">viewMaximumOfSteps.action</result> <result name="input" type="freemarker">/admin/addMaximumOfSteps.ftl</result> </action> <action name="deleteMaximumOfSteps" class="com.smics.apps.erc.action.admin.DeleteMaximumOfSteps"> <result name="success" type="redirect">viewMaximumOfSteps.action</result> <result name="error" type="freemarker">/admin/addMaximumOfSteps.ftl</result> </action> <action name="viewChangOwnerInfo" class="com.smics.apps.erc.action.admin.BaseAdminAction"> <result name="success" type="freemarker">/admin/changeCurrentOwner.ftl</result> </action> <action name="changeCurrentOwner" class="com.smics.apps.erc.action.admin.ChangeSignerOff"> <result name="success" type="freemarker">/admin/changeCurrentOwner.ftl</result> <result name="input" type="freemarker">/admin/changeCurrentOwner.ftl</result> </action> <action name="viewCancelRuncardForm" class="com.smics.apps.erc.action.admin.BaseAdminAction"> <result name="success" type="freemarker">/admin/cancelRuncardByType.ftl</result> </action> <action name="cancelRuncardByType" class="com.smics.apps.erc.action.admin.CancelRuncardByType"> <interceptor-ref name="validationStack"/> <result name="success" type="freemarker">/admin/cancelRuncardByType.ftl</result> <result name="view" type="redirect">/user/viewRequestForm.action?requestFormId=${ercFormId}&strMessage=${message}</result> <result name="input" type="freemarker">/admin/cancelRuncardByType.ftl</result> </action> <action name="viewChangRuncardStatus" class="com.smics.apps.erc.action.admin.BaseAdminAction"> <result name="success" type="freemarker">/admin/viewChangRuncardStatus.ftl</result> </action> <action name="changeRuncardStatus" class="com.smics.apps.erc.action.admin.ChangeRCStatus"> <interceptor-ref name="validationStack"/> <result name="success" type="freemarker">/admin/viewChangRuncardStatus.ftl</result> <result name="input" type="freemarker">/admin/viewChangRuncardStatus.ftl</result> </action> <action name="viewReportYear" class="com.smics.apps.erc.action.admin.BaseAdminAction"> <result name="success" type="freemarker">/admin/reportYear.ftl</result> </action> <action name="addReportYear" class="com.smics.apps.erc.action.admin.AddReportYear"> <interceptor-ref name="validationStack"/> <result name="success" type="redirect">viewReportYear.action</result> <result name="input" type="freemarker">/admin/reportYear.ftl</result> </action> <action name="deleteReportYear" class="com.smics.apps.erc.action.admin.DeleteReportYear"> <result name="success" type="redirect">viewReportYear.action</result> <result name="error" type="freemarker">/admin/reportYear.ftl</result> </action> <action name="viewBrotherOrgs" class="com.smics.apps.erc.action.admin.BaseAdminAction"> <result name="success" type="freemarker">admin/brotherOrgs.ftl</result> <result name="error" type="freemarker">/admin/brotherOrgs.ftl</result> </action> <action name="addBrotherOrg" class="com.smics.apps.erc.action.admin.AddBrotherOrg"> <result name="success" type="redirect">viewBrotherOrgs.action</result> <result name="error" type="freemarker">/admin/brotherOrgs.ftl</result> </action> <action name="deleteBrotherOrg" class="com.smics.apps.erc.action.admin.DeleteBrotherOrg"> <result name="success" type="redirect">viewBrotherOrgs.action</result> <result name="error" type="freemarker">/admin/brotherOrgs.ftl</result> </action> </package> <!--MFG Manager function--> <package name="mfgAssigner" extends="default" namespace="/mfgAssigner"> <action name="viewMaintainAssigner" class="com.smics.apps.erc.action.mfgAssigner.BaseAssignerAction"> <interceptor-ref name="validationStack"/> <result name="success" type="freemarker">/mfgAssigner/maintainAssigner.ftl</result> </action> <action name="maintainAssigner" class="com.smics.apps.erc.action.mfgAssigner.MaintainAssigner"> <result name="success" type="redirect">viewMaintainAssigner.action</result> <result name="input" type="freemarker">/mfgAssigner/maintainAssigner.ftl</result> </action> <action name="viewAssigner" class="com.smics.apps.erc.action.mfgAssigner.BaseAssignerAction"> <result name="success" type="freemarker">/mfgAssigner/updateAssigner.ftl</result> </action> <action name="updateAssigner" class="com.smics.apps.erc.action.mfgAssigner.UpdateAssigner"> <result name="success" type="redirect">viewMaintainAssigner.action</result> <result name="input" type="freemarker">/mfgAssigner/maintainAssigner.ftl</result> </action> <action name="deleteAssigner" class="com.smics.apps.erc.action.mfgAssigner.DeleteAssigner"> <result name="success" type="redirect">viewMaintainAssigner.action</result> <result name="input" type="freemarker">/mfgAssigner/maintainAssigner.ftl</result> </action> </package> <!--Search function--> <package name="search" extends="default" namespace="/search"> <action name="index" class="com.smics.apps.erc.action.search.SearchBaseAction"> <result name="success" type="freemarker">/search/index.ftl</result> </action> <action name="doSearch" class="com.smics.apps.erc.action.search.DoSearch"> <result name="success" type="freemarker">/search/index.ftl</result> </action> <action name="searchResultToExcel" class="com.smics.apps.erc.action.search.DoSearch"> <result name="success" type="freemarker"> <param name="contentType">application/vnd.ms-excel</param> <param name="location">/search/exportToExcel.ftl</param> </result> <result name="input" type="freemarker">/search/indexForReport.ftl</result> </action> <action name="reportIndex" class="com.smics.apps.erc.action.search.SearchBaseAction"> <result name="success" type="freemarker">/search/report.ftl</result> </action> <action name="exportReportByMode" class="com.smics.apps.erc.action.search.ReportByMode"> <result name="week" type="excel">/search/reportWeek.xls</result> <result name="month" type="excel">/search/reportMonth.xls</result> <result name="input" type="freemarker">/search/report.ftl</result> </action> <action name="myApplications" class="com.smics.apps.erc.action.search.MyApplication"> <result name="success" type="freemarker">/search/myApplications.ftl</result> </action> <action name="processed" class="com.smics.apps.erc.action.search.Processed"> <result name="success" type="freemarker">/search/processed.ftl</result> </action> </package> </xwork>
最新发布
08-30
这是一个 **XWork 配置文件**(`xwork.xml`),用于配置 Struts 1.x 或 XWork 框架中的 **Action 映射**,它定义了请求 URL 与 Java 类之间的映射关系,以及每个 Action 执行后返回的视图(页面)和跳转方式。 --- ## 🔍 文件结构解析 ### 第一行: ```xml <?xml version="1.0" encoding="ISO-8859-1"?> ``` - 这是 XML 文件的声明,指明了版本号为 1.0,字符编码为 ISO-8859-1(西欧字符集)。 --- ### 第二至五行: ```xml <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"> ``` - 定义了文档类型(DTD),说明这是一个符合 XWork 1.0 规范的 XML 文件。 - `PUBLIC` 表示该 DTD 是公开的。 - 最后是 DTD 的 URL,用于验证 XML 文件的结构是否正确。 --- ### 根标签: ```xml <xwork> <!-- packages and actions go here --> </xwork> ``` - `<xwork>` 是整个配置文件的根节点,表示这是一个 XWork 配置文件。 --- ## 📦 `<package>` 标签详解 ```xml <package name="developer" extends="default"> ``` - 每个 `<package>` 标签代表一个 **Action**,用于组织 Action。 - `name="developer"` 是包名。 - `extends="default"` 表示这个包继承自名为 `default` 的包(通常包含默认配置,如拦截器、结果类型等)。 --- ## 📌 `<action>` 标签详解 ```xml <action name="changeUserLogin" class="com.smics.apps.erc.action.developer.ChangeUserLogin"> <result name="success" type="redirect">/user/toDo.action</result> </action> ``` - `<action>` 定义一个 Action。 - `name="changeUserLogin"` 是 Action 的名称,对应 URL 为:`http://.../changeUserLogin.action` - `class="com.smics.apps.erc.action.developer.ChangeUserLogin"` 是该 Action 对应的 Java 类路径。 - `<result>` 表示 Action 执行后的跳转结果。 - `name="success"` 是返回结果名称(通常对应 `return "success"`)。 - `type="redirect"` 表示重定向。 - 内容 `/user/toDo.action` 是跳转地址。 --- ## 🔁 `<interceptor-ref>` 标签详解 ```xml <interceptor-ref name="validationStack"/> ``` - 拦截器引用,表示该 Action 使用了名为 `validationStack` 的拦截器栈。 - 拦截器用于在 Action 执行前后进行拦截处理,例如验证、权限控制等。 --- ## 🧱 `<result>` 标签详解 ```xml <result name="success" type="freemarker">/user/unlockList.ftl</result> ``` - `name="success"`:结果名称,对应 Action 返回值。 - `type="freemarker"`:使用 FreeMarker 模板引擎渲染页面。 - `/user/unlockList.ftl`:模板文件路径。 --- ## 📁 `<package>` 标签的 `namespace` 属性 ```xml <package name="user" extends="default" namespace="/user"> ``` - `namespace="/user"` 表示该包下的所有 Action 的 URL 前缀为 `/user/` - 例如,`name="toDo"` 的 Action URL 是:`/user/toDo.action` --- ## 🛠 示例分析 ### 示例 1:基本 Action 配置 ```xml <action name="toDo" class="com.smics.apps.erc.action.user.ToDo"> <result name="success" type="freemarker">/user/toDo.ftl</result> <result name="input" type="freemarker">/user/toDo.ftl</result> </action> ``` - URL:`/user/toDo.action` - 对应类:`com.smics.apps.erc.action.user.ToDo` - 成功返回 FreeMarker 模板 `/user/toDo.ftl` - `input` 结果通常用于表单验证失败时返回原页面。 --- ### 示例 2:重定向跳转 ```xml <result name="success" type="redirect">/user/viewUpdateRequestForm.action?requestFormId=${requestForm.id}</result> ``` - `type="redirect"` 表示重定向。 - `${requestForm.id}` 是 OGNL 表达式,会从 Action 中获取 `requestForm.id` 的值。 --- ### 示例 3:使用拦截器 ```xml <action name="submitRequestForm" class="com.smics.apps.erc.action.user.stepForm.SubmitRequestForm"> <interceptor-ref name="waitSession"/> <result name="success" type="redirect">/user/toDo.action</result> <result name="input" type="freemarker">/user/previewRequestForm.ftl</result> <result name="wait" type="freemarker">/user/waitSession.ftl</result> </action> ``` - 引用了拦截器 `waitSession` - 返回了三种结果:`success`、`input`、`wait` --- ### 示例 4:多个 `<package>` 分模块管理 ```xml <package name="admin" extends="default" namespace="/admin"> ``` - 管理员模块,URL 为 `/admin/xxx.action` --- ## ✅ 总结:关键配置项 | 标签 | 说明 | |------|------| | `<xwork>` | 根标签 | | `<package>` | Action 包,用于组织 Action | | `name` | 包名或 Action 名 | | `extends` | 继承的包 | | `namespace` | URL 命名空间 | | `<action>` | 定义一个 Action | | `class` | Action 对应的 Java 类 | | `<result>` | 定义返回结果 | | `name` | 结果名称(如 success、input) | | `type` | 结果类型(freemarker、redirect 等) | | `<interceptor-ref>` | 引用拦截器 | --- ## ✅ 该文件的作用 这个 `xwork.xml` 文件的作用是: - 配置所有 Action 的映射关系 - 定义每个 Action 的执行类和返回结果 - 通过拦截器实现通用逻辑(如验证、权限等) - 支持命名空间管理 URL - 使用 FreeMarker 模板引擎渲染页面 --- ## ❓相关问题 ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinat_36710456

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值