Struts2day05學習筆記

1.自定義攔截器
   1.implements Interceptor
   2.extends AbstractInterceptor
  二) 在struts.xml中
    <interceptors>
      <interceptor name="xx" class="xx"/>
      ..
      <interceptor-stack name="xxx">
        <interceptor-ref name="xx">
      <param name="屬性">值</param>
    </interceptor-ref>
      </interceptor-stack>
    </interceptors>
  在Action中覆蓋攔截器中屬性值
    <interceptor-ref name="攔截器棧">
      <param name="攔截器.屬性">值</param>
    </interceptor-ref>

    對於方法過濾的攔截器
      extends MethodFilterInterceptor
    關鍵是在struts.xml中的配置
      <interceptor-ref name='x'>
      <!--不需要攔截的方法-->
        <param name="excludeMethods">方法名</param>
    <!--需要攔截-->
    <param name="includeMehtods"></param>
      </interceptor-ref>

2.表單的重複提交 token
  在頁面表單中使用<s:token></s:token>

3.文件的上傳
  頁面 <form enctype="multipart/form-data" method="post">
          File <input type="file" name="pic"/>
        </form>
  Action
     屬性 private File pic;
          private String picFileName;文件名稱
      private String picContentType;文件類型
     如何由邏輯路徑獲得絕對路徑
       1.implements ServletRequestAware/ServletContextAware
       2.ServletActionContext 工具類,獲得Servlet API

4.在src中提供struts.properties配置文件
  修改文件上傳異常的錯誤信息
    1.在src中創建 資源文件
       上傳文件太大
       struts.messages.error.file.too.large
       上傳的類型不允許
       struts.messages.error.content.type.not.allowed
    2.要再struts.xml中配置資源文件


5.Struts2.0的異常處理機制
  1.什麼是異常?軟件在開發和運行過程中可能遇到的錯誤。【對象】
  2.異常的種類?
   Check異常【檢測時異常】在編譯過程中必須進行處理(編譯器不通過)
      IOException / ClassNOTFoundException
   Runtime異常[運行時異常] 運行時出現的異常,在程序開發過程中不需要額外的處理
      NUllPOINException/ArrayOutofIndexException
   自定義異常
     如何定義異常
       1.寫一類繼承Exception/RuntimeException
        A  public class MyException extends Exception{   }
       繼承了Exception,檢測異常,必須進行處理 try...catch/throw
        B  public class MyExceptionA extends RuntimeException{}
       繼承了RuntimeException,運行時異常,不做處理
     如何定義異常的方式?
        現在java開發思路,主要的異常處理採用RuntimeException
      jdbc和hibernate

    3.如何處理異常
      try..catch:如果try塊中出現異常,交給catch塊處理,如果發生的異常在本類中能夠             處理則使用try..catch
      throw :     如果異常本類不能處理,將異常拋給調用者

   4.在J2EE體系中如何處理異常
     MVC模型:DB-->DAO-->BIZ-->Action
    DB數據庫:數據庫異常和java的關係不大,主要討論Dao/Biz/Action的異常處理
        DAO操作數據庫的異常:Dao層異常不能處理,拋給Biz層
    Biz Dao的異常,業務異常:向上拋Action
    Action Dao的異常,業務異常:Action的異常不能向上拋,只能處理,使用try..catch
                                Struts2.0只能使用一個頁面處理異常,告訴用戶異常的原因。
 
   在實際開發過程中對於
       Dao層的異常,不需要具體交代,整個封裝告知數據庫異常即可
       業務異常,需要具體交代【餘額不足,賬戶不存在】

   Struts2.0對於異常處理的機制
     問題:如果在Action中使用大量的try...catch語句會造成代碼的結構,以及可維護性的降低
     在Action中不處理異常,主要在配置文件struts.xml中進行處理

發佈了64 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章