java之SSH框架的Struts2框架的分析

這個是根據之前寫的 Java之SSH框架的Struts 來分析的

一、Struts的執行順序

在這裏插入圖片描述
在這裏插入圖片描述
注意:後面的會覆蓋前面的,如配置web.xml會覆蓋struts.properties

二、package元素

package元素: 是定義一個struts的包,它是把配置文件按照面向對象的思想來管理,分模塊開發。
name屬性: 指向包的名稱。注意:包的名稱在配置文件中唯一。
extends屬性: 指定當前包的父包,它是按照面向對象的思想管理的體現。
abstract屬性: 把包聲明爲一個抽象包,抽象包就是用來被繼承的,只有沒有action元素的包,才能被定義爲抽象包
namespace屬性: 名稱空間,當指定了名稱空間之後,訪問路徑就變成了: 訪問路徑=名稱空間+動作名稱當不指定名稱空間時,該屬性有默認值,默認值時“”,注意,不是“/”。

  <struts>
      <!-- 設置開發模式 ,struts.devMode特點改了配置文件,不需要重啓。0輸出更多的錯誤,建議開發文件的常量值爲true
         修改struts中的properties定義的常量值-->
    <constant name="struts.devMode" value="true"/> 
      <!-- 修改struts中默認的後綴名 -->
      <constant name="struts.action.extension" value="do"></constant>
      <!-- 這個包名這個隨便取-->
          <package name="show" extends="struts-default">
    <action name="hello" class="test.HelloWorldAction" method="sayHello">
          <result name="success">/showhelloworld.jsp</result>
      </action>
      </package>
      </struts>

namespace屬性:命名空間 如:namespace="/user"

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

改了後綴名爲.abc
在這裏插入圖片描述
發現就會報錯:
在這裏插入圖片描述
此時需要改爲:
在這裏插入圖片描述
而這樣也是對的:
在這裏插入圖片描述
下面是分析圖:
在這裏插入圖片描述
在這裏插入圖片描述

名稱空間的搜索順序:
第一步:先去找對應的名稱空間
在指定的名稱空間下找到了,就執行第二步
在指定的名稱空間下沒找到,按照名稱空間追溯,一直到根名稱空間,只要在任何一級找到了,執行第二步
第二步:找動作名稱
先在指定的名稱空間下,搜索對應的動作名稱,找到了就執行動作類的動作方法
在指定的名稱空間下沒找到對應的動作名稱,前往默認的名稱空間下找動作名稱,注意:它只找動作名稱

三、action屬性

**action 元素:**用來定義動作名稱,動作類和動作方法的映射,以及當出現不同情況時前往指定的結果視圖
name元素: 動作的名稱,和jsp頁面上的請求url中的名稱對於起來,注意不能寫.action
class元素: 指定動作類
method元素: 指定方法類

1)創建動作類的第一種方式

/**
 * 創建動作類的第一種方式:
 * 創建一個普通的java類。
 * 它就是一個POJO,原始的老的java對象
 * Plain Old Java Object
 * @author xinbai
 */

2)創建動作類的第二種方式

/**
 * 創建動作類的第二種方式:
 * 創建一個普通類,實現Action接口,實現接口中的方法
 * @author xinbai
 *
 */

在這裏插入圖片描述
在這裏插入圖片描述

/**
 * Action接口中的常量:
 * SUCCESS    "success"     當執行成功後,前往指定位置
 * NONE        "none"        不返回任何結果視圖,和return null是一樣的
 * ERROR       "error"      當執行動作方法時,出現異常後,前往指定的位置
 * INPUT       "input"       數據回顯
 * LOGIN       "login"       一般用於返回登錄頁面
 */

3)創建動作類的第三種方式

import com.opensymphony.xwork2.ActionSupport;
/**
 * 第三種方式:
 * 創建一個類,繼承ActionSupport
 * 我們在開發中採取這種方式來創建我們的動作類
 * @author xinbai
 * 2020年4月8日,上午10:56:26
 */
public class Demo3Action extends ActionSupport{
//當我們在類中什麼都不寫,一個動作方法都不提供時,有一個默認的動作方法:execute()
}
 <!-- 訪問默認的動作類 和動作方法的配置
            默認的動作類是ActionSupport的類,它是在struts-default.xml的配置文件中定義的
            修改默認動作類,我們一般不改
            <default-class-ref class="你自己的動作類"></default-class-ref>-->
                   <action  name="defaultAction">
            <result name="success">/showhelloworld.jsp</result></action>

在這裏插入圖片描述

參考視頻:Struts框架

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章