start.jsp :<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>Insert title here</title></head><body><a
addEmployee.jsp :<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>Insert title here</title></head><body><form action="add" method="post">姓名:<input type="text"
除此之外,為了能直接存取Servlet API,Struts2還提供了一個ServletActionContext工具類,這個工具類包含了如下幾個靜態方法:ServletActionContext的幾個靜態方法方法說明static PageContext getPageContext( )取得Web應用的PageContext對象static HttpServletRequest getRequest( )取得Web應用的HttpServletRequest對象static
Struts2中配置常量總共有3種方式:① 通過struts.properties檔案。② 通過struts.xml設定檔。③
Struts2還支援配置預設Action,當使用者請求找不到對應的Action時,系統預設的Action即將處理使用者請求。配置預設Action通過<default-action-ref>元素完成,一般配置在struts.xml檔案中<package>元素下。login_register.jsp :<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html>&
Struts2的Action沒有與任何Servlet API耦合,這是Struts2的一個設計良好之處,由於Action類不再與Servlet API耦合,從而可以更輕鬆地測試該Action。但對於Web應用的控制器而言,不訪問Servlet API幾乎是不可能的,例如跟蹤HTTP Session。Struts2架構提供了一種更輕鬆的方式來訪問Servlet API。Web應用通常需要訪問的Servlet
今天,我們先不考慮外掛程式包中帶的設定檔,這個檔案在後面會討論。Struts2最常用的設定檔有4個:Struts2的設定檔檔案名稱所屬檔案位置檔案作用struts-default.xml架構內建struts2-core-2.1.8.1.jar架構內建的結果類型定義、攔截器定義、攔截器引用定義struts.xml開發人員建立src目錄下(實際在classes目錄下)定義開發人員編寫的Result、攔截器和Action組件default.properties架構內建struts2-core-2.1.
輸入校正是所有Web應用必須處理的問題,因為是Web應用的開放性,網路上所有的瀏覽器都可以自由使用該應用,因此該應用通過輸入頁面收集的資料是非常複雜的,不僅會包含正常使用者的誤輸入,還可能包含惡意使用者的惡意輸入。一個健壯的應用系統必須將這些非法輸入阻止在應用之外,防止這些非法輸入進入系統,這樣才可以保證系統不受影響。異常的輸入,輕則導致系統非正常中斷,重則導致系統奔潰。應用程式必須能正常處理表現層接收的各種資料,通常的做法是遇到異常輸入時,應用程式直接返回,提示瀏覽者必須重新輸入,也就是將那些
實現了Action處理類之後,就可以在struts.xml檔案中配置該Action了。配置Action就是讓Struts2知道哪個Action處理哪個請求,也就是完成使用者請求和Action之間的對應關係。我們可以認為,Action是Struts2的基本“程式單位”。Struts2使用<package>來組織Action,因此將Action定義放在包定義下完成,定義Action使用<action>元素完成。Struts2架構中核心組件就是Action和攔截器,Struts
Struts2提供了基於驗證架構的輸入校正,在這種校正方式下,所有的輸入校正只需要編寫簡單的設定檔,Struts2的驗證架構將會負責進行校正。register.jsp :<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"
查看上篇文章的struts.xml,檔案中的兩個<action>元素定義絕大部分相同,可見這種定義相當冗餘。為瞭解決這個問題,Struts2還有另一種形式的DMI:使用萬用字元的方式。在配置<action>元素時,允許在指定name屬性時使用模式字串(即使用“*”代表一個或多個任一字元),接下來就可以在class屬性、method屬性及<result>子項目中使用{N}的形式來代表前面第N個星號(*)所匹配的字串。login_register.jsp
Struts1提供了DispatchAction,從而允許一個Action內包含多個控制處理邏輯。例如對於同一個表單,當使用者通過不同的提交按鈕來提交表單時,系統需要使用Action的不同方法來處理使用者請求,這就需要讓同一個Action裡包含多個控制處理邏輯。Struts2同樣提供了這種包含多個處理邏輯的Action,這就是動態方法引動過程(DMI,Dynamic Method
start.jsp :<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>Insert title here</title></head><body><a
start.jsp :<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>Insert title here</title></head><body><form action="sample" method="post">username:<input
對於一個表單有多個提交按鈕並且分別對應不同的處理邏輯的情形,Struts2還提供了一種處理方法,即將一個Action處理類定義成多個邏輯Action。如果在配置<action>元素時,為它指定method屬性,則可以讓Action調用指定方法,而不是預設的execute方法來處理使用者請求。login_register.jsp:<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><
start.jsp :<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>Insert title here</title></head><body><a
雖然Struts2提供了ActionContext來訪問Servlet API,但這種訪問畢竟不是直接獲得Servlet API的執行個體。為了在Action中直接存取Servlet API,Struts2還提供了如下幾個介面。① ServletContextAware : 實現該介面的Action可以直接存取Web應用的ServletContext執行個體。實現該介面需要實現方法setServletContext(ServletContext context)。②
Struts2提供了大量標籤來協助開發表現層頁面,struts2標籤庫的標籤不依賴於任何錶現層技術,也就是說,Struts2提供的大部分標籤,可以在各種表現層技術中使用,包括最常用的JSP頁面,也可以在Velocity和FreeMarker等模版技術中使用。Struts2將所有標籤都定義在一個s標籤庫裡。雖然Struts2把所有的標籤都定義在URI為“/struts-tags”的空間下,但我們依然可以對Struts2標籤進行簡單的分類。從最大範圍來分,Struts2可以將所有標籤分成如下三類:開
start.jsp :<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>Insert title here</title></head><body><a href="sample01">sample01</a><br><a
Struts2利用內建的OGNL(Obejct Graph Navigation Language)運算式語言的支援,大大加強了Struts2的資料訪問功能,XWork在原有的OGNL基礎上,增加了對ValueStack的支援。在傳統的OGNL運算式求值中,系統會假設只有一個“根”對象。下面是標準OGNL運算式求值,如果系統的Stack