1. 程式人生 > >struts2學習筆記2

struts2學習筆記2

serveltAPI裡面有什麼?Web容器提供的各種內建物件,request,session,application等。struts2要獲取這類物件需要:1.ActionContext(推薦)                                               2.ServletActionContext(可以獲取HttpServletRequest等)                                               3.特定介面ActionContext包含了每個請求的引數值棧:struts2提供的一個儲存區域,是一個棧結構,用來儲存Action例項。OGNLO(物件圖導航語言),類似於JSTL,用來訪問值棧中的資料。區域性型別轉換:定義一個類繼承“DefaultTypeConvert”,然後重寫“public Object convertValue(Object value, Class toType)”注意:value是一個字串陣列,如果要轉換的型別是Date,需要手動匯入java.util.Date.定義好轉換器後,需要在Action同目錄下建立與該Action對應的配置檔案“Action類名-conversion.properties”例如:birthday = com.converter(包名).DataConverter(類名)以上只能轉換指定Action中的資料型別。區域性型別轉換:
全域性型別的配置檔案需要“work-conversion.properties”命名,然後需要將此檔案放入src根目錄。例如:java.util.Date = com.converter.DataConverter有時需要自定義攔截器:一般繼承AbstracInterceptor抽象類。注意:在 action中加入了自定義的攔截器後,需要在後面還要加上預設的攔截器“defaultStack”.action攔截只能攔截部分程式碼,並且當action過多會出現大量重複程式碼,這時候需要出現全域性攔截。注意:在使用全域性攔截器時,由於攔截器的值只能由一個,因此在所有被攔截的Action中都需要配置與攔截器返回值相同的result,也就是說需要將此返回值配置為全域性結果集(global-result),否則攔截器會攔截所有的action。
另外:有些action不希望被攔截,例如登陸,登出,註冊等。兩種辦法;1.將這些功能直接放入jsp頁面,不放入action。不要暴露實際操作的jsp頁面。                  2.將這些功能的action直接放入另外一個包中,或者使用方法攔截。(定義攔截器執行MethodFilterInceptor,另外,在interceptor-ref的子節點中,在param name=“includeMethods 中新增指定的被攔截的方法 param name=“includeMethods 中指定不攔截哪些方法)