1.為什么要使用struts
a.struts建立在MVC這種公認的好的模式上的,Struts在M,V,C上都有涉及,但它主要提供一個好的控制器和一套定制的標簽庫上,也就是說它的著力點在C,V上,有MVC的一系列優點,如:結構層次分明,高可重用性,增加了程序的健壯性呵可伸縮性,便于開發與設計分工,提供集中統一的權限控制,校驗,國際化,日志等等;
b.struts它是開源項目,得到了包括它的發明者Craig R.McClanahan在內的一些程序大師和高手持續而細心的呵護,并且經受了實戰的檢驗,使其功能越來越強大,體系也日益完善;
c.struts框架能和其他技術很好的融合,如與Spring,Hibernate等框架的整合,大大加快了開發速度
2.Framework的概念
框架是人們用于解決相同或者相似類型問題的方案
特點:可重用性,可擴展性,可收縮性。基于請求響應(request-response)模式的應用Framework的邏輯結構
控制器:Controller
業務邏輯層:Business Logic
數據邏輯層:Data Logic
3.Struts的概念和體系結構
Struts是Apache組織的一個開源項目,主要是采用Servlet和JSP技術來實現的
Struts是一個基于Sun JavaEE平臺的MVC框架,它采用MVC模式,將MVC模式分離顯示邏輯和業務邏輯的能力,發揮的淋漓盡致
(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的實踐步驟
步驟一:搭建環境
a.導入jar包,使用其中的類
b.建立一個配置文件,struts=config.xml
方便struts用戶使用
一般在WEB=INF下
c.修改web.xml
注冊struts中心控制器 --ActionServlet
<serlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
<init-param> <!-- 初始化加載配置文件 -->
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup> <!-- web容器啟動就加載該servlet -->
</serlet>

<servlet-mapping> <!-- 該servlet對外調用的映射 -->
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>

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