三大框架之Struts1--Struts包含的組件淺析

Struts包含的組件:
    1.ActionServlet(總控制器) org.apache.struts.action.ActionServlet


    2.Action Classes


    3.Action Mapping(包括ActionForward)


    4.ActionForm Bean


    5.配置文件(協調工作)

 

 

詳細介紹:

1.

ActionServlet(中心控制器) RequestProcessor
定義:繼承自javax.servlet.http.HttpServlet類,提供一箇中心位置來處理全部的終端請求(*.do)。

作用:接受請求、填充數據、派發請求、響應用戶

配置:在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>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</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>

 

2.

Action
An Action is an adapte between the contents of an incoming HTTP request and the corresponding business logic that should be executed to process this request.
a.第一次請求的時候實例化
b.每個Action只會初始化一次
c.Action是線程不安全的,因爲所有的請求共享一個action實例
d.怎樣實現Action的安全性編程?
@注意不要用實例變量或者類變量共享只是針對某個請求的數據
@注意資源操作的同步性

 

3.

Action Mapping
每一個<action>元素都與類org.apache.struts.action.ActionMapping的一個實例對應。


ActionForward(導航器)
ActionForward對象是配置對象。這些配置對象擁有獨一無二的標識以允許它們按照name屬性等來檢索。ActionForward對象封裝了向前進的URL路徑且被請求處理器用於識別目標視圖。
name:邏輯名稱
path:頁面或者模塊訪問路徑
redirect:false,no……RequestDispatcher.forward    路徑相對當前應用
             true,yes……HttpServletResponse.sendRedirect    path寫絕對路徑,如Http://www.baidu.com

 

4.

ActionForm
工作原理
處理ActionForm的一般步驟:
(1)檢查Action的映射,確定Action中已經配置了對ActionForm的映射
(2)根據name屬性,查找form bean的配置信息
(3)檢查Action的form bean的使用範圍,確定在此範圍下scope(request,session),是否已經有此form bean的實例
(4)假如當前範圍下,已經存在了此form bean的實例,而且對當前請求來說,是同一種類型的話,那麼就重用
(5)否則,就重新構建一個form bean的實例(調用構造方法),並且保存在一定作用範圍scope
(6)form bean的reset()方法被調用
(7)調用對應的setter方法,對狀態屬性賦值
(8)如果validate的屬性值爲true,那麼就調用form bean的validate()方法
(9)如果validate()方法沒有返回任何錯誤,控制器將ActionForm作爲參數,傳給Action實例的execute()方法並執行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章