《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 基于Struts框架的J2EE WEB應用

基于Struts框架的J2EE WEB應用

2008-12-22
作者:孫剛,孟祥武

1.前言
??? 伴隨著軟件開發技術的發展,基于組件的開發方法越來越受開發人員的青睞,通過采用組件技術,復雜的系統由可重用、易擴展,具有結合性的小系統組成,開發人員有更充裕的時間用來分析、構建業務邏輯,而不是浪費在繁雜代碼的編寫上。
組件通常設計成框架(framework)的一個組成部分,框架的作用是將獨立的組件結合在一起形成應用程序" title="應用程序">應用程序進行發布。選擇一個好的框架,開發人員基本上只需要在限制的范圍內編寫相應業務組件,由框架管理這些組件之間的協作,從而得到結構良好、質量可靠的Web應用。
??? Struts框架是Apache組織的一個開放源碼" title="開放源碼">開放源碼項目,一個基于J2EE平臺的Web應用系統" title="應用系統">應用系統框架。Struts采用MVC模型規范,結合了Servlet、JSP、JavaBean的技術特點,并使這些技術合理分工,緊密配合,達到程序結構清晰,易于開發、維護的目標。
Struts框架具有MVC模型的所有特性和優點,簡化了基于MVC的應用程序的開發,并且可以通過擴展以實現特定的需求;Struts框架使用XML文件來配置默認的框架,有利于開發人員的理解流程控制。
2.Struts體系結構
??? 從MVC的角度觀察,Struts框架由模型、視圖、控制器組成。
2.1 模型
??? Struts中模型分為兩大部分:
.系統內部狀態。分為表單" title="表單">表單Beans:保存HTTP請求傳來的數據;業務邏輯beans: 處理業務邏輯;系統狀態beans:保存跨越多個HTTP請求的單個客戶的會話信息、系統狀態。
.改變狀態的操作。大型應用系統通常在方法內部封裝操作(事務邏輯),這些方法可以被擁有狀態信息的Bean進行調用。在中、小型應用系統中,操作可以被內嵌在Action類中,成為Struts框架中控制器的一部分,在邏輯比較簡單時通常采用這樣的方法。
2.2 視圖
??? 視圖通常使用JSP建立。Struts框架包含一個可擴展的自定義標記庫,可以簡化創建完全國際化的用戶界面的過程,同時,可以與模型中的ActionForm Bean進行交互。
2.3 控制器
??? 控制器處理所有發送到Struts 的HTTP請求。它截取和分發這些請求到相應的動作類(Action類的子類),負責用相應的請求參數填充 From bean并傳給動作類。在動作類通過訪問Java bean 或調用EJB實現核心商業邏輯后,根據動作類的返回值把控制權傳遞給相應的JSP文件,生成視圖。
2.4體系結構概述
??? 系統初始化時,ActionServlet對配置文件(默認為struts-config.xml)進行分析,然后根據其中定義的映射轉發相應的HTTP請求。
??? 當用戶發出HTTP請求,控制器接收到這個請求后,查找對應這個請求的動作映射,再檢查是否創建過相應的Action實例,如果沒有則生成一個Action實例,控制器會保存這個實例供以后使用。接著調用actionmapping的方法得到actionForm對象,把actionForm作為參數傳給Action實例的execute(perform方法在struts1.1中已經不再支持)方法。這個方法結束之后會返回給控制器一個actionforward對象??刂破鞲鶕祷貙ο髮⒖刂茩鄠鬟f給相應的視圖組件。
??? 當Action實例執行execute()方法時,可能會出現錯誤。Struts通過一個共享機制使用ActionError對象來產生和顯示錯誤信息。Action實例在error對象中保存這些錯誤信息,接著調用自身的saveerrors方法把這個錯誤保存到request對象的屬性中,接著Action實例調用actionmapping對象的getInput方法從映射中獲取input參數(產生輸入的視圖的全稱),生成actionforward對象返回。在產生輸入的JSP中使用自定義標記,從當前作用域的資源文件中讀取錯誤消息關鍵字和錯誤消息并在頁面上顯示。
3.Struts框架中的組件
3.1 常用的Struts組件

?
??? 組件?角色???
ActionServlet?Struts框架的控制器???
ActionClass?實現應用程序的事務邏輯處理???
ActionForm?顯示模塊數據???
ActionMapping?協助控制器將請求映射到操作???
ActionForward?指示操作轉移對象???
ActionError?存儲錯誤???
StrutsTaglib?簡化創建頁面的過程?
3.2 Struts配置文件
??? Struts配置文件是一個XML文件,名稱和位置的默認值是\WEB-INF\sturts-config.xml。配置文件中可以對JDBC數據源、? ActionForm bean、全局轉發、ActionMapping、控制器配置以及定義消息資源文件等進行配置。
3.3 ActionServlet
??? ActionServlet繼承自javax.servlet.http.HttpServlet類,是Struts 框架的控制器。ActionServlet主要負責將HTTP的客戶請求信息組裝后,根據配置文件的指定描述,轉發到適當的處理器。按照Servelt標準, ActoinServlet必須在Web Application 的發布描述器(\WEB-INF\web.xml)中聲明,并設置成啟動時加載。
??? 控制器用以下方式在完成一個請求:
.?將請求的URI與適當的ActionMapping匹配
.將請求映射到相應的Action類的Java類名稱,如果這是特定的Action類的第一個請求,Servlet將初始化這個實例并緩存。
.創建或尋找一個ActionForm Bean實例,然后將請求的參數移植到Bean。
.調用Action實例的execute()方法,并將ActionForm bean、ActionMapping、request、response對象作為參數傳遞給它。
.將execute()方法返回的響應轉發到ActionForward對象指定的資源。
3.4 Action Classes
??? Action類擴展自Struts的org.apache.struts.action.Action,開發人員需要覆蓋其中的execute()方法。Action 類的功能就是實現應用程序的事務邏輯,同時提供認證、日志和數據驗證等其它功能。Action類中最為常用的方法是處理HTTP請求的execute()方法。當ActionServlet收到客戶的請求的時候,將請求轉移到一個Action實例,然后調用這個Action實例的execute()方法。Struts 框架為應用系統中的每一個Action類只創建一個實例,因為所有的用戶都使用這個實例,所以在設計Action類時,需要注意以下兩點:
.不能使用實例變量或靜態變量存儲特定請求的狀態信息。
.如果要訪問的資源在并行時需要進行保護,那么訪問就要進行同步。
3.5 ActionForm
??? Actionform類擴展自Struts中的org.apache.struts.action.ActionForm類,Struts框架假設用戶在應用程序中為每個表單都創建一個ActionForm Bean。 ActionForm的主要功能就是為Action提供與客戶表單相對應的數據(在指定的情況下,也可以對數據進行有效性校驗,在struts1.1中,雖然可以使用,但校驗功能逐漸被淡化)。ActionForm Bean還負責對系統數據狀態的保持,在Action根據業務邏輯需要改變系統狀態后,ActionForm會自動更新狀態并保持。Struts 框架在調用execute()方法前,用以下步驟處理ActionForm:
(1)?根據元素的name屬性,查找form bean的配置信息。
(2)?根據元素的scope屬性,如果在此作用域下,已經存在此form bean實例,那么重用該form bean。否則,就構建一個form bean的實例。
(3)?調用form bean的reset()方法。
(4)?調用對應的set方法,對狀態屬性賦值。
(5)?如果元素的validate屬性設置為true,那么就調用form bean的validate()方法。如果validate()方法沒有返回任何錯誤,控制器將ActionForm作為參數,傳給Action實例的execute()方法并執行。
3.6 Struts Action Mapping
??? ActionMapping協助進行框架內部的流程控制??刂破魍ㄟ^ActionMaping將請求映射到Action類,并且將Action類與ActionForm bean相關聯。在struts 中,ActionMapping存儲在特定的XML文件(struts-config.xml)中。這些配置信息在系統啟動的時候被讀入內存,供struts框架在運行期間使用。ActionMapping對象通過使用元素進行定義,常用元素屬性說明如下:
?
??? 元素屬性?說明???
name ?與Action關聯的Form bean的名稱???
type?Action類的全稱???
path?Action類的相對路徑???
input?產生輸入的表單名稱???
scope?ActionForm Bean的作用域???
validate?是否調用ActionForm bean的validate()方法?
3.7 ActionForward
??? ActionForward類的邏輯名稱由配置文件中的元素定義。ActionForward類描述了一個目標(通常是一個JSP),這個目標是控制器Servlet將Action類的處理結果轉發的目的地。
3.8 ActionError
??? Struts框架處理錯誤的類是:ActionError和ActionErrors。
??? ActionError類定義了一組重載的構造器來創建錯誤信息。構造器的一種方法是使用一個字符串作為參數,實例error映射到應用程序資源文件中的一個錯誤信息。另一種方法使用了java.text.MessageFormat類,可以用來在消息中替換字符串。
??? ActionErrors對象保存著ActionError類的集合以及它們的特定屬性值,開發人員可以使用自己定義的屬性值,或者使用ActionErrors.GLOBAL.ERROR。
3.9 Struts TagLib
Struts提供了一組可擴展的自定義標記庫(TagLib),可以簡化創建用戶界面的過程。目前自定義標記庫由四類標記組成:
. Bean標記:用來在JSP頁面中定義、訪問Bean及其屬性
.?HTML標記:用來創建動態HTML頁面。
. Logic標記:Logic標記能夠有條件地產生輸出文本、在對象集合中循環地輸出文本,進行一定程度上的應用流程管理。
. 模板標記:Struts使用模板標記庫來實現動態模板,從而使WEB頁面布局的修改更加容易。
4.Struts框架開發工具" title="開發工具">開發工具及容器
4.1 開發工具

??? 自從Struts 發布以來,出現了許多可視化工具用于協助Struts開發。筆者建議采用以下幾中GUI 工具之一來協助開發。
. Borland 公司的Jbuilder 8。作為Java開發工具市場中處于領先地位的開發工具,其中包括了對Jakarta Struts1.0的支持。通過使用Easy Struts插件與Jbuilder8的結合,Jbuilder8提供了對Struts1.1的支持。使用Jbuilder8,可以在一個環境中完成Web開發的所有步驟,使Struts開發變成一件非常簡易的事情。
.?WebSphere Studio Application Developer是 IBM 最新為 J2EE 開發人員提供的集成開發環境。WebSphere Studio Workbench 構建于開放源碼 Eclipse 平臺之上。Eclipse.org 是一個開發工具供應商聯盟,這些供應商正為來自不同供應商的工具的無縫集成提供一種公共平臺而工作。
.?Camino是第一個真正針對Struts應用程序的可視化工具。Camino3.0 對Struts1.1有強大的支持。它所包含的許多功能可以簡化Struts web應用程序的開發。
4.2 容器
??? Struts需要通過Servlet容器實現Web應用。Struts要求容器符合Servlet規范2.2(或更高版本)和JavaServer Pages 規范1.1(或更高版本)。在眾多容器中,筆者推薦同是Apache項目的Tomcat4.X容器,這個容器不需進行額外配置就可運行struts。在商業應用中,筆者推薦BEA公司的WebLogic。WeblogicServer不僅提供對Struts支持,而且是一種廣泛使用的Java應用服務器,用于組建多層次、安全、大型和分布式的Web應用。
5.結束語
??? 目前,我國各種規模的企業擁有相當多的信息技術設備,也培養和儲備了一些自己的信息化人才隊伍。對于大型企業,建設如MIS、ERP等重大信息工程可以通過聯合大公司,采用合作開發的方式實現。對于中小型企業,如何利用有限的資金,利用現有人員、跟隨先進技術自主開發適合本企業規模的信息系統,是目前各企業需要認真對待的問題。
??? Struts開發仍然處于發展階段,發行版本 1.0 和1.1之間,有了很大改進。隨著 Struts 小組的不斷努力,具備開源項目特有優點的Struts 框架會使開發人員對 JSP 和 servlet 的特性、以及如何將它們組合起來用于 Web 應用有更好的了解。筆者在本單位的信息化建設中,經過一段時間的學習,采用Struts 框架,以Web方式實現了業務部門提出的需求,希望Struts也能成為中小企業實現信息化的一個重要技術手段。
參考文獻
kevin Duffey,Vikram Goyal.Professional JSP Site Design.Wrox Press.2002.07
Ted Husted,Cedric Dumoulin.Struts in Action. Manning Publications Co.2002.11
Chuck Cavaness. Programming Jakarta Struts. O'Reilly. 2002.11
Struts 文檔、安裝說明,Struts主頁。
Malcolm Davis. Struts,MVC 的一種開放源碼實現, IBM developerWorks
龔永生. 當前流行的J2EE WEB應用架構分析. IBM developerWorks

?

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          激情久久久久久久久久久久久久久久| 国产精品亚洲аv天堂网| 欧美婷婷久久| 中文一区字幕| 欧美成人精品在线| 亚洲国产欧美一区二区三区同亚洲| 欧美国产先锋| 亚洲精品视频啊美女在线直播| 欧美激情一区在线| 中文欧美日韩| 亚洲精品一区在线观看香蕉| 欧美日韩国产一区二区| 黄色一区三区| 国产精品高潮视频| 欧美日韩国产123区| 欧美成人中文| 欧美91视频| 久久在线精品| 免费中文日韩| 欧美一级久久久久久久大片| 国产一级久久| 欧美日韩亚洲一区二区三区在线观看| 国内精品久久久久影院 日本资源| 欧美日韩国产欧美日美国产精品| 亚洲日本成人女熟在线观看| 欧美一级理论片| 欧美一区二区在线免费播放| 国产欧美日本一区视频| 欧美三区免费完整视频在线观看| 玖玖综合伊人| 久久久亚洲人| 免费亚洲电影在线观看| 亚洲精品一区二区在线| 一区二区三区欧美视频| 99re66热这里只有精品3直播| 亚洲精品综合在线| 韩国一区二区在线观看| 亚洲视频自拍偷拍| 久久久国产一区二区三区| 国产精品乱码人人做人人爱| 乱中年女人伦av一区二区| 欧美午夜在线| 亚洲欧美在线一区| 99re6热在线精品视频播放速度| 欧美另类综合| 免费成人黄色av| 国产精品久久久久久久一区探花| 国产精品国产精品国产专区不蜜| 午夜精品成人在线视频| 久久精品日韩欧美| 欧美日本国产一区| 午夜亚洲福利在线老司机| 可以免费看不卡的av网站| 亚洲电影天堂av| 国产一区二区三区四区三区四| 欧美午夜寂寞影院| 黄色一区二区在线观看| 欧美啪啪一区| 一个色综合av| 欧美精品二区三区四区免费看视频| 国产精品一区二区三区久久| 亚洲在线1234| 国产精品扒开腿做爽爽爽软件| 欧美 日韩 国产在线| 欧美紧缚bdsm在线视频| 国内精品伊人久久久久av影院| 久久久久91| 欧美三级电影一区| 欧美在线资源| 午夜宅男久久久| 国产精品久久一区二区三区| 欧美久久综合| 久久人体大胆视频| 亚洲一区欧美一区| 欧美不卡视频| 欧美在线一二三区| 亚洲一区二区三区成人在线视频精品| 国产精品永久入口久久久| 久久成人这里只有精品| 欧美性感一类影片在线播放| 亚洲福利视频二区| 午夜精品一区二区在线观看| 免费欧美电影| 欧美午夜a级限制福利片| 国产午夜精品久久久| 99精品视频免费全部在线| 亚洲欧美日韩精品久久亚洲区| 午夜亚洲福利| 好看的av在线不卡观看| 亚洲欧美日韩一区在线观看| 亚洲欧洲精品一区二区三区不卡| 亚洲国产成人av在线| 亚洲午夜激情| 一本色道久久综合亚洲精品婷婷| 欧美理论电影在线观看| 欧美一区二区三区四区在线| 欧美亚洲在线播放| 国产综合一区二区| 亚洲黄色天堂| 国产麻豆成人精品| 国产精品国产精品国产专区不蜜| 蜜桃av综合| 国产精品二区二区三区| 久久精品国产96久久久香蕉| 亚洲综合久久久久| 狂野欧美一区| 欧美视频在线观看 亚洲欧| 国产日产欧美一区| 亚洲欧美日韩另类精品一区二区三区| 欧美日韩亚洲高清| 在线视频一区二区| 欧美xxxx在线观看| 国产一区二区三区久久| 久久国内精品自在自线400部| 亚洲电影免费在线| 极品尤物一区二区三区| 欧美午夜美女看片| 136国产福利精品导航网址应用| 亚洲深夜福利视频| 久久亚洲精选| 亚洲福利视频网| 国产欧美日韩综合一区在线播放| 亚洲午夜精品视频| 国产精品香蕉在线观看| 国产精品久久久久久久久免费樱桃| 欧美成人一区二区三区在线观看| 蜜桃久久av一区| 欧美视频一区二区三区四区| 久久久不卡网国产精品一区| 欧美日韩综合在线免费观看| 国产农村妇女毛片精品久久莱园子| 国产精品swag| 夜夜爽夜夜爽精品视频| 亚洲一区二区三区精品在线观看| 99成人精品| 一区二区视频免费在线观看| 激情久久久久久久久久久久久久久久| 国内成人自拍视频| 亚洲毛片在线看| 亚洲一区区二区| 91久久精品国产91久久性色tv| 99国产精品99久久久久久粉嫩| 久久人人97超碰精品888| 亚洲综合999| 久久九九热re6这里有精品| 国内成+人亚洲+欧美+综合在线| 欧美丝袜一区二区三区| 久久裸体艺术| 亚洲精品国产精品久久清纯直播| 亚洲国产精品视频一区| 欧美日韩精品免费观看视频| 欧美色图麻豆| 亚洲国产另类精品专区| 一区国产精品| 欧美三级电影精品| 亚洲电影在线看| 午夜精品久久久久影视| 亚洲欧美国产精品专区久久| 最新高清无码专区| 亚洲九九精品| 欧美亚洲动漫精品| 极品尤物久久久av免费看| 国产欧美在线| 欧美在线免费播放| 一区二区三区日韩欧美精品| 国内精品久久久久影院薰衣草| 一区二区三区四区国产| 欧美电影免费观看高清| 亚洲电影在线免费观看| 欧美日韩国产综合视频在线| 国产精品久久久999| 亚洲黄色成人网| 美女视频网站黄色亚洲| 卡通动漫国产精品| 国产精品伦子伦免费视频| 欧美三级中文字幕在线观看| 欧美精品一区二区三区很污很色的| 亚洲国产另类久久精品| 久热成人在线视频| 国产无遮挡一区二区三区毛片日本| 欧美日韩精品在线| 久久综合九色综合欧美就去吻| 国模大胆一区二区三区| 久久精品国产亚洲高清剧情介绍| 一区二区三区欧美| 亚洲婷婷综合色高清在线| 亚洲福利一区| 久久九九99| 欧美一区二区成人6969| 国产精品亚洲视频| 久久精品视频网| 99国内精品久久久久久久软件| 国产日韩欧美黄色| 亚洲小说欧美另类婷婷| 久久精品在线观看| 欧美日韩dvd在线观看| 欧美成人精品h版在线观看| 欧美日韩ab片| 狠狠色狠狠色综合日日tαg| 亚洲美女毛片| 国产日本欧美视频| 亚洲国产成人av好男人在线观看| 国产欧美一区二区三区久久| 久久久免费观看视频| 欧美激情黄色片| 久久精品国产69国产精品亚洲| 在线欧美小视频| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲高清中文字幕| 亚洲亚洲精品在线观看| 亚洲美女在线国产| 一区二区在线观看视频在线观看| 欧美在线视频一区| 99riav久久精品riav| 嫩草伊人久久精品少妇av杨幂| 美女999久久久精品视频| 国产日韩精品久久| 国产精品久久久久久久久久免费| 91久久国产综合久久| 日韩视频在线一区| 亚洲免费播放| 久久久噜噜噜久久狠狠50岁| 国产日产亚洲精品系列| 亚洲精品国产欧美| 国产精品一区2区| 欧美日韩国产一级| 久久九九国产精品| 欧美伦理91i| 亚洲三级影院| 国产网站欧美日韩免费精品在线观看| 久久久久久高潮国产精品视| 久久久久国产一区二区三区四区| 国内精品久久久久久影视8| 欧美日韩国产电影| 国产香蕉97碰碰久久人人| 久久精品成人欧美大片古装| 欧美精品亚洲一区二区在线播放| 欧美一区二区国产| 黄色资源网久久资源365| 极品尤物一区二区三区| 久久综合狠狠综合久久激情| 亚洲国产精品一区二区三区| 欧美—级在线免费片| 久久国产精品久久w女人spa| 亚洲精品一线二线三线无人区| 亚洲——在线| 99精品欧美一区| 久久夜色精品国产欧美乱极品| 欧美高清在线观看| 亚洲国产美国国产综合一区二区| 欧美刺激午夜性久久久久久久| 99www免费人成精品| 欧美另类69精品久久久久9999| 国产无遮挡一区二区三区毛片日本| 在线观看的日韩av| 国产精品揄拍一区二区| 久久一区视频| 欧美有码在线视频| 国产欧美日韩一区二区三区在线观看| 中国日韩欧美久久久久久久久| 一本久道久久综合中文字幕| 亚洲高清网站| 性欧美video另类hd性玩具| 国产日韩欧美在线视频观看| 猛干欧美女孩| 久久综合给合久久狠狠色| 伊人久久大香线蕉av超碰演员| 国产精品va在线播放我和闺蜜| 久热精品视频在线观看| 久久一区欧美| 亚洲自拍偷拍视频| 欧美日韩成人精品| 欧美激情免费在线| 亚洲男人的天堂在线| 日韩亚洲国产精品| 日韩一区二区免费看| 午夜激情一区| 免费在线观看日韩欧美| 亚洲女女做受ⅹxx高潮| 久久九九热免费视频| 狠久久av成人天堂| 亚洲精品一品区二品区三品区| 国产精品亚洲网站| 亚洲激情成人在线| 欧美怡红院视频一区二区三区| 久久久久久久97| 欧美日韩视频在线观看一区二区三区| 欧美日韩综合视频| 欧美日韩日本视频| 欧美视频二区| 欧美在线视频在线播放完整版免费观看| 午夜精品剧场| 精品成人乱色一区二区| 久久婷婷成人综合色| 久久成人免费日本黄色| 亚洲第一网站免费视频| 免费人成网站在线观看欧美高清| 伊人成人网在线看| 亚洲高清免费视频| 国产精品免费网站在线观看| 欧美日韩三区| 一区二区三区久久| 国产精品国码视频| 美女网站在线免费欧美精品| 国产亚洲欧美一区| 亚洲国产天堂久久综合网| 欧美国产1区2区| 麻豆精品一区二区av白丝在线| 亚洲影院免费观看| 一区二区免费在线播放| 久久久999国产| 欧美精品aa| 国产亚洲永久域名| 狂野欧美性猛交xxxx巴西| 欧美日韩高清免费| 亚洲国产精品va在线看黑人动漫| 国产欧美日韩不卡免费| 亚洲福利视频免费观看| 噜噜噜噜噜久久久久久91| 亚洲福利国产| 欧美精品久久一区二区| 国产综合色产在线精品| 一区二区亚洲精品国产| 欧美综合国产| 亚洲一卡久久| 欧美va日韩va| 欧美影院成年免费版| 欧美在线观看视频一区二区|