SSH:Struts2框架(總結)
摘要
Struts2是在WebWork2基礎發展而來的。和struts1一樣, Struts2也屬於MVC框架。不過有一點大家需要注意的是:儘管Struts2和Struts1在名字上的差別不是很大,但Struts2和struts1在程式碼編寫風格上幾乎是不一樣的。那麼既然有了struts1,為何還要推出struts2。主要是因為struts2有以下優點:
1 > 在軟體設計上Struts2沒有像struts1那樣跟Servlet API和struts API有著緊密的耦合,Struts2的應用可以不依賴於Servlet API和struts API。 Struts2的這種設計屬於無侵入式設計,而Struts1卻屬於侵入式設計。- publicclass OrderListAction extends Action {
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- }
- }
3> Strut2提供了型別轉換器,我們可以把特殊的請求引數轉換成需要的型別。在Struts1中,如果我們要實現同樣的功能,就必須向Struts1的底層實現BeanUtil註冊型別轉換器才行。
4> Struts2提供支援多種表現層技術,如:JSP、freeMarker、Velocity等
5> Struts2的輸入校驗可以對指定方法進行校驗,解決了Struts1長久之痛。
6> 提供了全域性範圍、包範圍和Action範圍的國際化資原始檔管理實現
搭建Struts2開發環境
搭建Struts2環境時,我們一般需要做以下幾個步驟的工作:
1》找到開發Struts2應用需要使用到的jar檔案.
2》編寫Struts2的配置檔案
3》在web.xml中加入Struts2 MVC框架啟動配置
搭建Struts2開發環境--開發Struts2應用依賴的jar檔案
大家可以到http://struts.apache.org/download.cgi#struts2014下載struts-2.x.x-all.zip,目前最新版為2.1.8。下載完後解壓檔案,開發struts2應用需要依賴的jar檔案在解壓目錄的lib資料夾下。不同的應用需要的JAR包是不同的。下面給出了開發Struts 2程式最少需要的JAR。
struts2-core-2.x.x.jar :Struts 2框架的核心類庫
xwork-core-2.x.x.jar :XWork類庫,Struts 2在其上構建
ognl-2.6.x.jar :物件圖導航語言(Object Graph Navigation Language),struts2框架通過其讀寫物件的屬性
freemarker-2.3.x.jar :Struts 2的UI標籤的模板使用FreeMarker編寫
commons-logging-1.x.x.jar :ASF出品的日誌包,Struts 2框架使用這個日誌包來支援Log4J和JDK 1.4+的日誌記錄。
commons-fileupload-1.2.1.jar 檔案上傳元件,2.1.6版本後必須加入此檔案
搭建Struts2開發環境-- Struts2應用的配置檔案
Struts2預設的配置檔案為struts.xml ,該檔案需要存放在WEB-INF/classes下,該檔案的配置模版如下:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- </struts>
搭建Struts2開發環境--Struts2在web中的啟動配置
在struts1.x中, struts框架是通過Servlet啟動的。在struts2中,struts框架是通過Filter啟動的。他在web.xml中的配置如下:
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
- <!-- 自從Struts 2.1.3以後,下面的FilterDispatcher已經標註為過時
- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
在StrutsPrepareAndExecuteFilter的init()方法中將會讀取類路徑下預設的配置檔案struts.xml完成初始化操作。
注意:struts2讀取到struts.xml的內容後,以javabean形式存放在記憶體中,以後struts2對使用者的每次請求處理將使用記憶體中的資料,而不是每次都讀取struts.xml檔案
第一個Struts2應用--HelloWorld
在預設的配置檔案struts.xml 中加入如下配置:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <packagename="itcast"namespace="/test"extends="struts-default">
- <actionname="helloworld"class="cn.itcast.action.HelloWorldAction"method="execute">
- <resultname="success">/WEB-INF/page/hello.jsp</result>
- </action>
- </package>
- </struts>
Struts.xml配置中的包介紹
- <packagename="itcast"namespace="/test"extends="struts-default">
- <actionname="helloworld"class="cn.itcast.action.HelloWorldAction"method="execute">
- <resultname="success">/WEB-INF/page/hello.jsp</result>
- </action>
- </package>
在struts2框架中使用包來管理Action,包的作用和java中的類包是非常類似的,它主要用於管理一組業務功能相關的action。在實際應用中,我們應該把一組業務功能相關的Action放在同一個包下。
name屬性
配置包時必須指定name屬性,該name屬性值可以任意取名,但必須唯一,他不對應java的類包,如果其他包要繼承該包,必須通過該屬性進行引用。
namespace屬性
包的namespace屬性用於定義該包的名稱空間,名稱空間作為訪問該包下Action的路徑的一部分,如訪問上面例子的Action,訪問路徑為:/test/helloworld.action。 namespace屬性可以不配置,對本例而言,如果不指定該屬性,預設的名稱空間為“”(空字串)。
通常每個包都應該繼承struts-default包, 因為Struts2很多核心的功能都是攔截器來實現。如:從請求中把請求引數封裝到action、檔案上傳和資料驗證等等都是通過攔截器實現的。 struts-default定義了這些攔截器和Result型別。可以這麼說:當包繼承了struts-default才能使用struts2提供的核心功能。 struts-default包是在struts2-core-2.x.x.jar檔案中的struts-default.xml中定義。
struts-default.xml也是Struts2預設配置檔案。 Struts2每次都會自動載入 struts-default.xml檔案。
包還可以通過abstract=“true”定義為抽象包,抽象包中不能包含action。
例子中使用到的cn.itcast.action.HelloWorldAction類如下:
- package cn.itcast.action;
- publicclass HelloWorldAction{
- private String message;
- public String getMessage() {
- return message;
- }
- publicvoid setMessage(String message) {
- this.message = message;
- }
- public String execute() {
- this.message = "我的第一個struts2應用";
- return"success";
- }
- }
例子中使用到的/WEB-INF/page/hello.jsp如下:
- <%@ page language="java"pageEncoding="UTF-8"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>第一個struts2應用</title>
- </head>
- <body>
-
相關推薦
SSH:Struts2框架(總結)
摘要 Struts2是在WebWork2基礎發展而來的。和struts1一樣, Struts2也屬於MVC框架。不過有一點大家需要注意的是:儘管Struts2和Struts1在名字上的差別不是很大,但Struts2和struts1在程式碼編寫風格上幾乎是不一樣的
SSH:Spring框架(宣告式事務管理詳解)
1) 概念:事務 (Transaction) 是訪問並可能更新資料庫中各種資料項的一個程式執行單元 (unit) 。事務通常由高階資料 庫操縱語言或程式語言 (如 SQL , C++ 或 Java ) 書寫的使用者程式的執行所引起, 並用形如 begin transacti
SSH:Struts1框架(自定義標籤函式庫)
JSTL函式庫 1.JstlFnAction.java package com; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletR
SSH:Hibernate框架(Hibernate快取機制及三種狀態)
一、why(為什麼要用Hibernate快取?) Hibernate是一個持久層框架,經常訪問物理資料庫。 為了降低應用程式對物理資料來源訪問的頻次,從而提高應用程式的執行效能。 快取內的資料是對物理資料來源中的資料的複製,應用程式在執行時從快取讀寫資料,在特定的時刻或事件會同步快取和物理資料來源的資料。
Struts2框架(二) Web.xml, Struts.xml, Action.Java 基本配置
str web.xml images ava img ima blog XML ges Struts2框架(二) Web.xml, Struts.xml, Action.Java 基本配置
我為什麽支持高校的業務系統放棄Apache Struts2框架(一)
文章 廣東 我們 然而 所有 以及 erl 業務 spring 月初聽聞廣東某高校(中山大學)發布通知:關於停止使用Apache Struts2開發框架的通知 鑒於S2漏洞較多、維護難度較大,為防範控制網絡安全風險,經研究決定,新建信息化項目不得使用S2; 在用S2的信息
我為什麽支持高校的業務系統放棄Apache Struts2框架(四)
源代碼 開源軟件 聯網 應急 mvc框架 工具 銀行 url 方法 月初聽聞廣東某高校(中山大學)發布通知:關於停止使用Apache Struts2開發框架的通知 鑒於S2漏洞較多、維護難度較大,為防範控制網絡安全風險,經研究決定,新建信息化項目不得使用S2; 在用S2的
SSH入門Struts2篇(1)——Struts2的配置和簡單示例
1.下載struts2.3並把核心jar包新增到WEB-INF/lib目錄下 struts2.3下載地址 核心jar包指的是以下八個,在這個簡單的例子裡我們暫時只需要這八個 2.struts的表單處理流程 對於一般的web應用而言,表單提交之後交給servl
SSH入門Struts2篇(4)——Action類與servlet API
struts2的execute方法中並沒有任何引數(相較於servlet的doGet和doPost),不存在任何的servlet API。即Action類沒有與任何Servlet API耦合,因此可以脫離Servlet容器環境進行單元測試。 struts2提供以
RobotFramework環境配置二十一:資料驅動(總結)
資料驅動(總結) RIDE提供的庫: 自定義庫:DataCenter.py 一、資料驅動測試 注重於測試軟體的功能性需求,也即資料驅動測試執行程式所有功能需求的輸入條件。 二、總結:根據資料來源,靈活地實現KISS。 資料較少 資料比較
SSH入門Struts2篇(2)——Action的四種自定義方法
1.Action類的生命週期 框架先例項化 Action 物件,再呼叫 Action 的 set*** 函式,封裝表單資料,然後呼叫 execute 函式,進行處理。 在第二次提交時,Action 會重新例項化,每一個 Action 物件都服務一個請求,這和
細談Struts2框架(一) Struts2框架之原理
1.Struts發展歷程 Struts 最早是作為Apache Jakarta專案的組成部分,專案的創立者希望通過對該專案的研究,改進和提高JavaServer Pages、Servlet、標籤庫以及
【SSH之旅】一步步學習Hibernate框架(一):關於持久化
stc localhost 對象 schema hbm.xml java let pass [] 在不引用不論什麽框架下,我們會通過平庸的代碼不停的對數據庫進行操作,產生了非常多冗余的可是又有規律的底層代碼,這樣頻繁的操作數據庫和大量的底層代碼的反復
【SSH框架】之Struts2系列(一)
核心 mapping 調度 fault code 組件 -i -c params 微信公眾號:compassblog 歡迎關註、轉發,互相學習,共同進步! 有任何問題,請後臺留言聯系 1、Struts2框架概述 (1)、什麽是Struts2 Struts2是一種基於M
分享知識-快樂自己:Struts2框架 工作原理及執行流程圖(攔截器的使用)
Struts2 架構圖: 1):提交請求 客戶端通過 HttpServletRequest 向 Servlet (即Tomcat)提交一個請求。 請求經過一系列的過濾器,例如圖中的 ActionContextCleanUp 和 Other filer (SlterMesh,etc)等,最後被 Str
Struts2框架學習總結(從入門到精通)
文章目錄 一、Struts2入門 struts2概述 struts2入門案例 struts2底層執行過程 struts2相關配置 struts2的核心配置檔案struts.xml struts2常量配
很easy的js雙向綁定框架(二):控制器繼承
rst data 發出 sim 跟著 cti exec mar spa 初衷 上一篇已經實現了數據的雙向綁定,但model的控制範圍是整個文檔。在實際project中必需要有作用範圍,以便做ui模塊的拆分。 這一篇,我們希望實現像angularjs一
【開源分享:入門到精通ASP.NET MVC+EF6+Bootstrap】從這裏開始,一起搭框架(1)開篇介紹
strong src 擁有 ckeditor 開發 技術分享 mdi 控制 https 框架簡介 這幾年一直在做ASP.NET開發,幾年前做項目都是老老實實一行行的寫代碼,後來發現那些高手基本都會有自己積累起來的代碼庫,現在稱之為開發框架,基礎代碼不用再去堆,
編寫python web框架(一):簡介
== web 方法 nvi ever pytho 必須 ext sim 編寫一個最簡單的應用: def app(environ, start_response): start_response(‘200 OK‘, [(‘Content-Type‘, ‘tex
SSH原理與運用(一):遠程登錄
獲得 回車 you 密碼登錄 很難 windows 註釋 設備 範圍 SSH是每一臺Linux電腦的標準配置。 隨著Linux設備從電腦逐漸擴展到手機、外設和家用電器,SSH的使用範圍也越來越廣。不僅程序員離不開它,很多普通用戶也每天使用。 SSH具備多種功能,可以用於很多