程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Struts Controller

Struts Controller

編輯:JAVA編程入門知識

  關於controller中的Action:(ActionServlet也是多線程的)

  因為Action類是線程安全的,所以在應用程序中創建Action類的唯一實例;Struts中使用lazy Singleton,也就是先判斷是否存在實例,若不存在,則創建實例,且對創建實例的代碼進行了Synchronization,從而保證同一時刻只有一個線程可以創建Struts的實例。

  除此之外,確保Action類不使用實例變量來存儲客戶特有的狀態,對於客戶的特有狀態,應該在execute中

  使用局部變量來保存。

  Struts中大量使用了Resource Wrapper

  原理可以這樣形容:所有在資源實際在配置文件中指定,然後再內存中由一個類的實例來代表,這樣要修改資源配置的話,只需要修改相應的.xml文件就可以了

  For Example:

  config.ControllerConfig類 ----〉controller元素中配置的信息

  ActionMapping-----> action元素,其中findForward()--->findForwardConfig()是否在動作級設定

  forward,然後檢查global-forward元素

  ActionForward----->forward元素的;web資源的抽象,比如jsp頁面和java servlet

  Action類應把業務邏輯委托給模型組件

  actions包中有五個action類:

  ForwardAction:執行一個到parameter中配置的uri的forward。

  IncludeAction:可以用來實現RequestDispatcher中的include();但我不是很清楚

  DispatchAction:需要給出它的子類,為需要在服務上執行的每個功能添加一個方法(必須DispatchAction調用的Action類包含一個方法)在配置時必須定義parameter屬性,它使用parameter的值決定調用什麼方法

  想法是把聯合完成一個大功能的多個action類放在同一個類中

  注意點:DispatchAction使用java Reflection 來調用正確的方法,但是這些方法必須為public

  LookupDispatchAction:是DiapatchAction的子類,但是使用請求參數值,利用參數值反向查詢資源邦定,並將其與類中的方法進行匹配

  SwitchAction:支持從一個應用程序模塊切換到另一個

  兩個參數:page(目的地)和prefix(源)

  Struts中的實用類:

  util中

  RequestUtils:線程安全的,沒有實例變量,且其中所有方法均為static的。協助處理一個請求

  ResponseUtils:協助建立一個響應

  beanutils中:

  BeanUtils:populate():使用key/value映射,把data裝入JavaBean中;

  :getProperty():返回property的string表示

  :getArrayProperty():string數組

  PropertyUtils:getProperty():返回屬性的值,不改變屬性的類型。

  commons:

  FastHashMap:多線程的,是HashMap的子類,有slow和fast兩種模式 .

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved