前面我們剛剛學完文件上傳,那么我們就接著來看和文件上傳相對應的文件下載吧。對于文件上傳而言,文件下載實現起來要簡單的多。通常我們可以直接將一個超鏈接的地址指向我們想要給用戶下載的資源即可。但是如果這些資源是瀏覽器能夠解析的文件類型,比如html文件等,那么瀏覽器將不會提示用戶下載這些文件了,而是會直接在瀏覽器中打開。這樣做還有一個問題,那就是我們的資源文件的地址就直接暴露給用戶了,它可以在其他的頁面中被輕易的引用,這往往讓我們覺得不太安全。那么就需要通過某種手段來告訴瀏覽器,讓它提示用戶下載我們的資源文件,并且將這些資源文件的真實地址隱藏起來。
.Struts2上傳要用到commons-fileupload包和commons-io包,注意導入。介紹如下:1.單個文件上傳;2.多個文件上傳;3.上傳文件大小和類型限制4.修改默認提示信息.
Struts2中的屬性驅動和模型驅動 Struts2中的屬性驅動和模型驅動2 Struts2中的異常處理機制 ognl表達式 Struts2中文件的上傳和下載 攔截器 Struts2中的輸入校驗 Struts2中的類型轉換 使用Annotation取代struts.xml配置 Struts2中文亂碼處理 Struts2常用標簽 UI標簽的主題設置
Struts2學習目標:Struts2運用MVC設計模式,基于JSP/Servlet實現實際上是Struts1.x與WebWork2.2的整合(Apache+OpenSymphony)MVC設計模式概念MVC結構圖MVC處理過程MVC的適用范圍Strus2的體系架構與工作流程.
如果有對HTML比較熟悉的讀者,肯定知道諸如select、chekbox這些HTML標簽的使用方式。這些標簽其實是可以歸類為表單標簽。在Struts2中除了這些基本的HTML標簽的定義外,它還定義了許多特殊的但又基于前述這些HTML表單標簽的個性化標簽。這些表單標簽各具特色,是很值得介紹的。在開發中負責view層功能開發的開發人員如果使用這些標簽,就能發現Struts2提供了多么豐富的view層功能。
struts1.2和struts2區別Action類1.Struts1要求Action類要擴展自一個抽象基類。Struts1的一個共有的問題是面向抽象類編程而不是面向接口編程。2.Struts2的Action類實現了一個Action接口,連同其他接口一起來實現可選擇和自定義的服務。Struts2提供一個名叫Action Support的基類來實現一般使用的接口。雖然,Action接口不是必須的。任何使用execute方法的POJO對象可以被當作Struts2的Action對象來使用。
Struts 2是Struts的下一代產品,是在 struts 1和WebWork的技術基礎上進行了合并的全新的Struts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構差別巨大。Struts 2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與Servlet API完全脫離開,所以Struts 2可以理解為WebWork的更新產品。雖然從Struts 1到Struts 2有著太大的變化,但是相對于WebWork,Struts 2的變化很小。
核心提示:針對左邊的登錄功能,登錄頁面login.jsp;action為LoginAction;針對右邊的注冊功能,注冊頁面為regist.jsp;action為RegistAction.
雖然Struts2號稱是一個全新的框架,但這僅僅是相對Struts 1而言。Struts 2 與Struts 1相比,確實有很多革命性的改進,但它并不是新發布的新框架,而是在另一個赫赫有名的框架:WebWork基礎上發展起來的。從某種程度上來講,Struts2沒有繼承Struts 1的血統,而是繼承WebWork的血統。或者說,WebWork衍生出了Struts2,而不是Struts 1衍生了Struts2。因為Struts2是WebWork的升級,而不是一個全新的框架,因此穩定性、性能等各方面都有很好的保證:而且吸收了Struts 1和WebWork兩者的優勢,因此,是一個非常值得期待的框架。
struts模型驅動struts2應用的分層體系架構;action---service-daostruts2的模型驅動(ModelDriven)在提交表單的屬性放在action中的是屬性驅動。屬性驅動與模型驅動的比較屬性驅動靈活,準確;模型驅動不靈活,因為很多時候,頁面所提交過來的參數并不屬于模型中的屬性,也就是說頁面所提交過的參數與模型中的屬性并不一致,這是很常見的情況。
Struts2是Struts社區和WebWork社區的共同成果,我們甚至可以說,Struts2是WebWork的升級版,他采用的正是WebWork的核心,所以,Struts2并不是一個不成熟的產品,相反,構建在WebWork基礎之上的Struts2是一個運行穩定、性能優異、設計成熟的WEB框架。
學習的時候,總分不清楚在struts2中頁面的傳值和取值是怎么來完成的,所以從網上搜了很多資料,現在把這些資料總結寫,留著以后參考。。看完資料后也大概明白了。
Struts 2框架有兩個核心配置文件: struts.xml和struts.properties 其中struts.xml文件主要負責管理應用中的Action映射,以及該Action包含的Result定義等。除此之外,Struts 2框架還包含一個struts.properties文件,該文件定義了Struts 2框架的大量屬性,開發者可以通過改變這些屬性來滿足應用的需求。
Struts作為MVC 2的Web框架,自推出以來不斷受到開發者的追捧,得到用廣泛的應用。作為最成功的Web框架,Struts自然擁有眾多的優點: 1、MVC 2模型的使用 ;2、功能齊全的標志庫(Tag Library) ;3、開放源代碼 但是,所謂“金無赤金,人無完人”,Struts自身也有不少的缺點: 1、需要編寫的代碼過多,容易引起“類爆炸” ;2、單元測試困難 這些缺點隨著Web的發展越來越明顯。這就促生了Struts 2.0,它的誕生能很好的解決上述問題。 好啦,廢話就不多說了,現在就讓我們感受一下的Struts 2.0的魅力吧。
Struts作為MVC 2的Web框架,自推出以來不斷受到開發者的追捧,得到用廣泛的應用。作為最成功的Web框架,Struts自然擁有眾多的優點: ? MVC 2模型的使用 ? 功能齊全的標志庫(Tag Library) ? 開放源代碼 但是,所謂“金無赤金,人無完人”,Struts自身也有不少的缺點: ? 需要編寫的代碼過多,容易引起“類爆炸” ? 單元測試困難 這些缺點隨著Web的發展越來越明顯。這就促生了Struts 2.0,它的誕生能很好的解決上述問題。 好啦,廢話就不多說了,現在就讓我們感受一下的Struts 2.0的魅力吧。
Struts2自定義攔截器。Struts自定義攔截器步驟:步驟1:建立Struts工程,編寫Action和相應的頁面 步驟2:自定義一個實現Interceptor接口的類,在intercept方法中實現攔截器邏輯 步驟3:在struts.xml中為指定Action位置添加攔截器配置 步驟4:為避免覆蓋掉默認的攔截器,添加配置defaultStack攔截器
GNL是Object Graphic Navigation Language(對象圖導航語言)的縮寫,OGNL是一個開源項目, OGNL是一種功能強大的EL(Expression Language,表達式語言),可以通過簡單的表達式來訪問Java對象中的屬性。<br> OGNL先在WebWork項目中得到應用,也是Struts 2框架視圖默認的表達式語言,可以說,OGNL表達式是Struts 2框架的特點之一。
struts2標簽詳解
Struts 2是Struts的下一代產品,是在 struts 和WebWork的技術基礎上進行了合并的全新的Struts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構的差別巨大。Struts 2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與Servlet API完全脫離開,所以Struts 2可以理解為WebWork的更新產品。雖然從Struts 1到Struts 2有著太大的變化,但是相對于WebWork,Struts 2只有很小的變化。
Struts 2是在WebWork和Struts 1的基礎上發展起來的,因此掌握一定的WebWork和Struts 1框架的知識,將對于掌握Struts 2框架大有裨益。特別是WebWork方面的開發經驗,絕大部分都可以適用于Struts 2應用的開發。本章將會簡要介紹Struts 1和WebWork框架的使用。