<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 4  文章 - 10  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

       Struts-config.xml是struts框架的核心配置文件,其最基本的功能是用來配置Action和ActionForm,通知Struts框架完成傳遞和頁面流轉(zhuǎn).
       一.處理異常的exception和global-exception
       在Web應用中,對異常處理位置都是業(yè)務邏輯失敗的信息.因為異常處理還需要編寫ActionErrors,給出報錯信息將導致在Action會看到許多的ActionErrors的代碼.
       struts解決了這個問題,它允許程序員配置任何異常,并且在將異常轉(zhuǎn)化為報錯信息的時候,不必須自行使用"try catch"來捕捉,寫報錯轉(zhuǎn)發(fā)到出錯頁面.
       1.局部異常
          就是針對一個Action響應所拋出的異常,該異常將只負責Action的程序段,并且自定義在<action>元素中.

       局部異常的定義:
      <action-mapping>
       <action
          input="SampleJsp.jsp" 指定了SampleForm對象使用的ActionForrm對象名稱,與form-bean元素定義的name屬性一致
          name="SampleForm"  指定了SampleForm對象使用的ActionForm對象名稱
          path="/SampleAction" 如果使用了SampleForm.do的響應,那么ActionServlet控制器組件就會自動找到本Action對象
          scope="request"   使用ActionForm的范圍
          type="struts.sample.cap3.sample1.action.SampleAction"  解釋本Action對象的路俓
          validate="false">   定義使用的ActionForm在Action是否需要檢驗
          <expetion
          key="userNameException"  指定了在資源配置文件中報錯信息的鍵
          path="/SampleJsp.jsp"   指定了報錯之后所轉(zhuǎn)發(fā)到的JSP頁面,在該頁面中可以通過標簽庫來讀取報錯信息,并顯示
          type="struts.sample.cap3.sample1.exception.UserNameException"/> 指定了該異常類的java實體名
          <exception
           key="SampleJsp.jsp"
           type="java.sql.SQLException"/>
         </action>
          </action-mappings>

     2.全局異常
           指對所有定義在Struts-config.xml的Action程序都進行處理,他定義在<global-exception>元素中
         <global-exception>
         <exception
         key="passWordException.jsp"
         path="SampleJsp.jsp"
         type="struts.sample.cap3.sample.exception.passWordException"/>
        <global-exception>
         定義全局變量時無需將<exception>元素作為任何<action>元素的子元素,而是直接作為 <global-exception>的子元素.

      簡單示例:
      (1).自定義標簽類
          UserNameException.java

    package struts.sample.cap3.sample1.exception;
    public class UserNameException extends Exception {
      public UserNameException(){
       super();
      }
      public UserNameException(String message){
       super();
      }
      public UserNameException(String message,Throwable cause){
       super(message,cause);
      }
      public UserNameException(Throwable cause){
       super(cause);
      }
      public UserNameException(Exception exc){
       super(exc);
      }

    }


    (2)業(yè)務邏輯類
    UserNameService.java

    package struts.sample.cap3.sample1.service
     import struts.sample.cap3.sample1.exception.UserNameException;
     import struts.sample.cap3.sample1.exception.UserNameException2;
    public class UserNameService {
     public void UserNameLogic() throws UserNameException{
      throw new UserNameException("UserName");
     }

    }


    (3)Action類
    SampleAction.java
     

    package struts.sample.cap3.sample1.action;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import struts.sample.cap3.sample1.exception.UserNameException;
    import struts.sample.cap3.sample1.service.UserNameService;
    public class SampleAction extends Action{
      public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) throws Exception{
       UserNameService userNameService=new UserNameService();
       return  null;
      }

    }


     (4)資源配置文件
    application.properties
    userNameException=用戶名無法確定
    XXX=XXX
    ....

    (5)JSP頁面

    <%@ page contentType="text/html;charset=UTF-8" %>
    <%@ page language="java"%>

    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
    <html>
    <head><title>JSP for SampleForm</title>
    </head>
    <body>
    <html:errors/><p/>
    <html:form action="SampleAction.do">
    userName : <html:text property="userName"/><br/>
    password : <html:password property="password"/><br/>
    sex: <html:select property="sex">
        <html:option key="F" value="F"/>
        <html:option key="M" value="M"/>
         </html:select><br/>
         age : <html:text property="age"/><br/>
         email : <html:text property="email"/><br/>
         <html:submit/><html:cacel/>
         </html:form>
    </body>
    </html>



    二:global-forwards標記與全局轉(zhuǎn)發(fā)
     1.全局轉(zhuǎn)發(fā)  
            所謂全局轉(zhuǎn)發(fā),就是在整個應用程序中,無論怎樣的請求者都可以使用的全局中轉(zhuǎn).它可以僅僅通過一個請求轉(zhuǎn)發(fā)到一個JSP頁面,也可以通過另一個請求轉(zhuǎn)發(fā)到另一個已經(jīng)定義的Action請求.可以理解為全局轉(zhuǎn)發(fā)就是一個控制器,它可以隨著按鈕(請求)的切換而轉(zhuǎn)換(轉(zhuǎn)發(fā))到任何一個頻道(JSP頁面和請求).

    2. global-forward標記的配置
     <blobal-forward>
     <forward
       name="Login"
       path="/LoginSampleJSP.jsp"/>
     <forward
       name="success"
       path="/SampleAction"
       redirect="true"  屬性允許在2個Web context中進行轉(zhuǎn)發(fā),默認為false
      contextRelative="true"/>  屬性允許在多個struts配置文件模塊中都可以識別轉(zhuǎn)發(fā),默認為false.
      </blobal-forwards>
      name的屬性,path的屬性是必須的,它們分別表示了轉(zhuǎn)發(fā)標識和轉(zhuǎn)發(fā)定位,對于任何一個<forward>元素都可以被設置.它實現(xiàn)了無論是全局轉(zhuǎn)發(fā)還是局部轉(zhuǎn)發(fā)都可以在模塊間實現(xiàn)通訊.
     
    3.Struts-config.xml中的轉(zhuǎn)發(fā)
     (1).<action>元素結(jié)合Action bean的局部轉(zhuǎn)發(fā)
     (2).<action>元素的簡單局部轉(zhuǎn)發(fā)
     (3).Action bean中的程序轉(zhuǎn)發(fā)
     (4).<global-forwards>的全局轉(zhuǎn)發(fā)

    (1)這類轉(zhuǎn)發(fā)是在請求到來后做一些業(yè)務邏輯,然后根據(jù)業(yè)務需要將結(jié)果轉(zhuǎn)發(fā)到另一個請求或直接顯示出一個JSP頁面.
    Struts-config.xml配置
    <action-mapping>
     <action
      name="SampleForm"
      path="/SampleAction"
      scope="request"
      type="struts.sample.cap3.sample1.action.SampleAction"
      validate="false">
     <forward name="SampleAction" path="/SampleJsp.jsp"/>
     <forward name="failue" path="/Login"/>

     </action>
     </action-mapping>

    Action bean程序代碼
      public class SampleAction extends Action{
       public ActionForward execute(
       ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request ,
      HttpServletResponse response) throws Exception{
     //業(yè)務邏輯代碼................
      if(true){
      return mapping.findForward("SampleAction");
     }else{
      return mappingForward("failue")
    }
    }

     
    (2) 這類轉(zhuǎn)發(fā)只需要定義<action>元素,而不用專門的Action bean來配合工作,可以轉(zhuǎn)發(fā)到請求或JSP頁面.通常這類轉(zhuǎn)發(fā)被用作直接轉(zhuǎn)發(fā)到一個JSP顯示頁面的請求.
      <action forward="/SampleJsp.jsp" path="/Welcome"/>
      利用<action>元素的forward屬性和path屬性來完成工作,沒有定義的ActionForm的name屬性和定義Action bean Java實體名的type屬性.當請求為path屬性所定義的內(nèi)容時,將直接轉(zhuǎn)發(fā)到forward屬性所指定的地方...

    (3).通過Action bean的execte方法由程序員利用代碼來制定轉(zhuǎn)發(fā).通常這類轉(zhuǎn)發(fā)被使用在不確定轉(zhuǎn)發(fā)目的地的場合,可能會根據(jù)請求request或ActionForm傳入的內(nèi)容來指定轉(zhuǎn)發(fā)
    Struts-config.xml配置
    <action-mapping>
     <action
      name="SampleForm"
      path="/SampleAction"
      scope="request"
      type="struts.sample.cap3.sample1.action.SampleAction"
      validate="false">
     <forward name="SampleAction" path="/SampleJsp.jsp"/>
     <forward name="failue" path="/Login"/>

     </action>
     </action-mapping>

    Action bean程序代碼
      public class SampleAction extends Action{
       public ActionForward execute(
       ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request ,
      HttpServletResponse response) throws Exception{
     //業(yè)務邏輯代碼................
      return new ActionForward(request.getParmeter("pageFlow"));}
    }

    返回的ActionForward類型對象可以實現(xiàn)動態(tài)轉(zhuǎn)發(fā),本示例中使用JSP頁面中名為"pageFlow"的控件所指定的值作為轉(zhuǎn)發(fā)目的地."pageFlow"控件的值可以是一個請求,也可以是一個JSP頁面.這樣,轉(zhuǎn)發(fā)的目的地就完全交給進行請求的JSP頁面來指定.
     
    (4).這一類型的轉(zhuǎn)發(fā)僅僅關(guān)注在轉(zhuǎn)發(fā)這個動作上面,而不關(guān)注請求,因此全局轉(zhuǎn)發(fā)必須配合<action>元素或者Action bean來實現(xiàn)"請求-轉(zhuǎn)發(fā)"的整個過程.這類轉(zhuǎn)發(fā)通常被使用在有統(tǒng)一轉(zhuǎn)發(fā)目的地的顯式邏輯中.
    struts-config.xml配置(同上)

    Actionbean部分(同上)+
    return mapping.findForward("Login");
    return mapping.findForward("SampleAction");

    四.控制器
      Struts框架的控制器由ActionServlet(Struts Servlet) RequestProcessor(請求處理),ModoleConfig(存儲配置信息),Action,
    ActionForward(Action的轉(zhuǎn)發(fā))5個主要對象多組成,他們完成了Struts框架服務器端表示層MVC的所有工作.
      流程如下
      1.客戶端的請求到來后發(fā)送到ActionServlet中
      2.ActionServlet調(diào)用RequestProoessor處理用戶請求
      3.RequestProcess根據(jù)Module得到請求對應的Action
      4.具體Action對象處理請求的具體工作
      5.從Action的處理返回ActionForward,轉(zhuǎn)發(fā)到指定的目的地....
    posted on 2007-09-22 17:59 冬天出走的豬 閱讀(693) 評論(0)  編輯  收藏 所屬分類: struts
    主站蜘蛛池模板: 亚洲日本在线观看视频| 亚洲人成网站看在线播放| 亚洲中文字幕无码日韩| 青草久久精品亚洲综合专区| 成人影片一区免费观看| 亚洲深深色噜噜狠狠爱网站 | 中文字幕在亚洲第一在线 | 97亚洲熟妇自偷自拍另类图片| 亚洲成人免费在线观看| 最近免费中文字幕大全高清大全1| 免费一看一级毛片全播放| 精品在线观看免费| 国产亚洲精品线观看动态图| 国产午夜精品理论片免费观看| 久久久久久久尹人综合网亚洲 | 亚洲今日精彩视频| 国产亚洲精品美女久久久久久下载| 国产无遮挡吃胸膜奶免费看| 免费无码国产在线观国内自拍中文字幕| 免费看又黄又无码的网站| 久久精品国产亚洲精品2020| 国产人在线成免费视频| 亚洲AV成人精品一区二区三区| 日日麻批免费40分钟日本的| 亚洲国产AV无码专区亚洲AV| 2019中文字幕在线电影免费| 亚洲av综合avav中文| 18禁男女爽爽爽午夜网站免费| 亚洲码和欧洲码一码二码三码 | 亚洲欧洲日产国码一级毛片| 秋霞人成在线观看免费视频 | 国产精品亚洲一区二区在线观看| 亚洲精品尤物yw在线影院| 久久午夜免费鲁丝片| 中文有码亚洲制服av片| 台湾一级毛片永久免费| 深夜特黄a级毛片免费播放| 国产AV无码专区亚洲Av| 性盈盈影院免费视频观看在线一区| h片在线播放免费高清| 亚洲精品国产高清嫩草影院|