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

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

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

    隨筆-124  評論-49  文章-56  trackbacks-0

    網站struts.apache.org
    實踐步驟:
    1 搭建環境
      (1)導入jar包
         使用其中相關的類(可將所有jar全部導入)
      (2)建立一個配置文件:struts-config.xml
         作用:方便struts用戶使用
         位置:一般放在WEB-INF下
      (3)配置web.xml
         注冊struts中心控制器-----ActionServlet
      <servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>()Navigate下Open Type輸入actionServlet復制目錄
      <init-param>//讀初始化文件的信息
       <param-name>config</param-name>//參數名
       <param-value>/WEB-INF/struts-config.xml</param-value>//文件名
      </init-param>
      <load-on-startup>0</load-on-startup>//服務啟起就實例化,0最早
     </servlet>
     <servlet-mapping>
      <servlet-name>action</servlet-name>
      <url-pattern>*.do</url-pattern>//對所有的do請求都作處理
     </servlet-mapping>
      注意事項:
      struts配置文件的位置
      預先加載控制器
    ------------------------------------------------------------------
    2 建立ActionForm
      (1)建一個Bean類,繼承org.apache.struts.action.ActionForm
      (2)注冊,修改配置文件struts-config.xml
      <form-bean>
      <form-beans>
       <form-bean name="變理名" type="類全名"/>
      </form-beans>
      意注:struts-config.xml文件中<form-beans>和<action-mappings>的順序不能變,有DTD約束規定。
    ------------------------------------------------------------
    3 建立Action
     (1)建立一個類,繼承org.apache.struts.action.Action。重寫execute方法
        需要強制轉型
        LoginFrom lof=(LoginFrom)form;
        調用其它模塊
        跳轉(根據關鍵字,關鍵字參照該action中forward標簽中的name屬性)
        mapping.findForward("name屬性");
     (2)注冊,修改配置文件struts-config.xml
     <action>
     <action-mappings>
            <action path="指明調用者(JSP)能通過中心控制器ActionServlet找到該Action"
                    type="指明該action類全名"
                    name="該action引用的form的名稱">
               <forward name="loginSuccess" path="index.jsp"></forward>
            </action>
        </action-mappings>
    4 頁面訪問
    <form action="<%=request.getContextPath()%>/login.do">
    -------------------------------------------------------------------
    Struts framework的工作原理工科

    1 讀敢配置 (初始化ModuleConfig對象)
    Struts框架總控制器(ActionServlet)是一個Servlet,在web.xml中配置成自動啟動的Servlet。
    讀取配置文件(struts-config.xml)的配置信息,為不同的Struts模塊初始化相應的ModuleConfig
    對名:ActionConfig,
          ControlConfig,
          FormBeanConfig,
          MessageResourcesConfig
    2 發送請求
    請求上傳WEB服務器(處理.do的請求)
    3 填充FORM(實例化,復位,填充數據,校驗,保存)
    (*.do請求)從ActionConfig中找出對應該請求的Action子類,如沒有對應的Action,控制器直接轉發給
    JSP或靜態頁面。如有對應的Action且這個Action有一個相應的ActionForm.
    ActionForm被實例化并用http請求的數據填充其屬性,并且保存在ServletContext中(request或session中),
    這樣它們就可以被其它Action對象或者JSP調用。
    4 派發請求
    控制器根據配置信息ActionConfig將請求派發到具體的Action,相應的FormBean一并傳給這個Action的execute()方法.
    5 處理業務
    Action一般只包含一個execute方法,它負責執行相應的業務邏輯(調用其它業務模塊).完畢返回一個ActionForward對象,
    控制器通過該ActionForward對象來進行轉發工作
    6 返回響應
    Action根據業務處理的不同結果返回一個目標響應對象給總控制器,該目標響應對象對應一個具體的JSP頁面或另一Action.
    7 查找響應(可以是一個Action)
    8 響應用戶
    -----------------------------------------------------------------------------------------------------------
    組件
    ActionSerlet,Action Classes,Action Mapping(此處包括ActionForward),ActionForm Bean.
    Struts中的MVC:
    1 模型(Model):本質上來說在Struts中Model是一個商業邏輯類,開發者實現商業邏輯。
    2 視圖(View):View是由與控制器Servlet配合工作的一整套JSP定制標簽庫構成,利用他們可以快速建立應用系統的界面。
    3 控制器(Controller),前端控制器是一個Servlet,它將客戶端請求轉發到相應的后端控制器Action類。
    注意:官方認為ActionForm Bean應為控制層(Controller)組件,自已寫的JavaBeans為模型(Model)
    -----------------------------------------------------------------------------------
    ActionServlet(中心控制器)
     定義:繼承自javax.servlet.http.HttpServlet類,是中心控制器(總控制器)。它提供一個中心位置來處理全部的終端請求。
     作用:接受請求,填充數據,派發請求,響應用戶。
     配置:在web.xml文件聲明。
     例子:
     <servlet>
      <servlet-name>action</servlet-name>
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
      <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
      </init-param>
      <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>action</servlet-name>
      <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    注意:struts-config.xml文件系統默主調用,可以不<init-param>配置
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    -------------------------------------------------------------------
    Action
    發出該action請求時初始化,不是在讀取配置時,并且只初始化一次。
    Action是線程不安全的,因為所有的請求共享一個別action實例。
    所以:不要用實例變量或者類變是共享只是針對某個請求的數據
          注意資源操作的同步性。
    應用:
    統計一個action訪問次數
    public class CountAction extends Action {
     private Integer count=0;
     public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       throws Exception {
      synchronized(count){//加鎖
      count++;
      }
      PrintWriter out=response.getWriter();
      out.print("count="+count);
      return null;
     }
    }

    ----------------------------------------------------
    ActionMapping
    是對struts-config.xml中action標簽中所有屬性的封裝類。
    mapping.getName()(String)
    mapping.getPath()(String)
    mapping.getType()(String)
    String[] forwardNames=mapping.findForwards();
    for(String forward:forwardNames){
     ActionForward forward=mapping.findForward(forward);
     String forwardPath=forward.getPath();
    }
    相應的set方法不能使用。
    -----------------------------------------------------
    ActionForward(導航器)
    ActionForward對象是配置對象。這些配置對象擁有獨一無二的標識以允許他們按照name屬性來檢索。
    name:邏輯名稱
    path:頁面或者模塊訪問路徑。
    redirect:默認為false.設為true時為容器外跳轉,相當于response.sendRedirect();
    在xml文件中的path中要寫絕對路徑。
    --------------------------------------------------------------
    ActionForm工作原理
    步驟:
    (1)檢查Action的映射,確定Action中已經配置了對ActionForm的映射
    (2)根據name屬性,查找form bean中的配置信息
    (3)檢查Action的form bean的使用范圍,確定在此范圍下(request,session),是否已經有些form bean的實例。
    (4)假如當前范圍下,已經存在了些form bean的實例,而是對當前請求來說,是同一種類型的話,就重用。
    (5)否則,就重新構建一個form bean的實例(調用構造方法),并且保存在一定作用范圍。
    (6)form bean的reset()方法被調用
       在作數據收集前被調用,是一個重置的方法.
    (7)調用對應的setter方法,對狀態屬性賦值
    (8)如果validatede的屬性設置為true,就調用form bean的validate()方法。
       該方法進行表單的服務器端驗證.
    (9)如果validate()方法沒有返回任何錯誤,控制器將ActionForm作為參數,傳給Action實例的execute()方法并執行。
    注意:直接從ActionFrom類繼承的reset()和validate()方法,并不能實現什么處理功能,所以重新覆蓋。

               
    注意:
    1 無參構造方法必須有
    2 Scope缺省值是session
    3 調用setter方法,實質上是對應的標準set方法
    分析:
    4 從過程去查看
    HttpSessionAttributeListener
    ServletRequestAttributeListener
    5 從結果去查看
    ---------------------------------------------------
    ActionForm
    reset()方法,用于恢復屬性,在重新復值前由controller調用。
    valldate()方法,用于校驗屬性,返回ActionErrors,如果成功返回null,默認返回null.
    關閉校驗功能設置struts-config.xml中<action>標簽的validate屬性為false.
    validate
    ----------------------------------------------------------
    struts-config.xml文件中的action標簽
    1 attribute屬性
    用來存取form的關鍵字,缺省值與name一樣,如果設了必須用該屬性。
    2 validate屬性(action中的屬性)
    用來控制是否校驗表單,缺省為false,false不校驗。
    3 input屬性
    當表單校驗失敗時將請求轉發的URL(或目標模塊,可以為另一個別action),結合validate屬性使用,為相對路徑。
    在ActionForm類的validate方法中手動添加錯誤
    public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
      ActionErrors errors=new ActionErrors();
      ActionMessage message=new ActionMessage("error");//應為鍵值對
      errors.add("error",message);
      return errors;
    }
    ---------------------------------------------------------------------------
    struts-config.xml文件中的<global-forwards>全局跳轉標簽
    <global-forwards>
      <forward name="error" path="Error.jsp"/>
    </global-forwards>
    使用方式同action中的forwar標簽

    posted on 2009-11-29 22:59 junly 閱讀(2328) 評論(0)  編輯  收藏 所屬分類: struts2/struts1.3/JSF
    主站蜘蛛池模板: 国产亚洲美女精品久久| 亚洲av无码不卡| 婷婷综合缴情亚洲狠狠尤物| 免费看香港一级毛片| 大香人蕉免费视频75| 好爽…又高潮了免费毛片| 午夜毛片不卡高清免费| 性盈盈影院免费视频观看在线一区| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 特黄特色大片免费| 美女又黄又免费的视频| 一区二区三区AV高清免费波多| 免费看又黄又爽又猛的视频软件| 美女扒开尿口给男人爽免费视频| 色婷婷综合缴情综免费观看| g0g0人体全免费高清大胆视频| 本道天堂成在人线av无码免费| 中文字幕免费播放| 亚洲a一级免费视频| 国产精品久久永久免费| 免费国产黄线在线观看| 国产在线19禁免费观看国产| mm1313亚洲国产精品美女| 久久久久亚洲av毛片大| 日本亚洲成高清一区二区三区| 亚洲国产第一页www| 亚洲一区电影在线观看| 亚洲乱亚洲乱妇无码| 在线91精品亚洲网站精品成人| 深夜久久AAAAA级毛片免费看| a级毛片免费高清毛片视频| 麻豆视频免费播放| 卡一卡二卡三在线入口免费| 亚洲av无码成人精品区在线播放| 亚洲一区二区三区偷拍女厕| 亚洲国产人成在线观看69网站| 亚洲中字慕日产2020| 国产产在线精品亚洲AAVV| 在线免费观看伊人三级电影| 中文字幕天天躁日日躁狠狠躁免费| 好爽…又高潮了毛片免费看|