1.為什么要使用struts
a.struts建立在MVC這種公認(rèn)的好的模式上的,Struts在M,V,C上都有涉及,但它主要提供一個好的控制器和一套定制的標(biāo)簽庫上,也就是說它的著力點在C,V上,有MVC的一系列優(yōu)點,如:結(jié)構(gòu)層次分明,高可重用性,增加了程序的健壯性呵可伸縮性,便于開發(fā)與設(shè)計分工,提供集中統(tǒng)一的權(quán)限控制,校驗,國際化,日志等等;
b.struts它是開源項目,得到了包括它的發(fā)明者Craig R.McClanahan在內(nèi)的一些程序大師和高手持續(xù)而細(xì)心的呵護(hù),并且經(jīng)受了實戰(zhàn)的檢驗,使其功能越來越強(qiáng)大,體系也日益完善;
c.struts框架能和其他技術(shù)很好的融合,如與Spring,Hibernate等框架的整合,大大加快了開發(fā)速度
2.Framework的概念
框架是人們用于解決相同或者相似類型問題的方案
特點:可重用性,可擴(kuò)展性,可收縮性。基于請求響應(yīng)(request-response)模式的應(yīng)用Framework的邏輯結(jié)構(gòu)
控制器:Controller
業(yè)務(wù)邏輯層:Business Logic
數(shù)據(jù)邏輯層:Data Logic
3.Struts的概念和體系結(jié)構(gòu)
Struts是Apache組織的一個開源項目,主要是采用Servlet和JSP技術(shù)來實現(xiàn)的
Struts是一個基于Sun JavaEE平臺的MVC框架,它采用MVC模式,將MVC模式分離顯示邏輯和業(yè)務(wù)邏輯的能力,發(fā)揮的淋漓盡致
(Struts is a flexible control layer based on standard technologies like Java Servlets,JavaBeans,ResourceBundles,and XML,as well as various Jakarta Commons packages,like BeanUtils and Chain of Responsibility.The frameword helps you create an extensible developmnt environment for your application,based on published standards and proven design patterns)
4.Struts的實踐步驟
步驟一:搭建環(huán)境
a.導(dǎo)入jar包,使用其中的類
b.建立一個配置文件,struts=config.xml
方便struts用戶使用
一般在WEB=INF下
c.修改web.xml
注冊struts中心控制器 --ActionServlet















步驟二:建立ActionForm
步驟三:建立Action
建立一個類,繼承Action,覆蓋execute方法
注冊,修改配置文件struts-config.xml
path:指明調(diào)用者(jsp)能通過中心控制器ActionServlet找到該Action
type:指明該action類全名
name:該action引用的form的名稱
步驟四:頁面訪問
5.Struts的工作原理
6.Struts的組件
7.Struts的配置文件簡介
8.Struts標(biāo)記庫
9.異常處理框架
10.校驗框架
11.高級特性
12.Struts優(yōu)缺點
優(yōu)點:
Struts跟Tomcat、Turbine等諸多Apache項目一樣,是開源軟件,這是它的一大優(yōu)點。使開發(fā)者能更深入的了解其內(nèi)部實現(xiàn)機(jī)制。除此之外,Struts的優(yōu)點主要集中體現(xiàn)在兩個
方面:Taglib和頁面導(dǎo)航。Taglib是Struts的標(biāo)記庫,靈活動用,能大大提高開發(fā)效率。另外,就目前國內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開發(fā)自己的標(biāo)
記,或許Struts是一個很好的起點。
關(guān)于頁面導(dǎo)航,我們認(rèn)為那將是今后的一個發(fā)展方向,事實上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維
護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個項目時,這種優(yōu)勢體現(xiàn)得更加明顯。
缺點:
Taglib是Struts的一大優(yōu)勢,但對于初學(xué)者而言,卻需要一個持續(xù)學(xué)習(xí)的過程,甚至還會打亂我們網(wǎng)頁編寫的習(xí)慣,但是,當(dāng)我們習(xí)慣了它時,我們會覺得它真的很棒。
Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時,也增加了系統(tǒng)的復(fù)雜度。毫無疑問,要理解 Struts 必須接受一定的培訓(xùn)。隨著變化的不斷加入,這有時會令人
很沮喪。
Struts從產(chǎn)生到現(xiàn)在還不過3-4年時間,就已逐步越來越多運用于商業(yè)軟件。雖然它現(xiàn)在還有不少缺點,但它是一種非常優(yōu)秀的J2EE MVC實現(xiàn)方式,如果我們的系統(tǒng)準(zhǔn)備采用
J2EE MVC架構(gòu),那么,不妨考慮一下Struts。
Struts 是一種基于 Web 的 MVC 解決方案,所以必須用 HTML、JSP 文件和 servlet 來實現(xiàn)它,Struts 需要支持 JSP 1.1 和 Servlet 2.2 規(guī)范的 servlet 容器。學(xué)習(xí)、理
解和掌握Struts是我們每個基于J2EE軟件開發(fā)人員一門必修的課程,也是我們對企業(yè)J2EE技術(shù)應(yīng)用的進(jìn)一步深化。
/************************************************************************************************/
Struts的基本組件包
org.apache.struts.action
基本上,控制整個struts framework的運行的核心類、組件都在這個包中,比如我們上面提到的控制器ActionServlet。已經(jīng)Action,ActionForm,ActionMapping等等。struts1.1比1.0多了 DynaActionForm 類。增加了動態(tài)擴(kuò)展生成FormBean功能
org.apache.struts.actions
這個包是主要作用是提供客戶的http請求和業(yè)務(wù)邏輯處理之間的特定適配器轉(zhuǎn)換功能,而1.0版本中的部分動態(tài)增刪FromBean的類,也在struts1.1中被Action包的DynaActionForm組件所取代
org.apache.struts.config
提供對配置文件struts-config.xml元素的映射。這也是sturts1.1中新增的功能
org.apache.struts.util
Strtuts為了更好支持web application的應(yīng)用,體統(tǒng)了一個些常用服務(wù)的支持,比如Connection Pool和Message Source。
org.apache.struts.taglib
這不是一個包,而是是一個客戶標(biāo)簽類的集合。下面包括Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags這幾個用于構(gòu)建用戶界面的標(biāo)簽類。
org.apache.struts.validator
Struts1.1 framework中增加了validator framework,用于動態(tài)的配置from表單的驗證。
/************************************************************************************************/
核心Struts 類和MVC 的對應(yīng)
類 描述
ActionForward 用戶指向或者視圖選擇
ActionForm 狀態(tài)改變的數(shù)據(jù)
ActionMapping 狀態(tài)改變事件
ActionServlet 控制器,接受用戶請求和狀態(tài)改變,以及發(fā)出視圖選擇
Action 控制器的一部分,于模型交互,執(zhí)行狀態(tài)改變或狀態(tài)查詢,
以及告訴ActionServlet 下一個選擇的視圖
/************************************************************************************************/
Struts 使用一些配置文件和視圖助手(view helpers)來溝通控制器和模型
ApplicationResources.properties 存儲本地化信息和標(biāo)簽,以使應(yīng)用可以國際化
struts-config.xml 存儲控制器對象的缺省配置,包括模型支持的用戶指向,狀態(tài)改變,狀態(tài)查詢
標(biāo)記庫描述符 目的
struts-html.tld 擴(kuò)展HTML Form的JSP標(biāo)記
struts-bean.tld 擴(kuò)展處理JavaBean的JSP標(biāo)記
struts-logic.tld 擴(kuò)展測試屬性值的JSP標(biāo)記
/************************************************************************************************/
控制器組件的配置框架中的控制器組件是有org.apache.struts.action.ActionServlet類實現(xiàn)的,這個類是javax.servlet.http.HttpServlet類的擴(kuò)展。
ActionServlet配置:我們需要在web.xml中聲明ActionServlet,并且將它配置成啟動時進(jìn)行加載。以下為可以配置的初始化參數(shù):
參數(shù) 默認(rèn)值 描述
application Null 應(yīng)用程序的資源集合的類
bufferSize 4096 文件上傳的緩沖區(qū)大小
config /WEB-INF/struts-config.xml 配置文件的位置和名稱
content Text/html 默認(rèn)的內(nèi)容類型
debug 0 程序調(diào)試的級別
detail 0 程序調(diào)試細(xì)節(jié)的級別
factory Null 消息資源工廠,用于國際化中解釋消息資源
formBean org.apache.struts.action.ActionFormBean 封裝ActionForm bean信息的類的名稱
forward Org.apache.struts.action.ActionForward 封裝ActionForward對象信息的類的名稱
locale True 為true,將在用戶會話中存儲一個本地對象
mapping Org.apache.struts.action.ActionForward 封裝ActionMapping信息的類的名稱
maxFileSize 250M 上傳文件的最大尺寸
multipartClass Org.apache.struts.action.ActionForward 處理多部分請求的類的名稱
noCache False HTTP標(biāo)頭是否要設(shè)置為禁止緩寸
Null True 設(shè)置為true,對于無效的信息關(guān)鍵字將返回null
tempDir 作為一個servlet參數(shù)提供給程序的工作目錄 處理下載文件是使用的臨時工作目錄
validate True 是否使用新格式的配置文件
vallidating True 是否對配置文件進(jìn)行有效性分析