1. 程式人生 > >struts2的簡單介紹以及運用

struts2的簡單介紹以及運用


1 struts2是應用在javaee三層中web層的輕量級框架

2 struts2框架在struts1webwork基礎之上發展全新框架

3 struts2框架是開源框架

4 struts2框架版本

2struts2.3.24

 常見web層框架

1 struts1

2 webwork

3 springMVC(常用)

web層框架特

1 只要框架應用在web層,這類框架有共同的特點,有前端控制器(過濾器)

 

2 畫圖分析struts2解決問題:

1BaseServlet

:如果沒有BaseServlet,缺陷是每個功能都需要建立servlet實現

Struts2框架入門案例


1)在web.xml中進行 過濾器配置

  <!-- 過濾器配置 -->

  <filter>

      <filter-name>struts2</filter-name>

  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

  </filter>

  <filter-mapping>

      <filter-name>struts2</filter-name>

      <url-pattern>/*</url-pattern>

  </filter-mapping> 

  Struts2

開發流程分析

struts2執行過程

 


1)有載入順序

Struts2自帶配置檔案

* default.properties : 常量配置

* struts-default.xml : 攔截器

* struts-plugin.xml : 外掛

* struts.xml : 配置action,常量配置

* struts.properties: 常量配置

* web.xml :常量配置

Struts2的核心配置檔案

1 struts2核心配置檔名稱和位置固定的

1)位置src下面

2)名稱 struts.xml

 

2 有三個標籤

1package標籤

2action標籤

3result標籤

 標籤package

1 struts.xml配置action時候,必須首先package標籤

 

2 package裡面有屬性name屬性

1)在struts.xml檔案中寫多個package標籤,但是name屬性值不能相同的

 

3 package裡面有extends屬性

1)值固定的值 struts-default,表示攔截器部分

 

4 package裡面有namespace屬性

1namespace屬性值和action標籤name屬性值構成訪問路徑

 

/user.action

標籤action

1 action標籤寫在package標籤裡面

 

2 在一個package標籤裡面寫多個action標籤,但是name屬性值不能相同

 

3 action標籤name屬性

1namespace屬性值和action標籤name屬性值構成訪問路徑

2name屬性值裡面不能新增特殊符號

 

4 action標籤class屬性

1action類全路徑

 

5 action標籤method屬性

1action預設執行名稱是execute的方法,在action可能有其他名稱的方法,讓其他名稱的方法執行,使用method屬性實現

 標籤result

1 根據action裡面的方法返回值,配置到不同的路徑裡面

 

2 result標籤裡面name屬性

1name屬性值和action方法返回值對應上

 

3 result標籤裡面type屬性

1)表示如何到路徑中(轉發或者重定向)

2type屬性預設值做轉發操作 dispatcher

 

 Struts2常量配置

1 struts2是框架,框架特點幫封裝很多功能,struts2常量封裝了框架中一部分功能

 

2 因為預設常量是原始碼檔案,不能直接修改,使用配置方式修改常量值

1)在struts2裡面常量修改有三種方式

第一種(常用):在struts.xml進行配置

第二種:在src下面建立名稱struts.properties檔案,進行配置

第三種:在web.xml中進行配置



struts2裡面這個常量封裝這個功能:

提交表單之後到action裡面,在action獲取post提交中文資料,亂碼不需要自己解決

 

配置通過瀏覽器輸入副檔名稱

 

* 建議新增.action

 

1)如果設定值true之後,修改struts.xml配置檔案不需要重啟動伺服器

 

Action編寫三種方式

第一種方式:建立類,不繼承任何類,不實現任何介面  (pojo類)

 

第二種方式:建立類,實現介面 Action

 

* 如果action方法是String返回型別,不想要在action標籤裡面配置result標籤,需要讓方法方法值 NONE(不跳轉)

 

第三種方式(常用):建立類,繼承 ActionSupport

1ActionSupport類是Action介面實現類

 

 

 訪問action的三種方法

在一個action裡面,預設執行方法是名稱是execute方法,但是action可以寫其他名稱的方法,執行不是execute方法配置


1 有三種方式實現

第一種 在action標籤裡面使用method屬性實現

第二種 使用萬用字元方式實現(重點)

第三種 動態訪問實現(不用)

 1 使用method屬性

1 配置實現

<!-- 使用method屬性讓action裡面的方法執行 -->

<package name="demo2" extends="struts-default" namespace="/">

<!-- 1 action裡面的add方法執行

method: 執行的方法名稱

-->

<action name="bookadd" class="cn.itcast.action.BookAction" method="add"></action>

<!-- action裡面的update方法執行 -->

<action name="bookupdate" class="cn.itcast.action.BookAction" method="update"></action>

</package> 

 

缺陷:action中的每個方法都需要配置action,如果action裡面有很多的方法,配置很多action實現功能

2 使用萬用字元實現(重點)

1 使用萬用字元方式配置action裡面的方法

<!-- 使用萬用字元讓action裡面的方法執行 -->

<package name="demo3" extends="struts-default" namespace="/">

<!--

1)在action標籤裡面使用符號 * 星號,理解為匹配任意內容

2)把action標籤name屬性值寫實際意義,book_*

(3book_addbook_update,使用book_*都可以匹配到

** 兩個路徑裡面 addupdate方法名稱

  ** book_add,使用book_*可以匹配到,*相當於變成 add

  ** book_update,使用book_*可以匹配到,*相當於變成 update

4method裡面寫*

*_* :獲取第一個*值 表示式  {1},第二個* {2}

 -->

<action name="book_*" class="cn.itcast.action.BookAction" method="{1}"></action>

</package>

 

2 訪問action的方法還有一種方式是:

動態訪問,實際開發一般不用,作為了解

 

1)開啟常量

 

2)配置action,不需要method屬性

 

3)訪問時候,寫actionname屬性值後面新增感嘆號 ! ,後面新增執行方法名稱