1. 程式人生 > >Struts2框架概述

Struts2框架概述

什麽是 下載 理解 設計模式的 處理 項目 con apach 復雜

Struts2-day01

一、 框架概述

什麽是框架,為什麽使用框架,框架優點

框架(framework)是一個基本概念上的結構,用於去解決或者處理復雜的問題

框架,即framework。其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞臺,你來做表演。

框架是在特定的領域內解決問題。

優點

重用代碼大大增加,軟件生產效率和質量也得到了提高

使用框架開發,它提供統一的標準,大大降低了我們的後期維護。

學習框架重點:了解框架做了什麽,我們要在這個基礎上在做什麽事情。

二、 java開發中常用框架

SSH (SSM SSI)

SSH struts2 spring hibernate

SSM(SSI) springmvc spring mybatis(ibatis)

SSH 它是企業開發中比較主流的一套架構。

SSH框架在開發中所處的位置:

技術分享圖片

三、 Struts2框架介紹

什麽是struts2框架,學習struts2框架的核心。

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

Struts2=struts1+webwork

問題:struts2是一個mvc框架,它的mvc是什麽?

javaweb開發中的mvc,是在jspmodel2模式中提過

Model------javabean

View--------jsp

Controller----servlet

核心點:

1.攔截器 interceptor

2.Action

3.ognlvalueStack

在現在開發中與struts2比較類似的框架有哪些?

Struts1 webwork springmvc jsf

Struts2框架流程

技術分享圖片

四、 今天內容介紹與重點

今天內容:

一個簡單的登錄案例

技術分享圖片

在這個案例中,我們要使用

struts2框架怎樣解決

重點:

1.struts2框架如何完成原來由servlet完成的工作。

2.Struts2框架如何完成請求參數的封裝處理

3.Struts2框架如何完成頁面跳轉。

技術分享圖片

五、 簡單登錄案例原型

需要三個jsp頁面 login.jsp success.jsp failer.jsp

還需要一個servlet LoginServlet 主要完成的是業務邏輯操作。

login.jsp

技術分享圖片

LoginServlet

技術分享圖片

六、 Struts2框架來完成登錄操作

1. 問題:為什麽使用struts2框架?

Struts2框架它是一個在web中應用的mvc框架。

我們使用strtus2框架來完成web開發有什麽優勢?

技術分享圖片

2. 問題:怎樣使用strtuts2框架

首先要上網下載它的jar包。

步驟:

1.導入相關的jar文件

2.需要在web.xml文件中配置一個Filter(只有配置了它才可以使用struts2框架)

3.struts.xml配置

4.創建Action來完成邏輯操作

3. 快速入門

我們使用的是struts2 2.3.24版本

我們使用strtus2框架不是直接將它的lib包下的所有的jar文件copy到項目中,而是使用其中的一部分。

我們可以參考它的示例代碼:

技術分享圖片

1.導入13jar

2.需要在web.xml文件中配置StrutsPrepareAndExecuteFilter

3.創建一個struts.xml文件,它的位置是可以放置在src下。

3.1. 代碼實現

jsp頁面

技術分享圖片

Action

技術分享圖片

struts.xml文件配置

技術分享圖片

3.2. 流程分析

技術分享圖片

4. 使用struts2完成簡單登錄操作

1.login.jsp頁面不變動

2.創建一個LoginAction來完成邏輯操作

3.struts.xml文件中完成配置操作

問題1:LoginAction中如何得到usernamepassword

可以直接在Action類中提供成員屬性,並為其提供get/set方法。

就可以得到請求參數

問題2:如果實現路徑跳轉?

1.我們可以給action中的方法添加一個String返回值

2.struts.xml配置文件中,在其對應的action配置上通過<result>來確定跳轉的路徑。

技術分享圖片

七、 Struts2框架執行流程

1. Struts2源碼導入

技術分享圖片

對於struts2框架它的源代碼我們主要使用三部分

  1. struts2核心部分源代碼 org.apache.struts2xx

src\core\src\main\java

  1. struts2xwork核心部分源代碼

src\xwork-core\src\main\java\com\opensymphony\xwork2

  1. struts2的插件的源代碼

src\plugins

2. 關於struts.xml配置文件中提示問題

第一步

eclipsewindow下首選面中查找xml catalog

第二步

Location:配置本地的dtd文件路徑

key type:選擇URI

Key: http://struts.apache.org/dtds/struts-2.3.dtd

註意版本要對應,如果你可以上網,那麽會自動緩存dtd,具有提示功能。

技術分享圖片

3. 執行流程介紹

1.當通過瀏覽器發送一個請求

2.會被StrutsPrepareAndExecuteFilter攔截

3.會調用strtus2框架默認的攔截器(interceptor)完成部分功能

4.在執行Action中操作

5.根據Action中方法的執行結果來選擇來跳轉頁面Resutl視圖

一般管StrutsPrepareAndExecuteFilter 叫做前端控制器(核心控制器),只有配置了這個filter我們的strtus2框架才能使用。

Strtus2的默認攔截器(interceptor)它們是在struts-default.xml文件中配置

註意:這上xml文件是在strtus-core.jar包中。

默認的攔截器是在defaultStack中定義的。

八、 Struts2配置詳解

1. Struts2配置文件加載順序

技術分享圖片

第一個加載的是default.properties文件

位置:strtus2-core.jarorg.apache.struts2包下

作用:主要是聲明了struts2框架的常量

第二個加載的是一批配置文件

Strtus-default.xml

位置:struts2-corl.jar

作用:聲明了interceptor result bean

Strtus-plugin.xml

位置:strtus2的插件包中

作用:主要用於插件的配置聲明

Strtus.xml

位置:在我們自己的工程中

作用:用於我們自己工程使用strtus2框架的配置

第三個加載的是自定義的strtus.properties

位置:都是在自己工程的src

作用:定制常量

第四自定義配置提供

第五加載的是web.xml配置文件

主要是加載strtus2框架在web.xml文件中的相關配置.

第六 bean相關配置

重點掌握:

1.Default.properties

2.Struts-default.xml

3.Struts-plugin.xml

4.Strtus.xml

5.web.xml

2. struts.xml文件配置介紹

2.1. package配置

1.name屬性 作用:定義一個包的名稱,它必須唯一。

2.namespace屬性 作用:主要是與action標簽的name屬性聯合使用來確定一個action 的訪問路徑

3.extends屬性 作用:指定繼承自哪個包。一般值是strtus-default
strtus-default包是在strtus-default.xml文件中聲明的。

4.abstruct屬性 它代表當前包是一個抽象的,主要是用於被繼承

2.2. action配置

1.name屬性 作用:主要是與packagenamespace聯合使用來確定一個action的訪問路

2.class屬性 作用:用於指示當前的action

3.method屬性 作用:用於指示當前的action類中的哪個方法執行

2.3. result配置

它主要是用於指示結果視圖

1.name屬性 作用是與action類的method方法的返回值進行匹配,來確定跳轉路徑

2.type屬性 作用是用於指定跳轉方式

2.4. 擴展

關於action配置中的classmethod的默認值以及result中的nametype 默認值問題

技術分享圖片

原因:strtus-default.xml文件中配置

技術分享圖片

它的作用就是當一個請求來時,如果查找不到指定的class及對應的method就會執行

ActionSupport類中的execute方法。

在這個類的execute方法中默認返回的是”success”

也就是說,resultname屬性默認值是success,默認的跳轉方式是請求轉發 dispatcher

3. 常量配置

default.properties文件中定義了struts2框架常用常量 .

問題:我們怎樣可以定義常量

1.可以在src下創建一個strtus.properties配置文件

2.可以在web.xml文件中配置

3.可以直接在strtus.xml文件中定義常量 (推薦)

技術分享圖片

註意:後加載的配置文件中的常量會將先加載的常量覆蓋

九、 Struts2Action詳解

Struts2中的action,主要是完成業務邏輯操作。Action替代在servlet中完成的作用。

Action的學習主要有兩點

如何創建一個struts2的action

如果訪問一個struts2的action

1. Action類創建方式(三種)

創建一個pojo類

Pojo(plani Ordinary java object)簡單的java對象

Pojo類就是沒有實現任何接口沒有繼承任何類

優點:無耦合

缺點:所有的功能都要自己完成

創建一個類實現一個Action接口

com.opensymphony.xwork2.Action

技術分享圖片

在Action接口中定義了五個常量,一個execute方法

五個常量:它們是默認的五個結果視圖<result name=””>:

ERROR : 錯誤視圖

INPUT: 它是struts2框架中interceptor中發現問題後會訪問的一個視圖

LOGIN:它是一個登錄視圖,可以在權限操作中使用

NONE:它代表的是null,什麽都不做(也不會做跳轉操作)

SUCCESS:這是一個成功視圖

優點:耦合度低

缺點:還是需要自己來完成功能

創建一個類繼承ActionSupport類

com.opensymphony.xwork2.ActionSupport

ActionSupport類也實現了Action接口。

我們在開發中一般會使用這種方案:

優點:具有豐富的功能,例如 表單校驗 錯誤信息設置 國際化

缺點:耦合度高

1. action的訪問方式

1.直接通過<action>標簽來配置,通過method來指定訪問的方法,如果method沒有,默認訪問的是execute方法。

2.簡化的action訪問方式,可以使用*通配符來訪問。

這種方式的缺點:不建議使用過多的*號,它帶來程序閱讀障礙,不便於理解

使用*來簡化操作方案,它對名稱規範必須進行一個統一。

技術分享圖片

技術分享圖片

2. 擴展--動態方法調用

技術分享圖片

這是strtus2提供的動態方法調用。

註意:對於strtus2的動態方法調用,要想使用我們必須配置一個常量來開啟動態方法調用

技術分享圖片

這代表動態方法調用沒有開啟

技術分享圖片

個人不建議使用動態方法調用

十、 Struts2框架封裝數據

主要解決的問題:是在action中如果獲取請求參數

主要有兩種方式:

1.屬性驅動

a.直接在action類中提供與請求參數匹配屬性,提供get/set方法

b.action類中創始一個javaBean,對其提供get/set ,在請求時頁面上要進行修改, 例如 user.username user.password ,要使用ognl表達式

以上兩種方式的優缺點:

第一種比較簡單,在實際操作我們需要將action的屬性在賦值給模型(javaBean) 去操作
第二種:不需要在直接將值給javaBean過程,因為直接將數據封裝到了javaBean 中。它要求在頁面上必須使用ognl表達式,就存在頁面不通用問題。

2.模型驅動

步驟:

1.Action類要實現一個指定接口ModelDriven

2.實例化模型對象(就是要new出來javaBean)

3.重寫getModel方法將實例化的模型返回。

技術分享圖片

對於模型驅動它與屬性驅動對比,在實際開發中使用比較多,模型驅動缺點,它只能對 一個模型數據進行封裝。

十一、 總結


今天主要內容是圍繞著簡單的登錄案例來講解:

1.關於strtus2框架的環境搭建

2.關於strtus2框架配置

3.關於strtus2框架請求參數封裝

4.關於strtus2框架的路徑跳轉

關於action訪問的配置

<package name=”” namespace=”” extends=””>

<action name=”” class=”” method=””>

<result name=”” type=””>路徑</result>

</action>

</package>

關於路徑跳轉問題:

是通過<result>來配置跳轉的路徑.

它的name屬性是與action中的方法的返回值進行對比的。

它的type屬性可以取哪些值?

技術分享圖片

默認值是dispatcher 它代表的是請求轉發。針對於jsp頁面

redirect 它代表的是重定向 針對於jsp頁面

chain 它類似於請示轉發,只不過它是針對於action跳轉.

redirectAction 它類似於重定向 針對於action

關於路徑跳轉的配置

可以直接在<package>下創建全局的result

技術分享圖片

Struts2框架概述