Struts2詳解


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

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

一、訪問流程:

(1)客戶端提交請求

(2)請求被提交到一系列過濾器(先ActionContentCleanUp,然后其他過濾器,最后FilterDispatcher

(3)FilterDispatcher咨詢ActionMapper是否需要調用某個Action來處理這個請求,如果ActionMapper決定調用某個ActionFilterDispatcher則把請求的處理交給ActionProxy

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

(5)ActionProxy創建一個ActionInvocation實例,同時ActionInvocation通過代理模式調用Action,但在調用之前,ActionInvocation會根據配置加載Action相關的所有Interceptor(攔截器)

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

 

二、struts.xml的文件組成

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中的屬性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM