<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无码久久忘忧草| 99视频全部免费精品全部四虎| 久久国产亚洲电影天堂| 国产无遮挡裸体免费视频在线观看| 中文字幕专区在线亚洲| 成人自慰女黄网站免费大全| 亚洲午夜久久久影院| a视频在线免费观看| 亚洲国产精品人久久| 免费成人激情视频| 亚洲色偷偷偷综合网| 免费看国产曰批40分钟| WWW国产成人免费观看视频| 亚洲VA中文字幕无码一二三区| 99视频免费播放| 精品国产日韩久久亚洲| 亚洲&#228;v永久无码精品天堂久久| 精品国产_亚洲人成在线| 亚洲真人日本在线| 日韩电影免费在线观看中文字幕| 亚洲综合免费视频| 色播在线永久免费视频| 国产乱妇高清无乱码免费| 亚洲第一福利网站| 成年女人视频网站免费m| 一级做a爰性色毛片免费| 久久国产亚洲高清观看| 成年女人男人免费视频播放| 一级黄色片免费观看| 亚洲永久永久永久永久永久精品| 成人免费视频一区二区三区| 成人福利在线观看免费视频| 亚洲AV成人无码久久精品老人| 中文字幕av无码无卡免费| 美女隐私免费视频看| 久久亚洲精品无码AV红樱桃| 国产美女无遮挡免费网站| 中文字字幕在线高清免费电影| 亚洲国产人成在线观看|