Struts2詳解

   struts2框架是SSH框架集中的框架之一,是一個基於MVC設計模式的Web應用框架,它本質上至關於一個servlet,在MVC設計模式中,Struts2做爲控制器層(Controller)來創建模型與視圖的數據交互。java

  在使用struts2框架的過程當中,須要兩個配置文件,分別爲web.xmlstruts.xml,服務器一啓動就加載web.xml的配置,web.xml啓動時,在StrutsPrepareAndExecuteFilterinit()方法中將會讀取類路徑下默認的配置文件struts.xml完成初始化操做;struts2讀取到struts.xml後,以javabean形式存放在內存中,之後struts2對用戶的每次請求處理將使用內存中的數據,而不是每次都讀取struts.xml文件。web

1、訪問流程:apache

(1)客戶端提交請求設計模式

(2)請求被提交到一系列過濾器(先ActionContentCleanUp,而後其餘過濾器,最後FilterDispatcher服務器

(3)FilterDispatcher諮詢ActionMapper是否須要調用某個Action來處理這個請求,若是ActionMapper決定調用某個ActionFilterDispatcher則把請求的處理交給ActionProxyapp

(4)ActionProxy經過Configuration Managerstruts.xml)詢問框架的配置文件,找到須要調用的Action類。框架

(5)ActionProxy建立一個ActionInvocation實例,同時ActionInvocation經過代理模式調用Action,但在調用以前,ActionInvocation會根據配置加載Action相關的全部Interceptor(攔截器)spa

(6)一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果result設計

 

2、struts.xml的文件組成3d

1XML 頭部聲明爲<?xml version="1.0" encoding="UTF-8"?>

2DTD約束文件<!DOCTYPE struts PUBLIC

"-//Apache Software undation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

DTD文件是一種保證xml文檔格式正確的有效方法,經過比較xml文檔和DTD文件來看文檔是否符合規範,元素和標籤使用是否正確。

3struts 根標籤

4devMode 開發模式 <constant name="struts.devMode" value="true" />value的值爲false的時候,就不是開發模式,修改struts.xml文件以後運行項目須要重啓服務器;當value的值爲true時,爲開發模式,修改struts.xml文件以後運行項目不須要重啓服務器就能運行,而且可進行調試信息輸出。

5package 包配置

struts2框架使用包來管理Action和攔截器等。每一個包就是多個Action、多個攔截器、多個攔截器引用的集合。每一個package元素定義了一個包配置。經常使用屬性有:

name:必填屬性,指定包名;extends可選屬性,指定該包繼承其餘包;namespace:可選屬性,用來制定該包的命名空間。考慮到同一個Web應用中須要同名的Actionstruts2以命名空間的方式來管理Action,同一個命名空間不能有同名的Action

通常來講,package的使用按照項目的功能模塊來劃分,從而使得項目更有邏輯性。

6、實現action類:struts2Action是核心內容。struts2中一般直接使用Action來封裝HTTP請求參數,所以,Action類裏應該包含與請求參數對應的屬性,並提供settergetter方法。action有如下屬性:

nameaction的名稱;class:對應的類的路徑;method:調用action中的方法名

action中:——>result 結果,有一下屬性:

name:返回值,返回值能夠是框架提供的常量(SUCCESSFINALLOGININPUT等),也能夠自定義

type:默認不寫爲請求轉發,type=redirect表示「重定向」

result之間的路徑表示要跳轉的路徑。

  struts2的優勢:

1、結構更加清晰,地址和類之間的映射都配置在struts.xml中,struts2內部按照MVC設計模式設計,而且做爲web開發中MVC設計模式中的Controller層。

2、在操做Action時,能夠直接使用參數,不須要考慮requestresponsestruts2也提供了ServletActionContext對象,經過方法ServletActionContext.getRequest()得到當前請求的對象requestresponse對象)。

3Action得到頁面bean.屬性拼裝的實體Bean;頁面直接得到Action中的屬性。

相關文章
相關標籤/搜索