熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

開源框架:Structs2.0入門學習(1)

2013-11-23 20:14:40  來源: Java開源技術 

  下一個項目開發用structs

  現在開始學習JAVA中的這個技術了!

  Struts 是一組相互協作的類servlet 和 JSP 標記它們組成一個可重用的 MVC 設計這個定義表示 Struts 是一個框架而不是一個庫但 Struts 也包含了豐富的標記庫和獨立於該框架工作的實用程序類

  ●  Client browser(客戶浏覽器)
    來自客戶浏覽器的每個 HTTP 請求創建一個事件Web 容器將用一個 HTTP 響應作出響應
    ●  Controller(控制器)
    控制器接收來自浏覽器的請求並決定將這個請求發往何處就 Struts 而言控制器是以 servlet 實現的一個命令設計模式 strutsconfigxml 文件配置控制器
    ●  業務邏輯
    業務邏輯更新模型的狀態並幫助控制應用程序的流程就 Struts 而言這是通過作為實際業務邏輯包裝的 Action 類完成的
    ●  Model(模型)的狀態
    模型表示應用程序的狀態業務對象更新應用程序的狀態ActionForm bean 在會話級或請求級表示模型的狀態而不是在持久級JSP 文件使用 JSP 標記讀取來自 ActionForm bean 的信息
    ●  View(視圖)
    視圖就是一個 JSP 文件其中沒有流程邏輯沒有業務邏輯也沒有模型信息 只有標記標記是使 Struts 有別於其他框架(如 Velocity)的因素之一

  Struts 的控制器是將事件(事件通常是 HTTP post)映射到類的一個 servlet正如您所料 —— 控制器使用配置文件以使您不必對這些值進行硬編碼時代變了但方法依舊

  ActionForm 類

  ActionForm 維護 Web 應用程序的會話狀態 ActionForm 是一個抽象類必須為每個輸入表單模型創建該類的子類當我說 輸入表單模型 時是指 ActionForm 表示的是由 HTML 表單設置或更新的一般意義上的數據例如您可能有一個由 HTML 表單設置的 UserActionForm Struts 框架將執行以下操作

  ●  檢查 UserActionForm 是否存在如果不存在它將創建該類的一個實例
    ●  Struts 將使用 HttpServletRequest 中相應的域設置 UserActionForm 的狀態沒有太多討厭的requestgetParameter() 調用例如Struts 框架將從請求流中提取 fname 並調用 UserActionFormsetFname()
    ●  Struts 框架在將 UserActionForm 傳遞給業務包裝 UserAction 之前將更新它的狀態
    ●  在將它傳遞給 Action 類之前Struts 還會對 UserActionForm 調用 validation() 方法進行表單狀態驗證這並不總是明智之舉別的網頁或業務可能使用 UserActionForm 在這些地方驗證可能有所不同在 UserAction 類中進行狀態驗證可能更好
    ●  可在會話級維護 UserActionForm

  Action 類

  Action 類是業務邏輯的一個包裝 Action 類的用途是將 HttpServletRequest 轉換為業務邏輯要使用 Action 請創建它的子類並覆蓋 process() 方法

  ActionServlet (Command) 使用 perform() 方法將參數化的類傳遞給 ActionForm 仍然沒有太多討厭的 requestgetParameter() 調用當事件進展到這一步時輸入表單數據(或 HTML 表單數據)已被從請求流中提取出來並轉移到 ActionForm 類中

  注擴展 Action 類時請注意簡潔 Action 類應該控制應用程序的流程而不應該控制應用程序的邏輯通過將業務邏輯放在單獨的包或 EJB 中我們就可以提供更大的靈活性和可重用性

  考慮 Action 類的另一種方式是 Adapter 設計模式 Action 的用途是將類的接口轉換為客戶機所需的另一個接口Adapter 使類能夠協同工作如果沒有 Adapter則這些類會因為不兼容的接口而無法協同工作(摘自 Gof 所著的 Design Patterns Elements of Reusable OO Software )本例中的客戶機是 ActionServlet 它對我們的具體業務類接口一無所知因此Struts 提供了它能夠理解的一個業務接口即 Action 通過擴展 Action 我們使得我們的業務接口與 Struts 業務接口保持兼容(一個有趣的發現是 Action 是類而不是接口) Action 開始為一個接口後來卻變成了一個類真是金無足赤

  第一個struct實例

  <%@ taglib prefix=s uri=/strutstags %>

  其中這樣寫的話是為了得到一個前綴哦!

  那後面是可以這樣來引用了

  

  <s:form action=HelloWorld>
Name: <s:textfield name=name />
<s:submit />
</s:form>

  加一個前綴表示prefix!

  提交到一個Action了哦

  通過一個配置文件可以將這個action映射到一個JSP文件了

  

  <struts>
    <include file=strutsdefaultxml/>
    <package name=tutorial extends=strutsdefault>
        <action name=HelloWorld class=tutorialHelloWorld>
            <result>HelloWorldjsp</result>
        </action>
    </package>
</struts>

  通過一個JAVA文件來作映射的哦!

  

  <h><s:property value=name /></h>

  可以直接映射到這個JSP文件了!

  來進行單元測試

  單元測試好好玩的哦哈哈!

  為某一個類中的一個方法進行單元測試運行的時候是運行為單元 測試!

  上面的例子簡單地演示了Web 應用程序的基本操作也即是頁面輸入>Action處理>再輸出到另外頁面

  處理邏輯是集中到了一個Action了!

  中間就是通過一個Action處理了!


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28179.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.