1. 程式人生 > >SSH:Struts2框架(總結)

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卻屬於侵入式設計。
  1. publicclass OrderListAction extends Action {  
  2.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  3.             HttpServletRequest request, HttpServletResponse response)  
  4.             throws Exception {  
  5.     }  
  6. }  
2> Struts2提供了攔截器,利用攔截器可以進行AOP程式設計,實現如許可權攔截等功能。

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下,該檔案的配置模版如下:

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. </struts>

搭建Struts2開發環境--Struts2在web中的啟動配置

在struts1.x中, struts框架是通過Servlet啟動的。在struts2中,struts框架是通過Filter啟動的。他在web.xml中的配置如下:

  1. <filter>
  2.     <filter-name>struts2</filter-name>
  3.     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  4.  <!-- 自從Struts 2.1.3以後,下面的FilterDispatcher已經標註為過時  
  5.     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
  6. </filter>
  7. <filter-mapping>
  8.     <filter-name>struts2</filter-name>
  9.     <url-pattern>/*</url-pattern>
  10. </filter-mapping>

在StrutsPrepareAndExecuteFilter的init()方法中將會讀取類路徑下預設的配置檔案struts.xml完成初始化操作。

注意:struts2讀取到struts.xml的內容後,以javabean形式存放在記憶體中,以後struts2對使用者的每次請求處理將使用記憶體中的資料,而不是每次都讀取struts.xml檔案

第一個Struts2應用--HelloWorld

在預設的配置檔案struts.xml 中加入如下配置:

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6.    <packagename="itcast"namespace="/test"extends="struts-default">
  7.         <actionname="helloworld"class="cn.itcast.action.HelloWorldAction"method="execute">
  8.     <resultname="success">/WEB-INF/page/hello.jsp</result>
  9.         </action>
  10.     </package>
  11. </struts>

Struts.xml配置中的包介紹
  1. <packagename="itcast"namespace="/test"extends="struts-default">
  2. <actionname="helloworld"class="cn.itcast.action.HelloWorldAction"method="execute">
  3.     <resultname="success">/WEB-INF/page/hello.jsp</result>
  4. </action>
  5. </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類如下:

  1. package cn.itcast.action;  
  2. publicclass HelloWorldAction{  
  3.     private String message;  
  4.     public String getMessage() {  
  5.         return message;  
  6.     }  
  7.     publicvoid setMessage(String message) {  
  8.         this.message = message;  
  9.     }  
  10.     public String execute() {  
  11.         this.message = "我的第一個struts2應用";  
  12.         return"success";  
  13.     }  
  14. }  

例子中使用到的/WEB-INF/page/hello.jsp如下:

  1. <%@ page language="java"pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4.   <head>
  5.     <title>第一個struts2應用</title>
  6.   </head>
  7.   <body>
  8. 相關推薦

    SSHStruts2框架總結

    摘要 Struts2是在WebWork2基礎發展而來的。和struts1一樣, Struts2也屬於MVC框架。不過有一點大家需要注意的是:儘管Struts2和Struts1在名字上的差別不是很大,但Struts2和struts1在程式碼編寫風格上幾乎是不一樣的

    SSHSpring框架宣告式事務管理詳解

    1) 概念:事務 (Transaction) 是訪問並可能更新資料庫中各種資料項的一個程式執行單元 (unit) 。事務通常由高階資料 庫操縱語言或程式語言 (如 SQL , C++ 或 Java ) 書寫的使用者程式的執行所引起, 並用形如 begin transacti

    SSHStruts1框架自定義標籤函式庫

    JSTL函式庫 1.JstlFnAction.java package com; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletR

    SSHHibernate框架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入門Struts21——Struts2的配置和簡單示例

    1.下載struts2.3並把核心jar包新增到WEB-INF/lib目錄下 struts2.3下載地址 核心jar包指的是以下八個,在這個簡單的例子裡我們暫時只需要這八個 2.struts的表單處理流程 對於一般的web應用而言,表單提交之後交給servl

    SSH入門Struts24——Action類與servlet API

    struts2的execute方法中並沒有任何引數(相較於servlet的doGet和doPost),不存在任何的servlet API。即Action類沒有與任何Servlet API耦合,因此可以脫離Servlet容器環境進行單元測試。 struts2提供以

    RobotFramework環境配置二十一資料驅動總結

    資料驅動(總結) RIDE提供的庫: 自定義庫:DataCenter.py 一、資料驅動測試 注重於測試軟體的功能性需求,也即資料驅動測試執行程式所有功能需求的輸入條件。 二、總結:根據資料來源,靈活地實現KISS。 資料較少 資料比較

    SSH入門Struts22——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具備多種功能,可以用於很多