struts2框架的工作原理:
Struts2的檔案詳解:
1. web.xml
過濾器遇到.action字尾的請求就會攔截處理,當遇到.jsp .html等就會放行。
2. struts.xml
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" > <struts> <!-- include節點是struts2中元件化的方式 可以將每個功能模組獨立到一個xml配置檔案中 然後用include節點引用 --> <include file="struts-default.xml"></include> <!-- package提供了將多個Action組織為一個模組的方式 package的名字必須是唯一的 package可以擴充套件 當一個package擴充套件自 另一個package時該package會在本身配置的基礎上加入擴充套件的package 的配置 父package必須在子package前配置 name:package名稱 extends:繼承的父package名稱 abstract:設定package的屬性為抽象的 抽象的package不能定義action 值true:false namespace:定義package名稱空間 該名稱空間影響到url的地址,例如此名稱空間為/test那麼訪問是的地址為http://localhost:8080/struts2/test/XX.action --> <package name="com.kay.struts2" extends="struts-default" namespace="/test"> <interceptors> <!-- 定義攔截器 name:攔截器名稱 class:攔截器類路徑 --> <interceptor name="timer" class="com.kay.timer"></interceptor> <interceptor name="logger" class="com.kay.logger"></interceptor> <!-- 定義攔截器棧 --> <interceptor-stack name="mystack"> <interceptor-ref name="timer"></interceptor-ref> <interceptor-ref name="logger"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 定義預設的攔截器 每個Action都會自動引用 如果Action中引用了其它的攔截器 預設的攔截器將無效 --> <default-interceptor-ref name="mystack"></default-interceptor-ref> <!-- 全域性results配置 --> <global-results> <result name="input">/error.jsp</result> </global-results> <!-- Action配置 一個Action可以被多次對映(只要action配置中的name不同) name:action名稱 class: 對應的類的路徑 method: 呼叫Action中的方法名 --> <action name="hello" class="com.kay.struts2.Action.LoginAction"> <!-- 引用攔截器 name:攔截器名稱或攔截器棧名稱 --> <interceptor-ref name="timer"></interceptor-ref> <!-- 節點配置 name : result名稱 和Action中返回的值相同 type : result型別 不寫則選用superpackage的type struts-default.xml中的預設為dispatcher --> <result name="success" type="dispatcher">/talk.jsp</result> <!-- 引數設定 name:對應Action中的get/set方法 --> <param name="url">http://www.sina.com</param> </action> </package> </struts>
3. struts.properties
放置路徑與struts.xml相同(Java Resources-src中)
關於配置的詳細說明:struts.properties配置詳解