1. 程式人生 > >struts2配置檔案中的include和global-results

struts2配置檔案中的include和global-results

今天遇到的一個這樣的問題:幾個struts2的配置檔案 用include 進struts.xml配置檔案裡面去。每個配置檔案都有 一個 相同的<global-results>  想把它們提出來來 放到struts.xml配置檔案裡面去。這樣就只需要配置一個<global-results> 了。但是遇到一點問題。404的。以下是網上找的解決方法。

(1)struts-user.xml

<struts>
    <package name="struts-user" extends="struts-default">
        
        <global-results>
            <result type="redirect-action">UserAction_queryAll</result>
        </global-results>
        
        <action name="UserAction_login" class="userAction" method="login"></action>
        <action name="UserAction_insert" class="userAction" method="insert"></action>
        <action name="UserAction_update" class="userAction" method="update"></action>
        <action name="UserAction_delete" class="userAction" method="delete"></action>
        <action name="UserAction_queryById" class="userAction" method="queryById"></action> 
        <action name="UserAction_queryByLike" class="userAction" method="queryByLike"></action>
        <action name="UserAction_queryAll" class="userAction" method="queryAll">
            <result>/user/user_list.jsp</result>
        </action>
        
    </package>
</struts>



(2)struts.xml(引入了struts-user.xml)

<struts>

    <include file="struts-user.xml"></include>
    <package name="struts" extends="struts-default"></package>
    
</struts>


1. 使用<include>標籤重用配置檔案

(1)在Struts2中提供了一個預設的struts.xml檔案,但如果package、action、interceptors等配置比較多時,都放到一個struts.xml檔案不太容易維護。因此,就需要將struts.xml檔案分成多個配置檔案,然後在struts.xml檔案中使用<include>標籤引用這些配置檔案。如上面的程式碼。

注意:用<include>引用的xml檔案也必須是完成的struts2的配置。實際上<include>在引用時是單獨解析的xml檔案,而不是將被引用的檔案插入到struts.xml檔案中。

注意:struts.xml和struts-user.xml中<package></package>標籤中的name屬性不能相同。道理很簡單,<struts></struts>標籤中可以有多個<package></package>標籤,要通過name屬性以示區別。

(2)Apache Struts 2 Documentation: Can we break up a large struts.xml file into smaller pieces --> Yes, there are two approaches. We can include other struts.xml file from a bootstrap, or we can package a struts.xml files in a JAR. Or both.

<1>By Include:A typical struts.xml files will have one or more include elements:

<struts>
    <include file="struts-default.xml"/>
    <include file="config-browser.xml"/>
    <package name="default" extends="struts-default">
    ....
    </package>
    <include file="other.xml"/>
</struts>



The first include element tells the framework to load the struts-default.xml, which it will find in the struts2.jar file. The struts-default.xml file defines the "standard" interceptor and result definitions. You can put your own <include> elements in your struts.xml interchangeably with <package> elements. The configuration objects will be loaded in the order of appearance. The framework reads the configuration from top to bottom and adds objects as they are referenced.

<2>By JAR

A "module" can be added to an application by placing a struts.xml and related classes into a JAR on the classpath. FreeMarker and Velocity templates can also be provided by JAR, making it possible to distribution a module in a single, self-contained JAR that is automatically configured on startup.

2. 全域性result(global-results)

(1)有很多時候一個<result>可供很多<action>使用,這時可以使用<global-results>標籤來定義全域性的<result>,程式碼見struts-user.xml。執行順序:當一個Action返回的String沒有相應的<result>與之對應,Struts2就會查詢全域性的<result>。

(2)Apache Struts 2 Documentation: Global Results

Most often, results are nested with the action element. But some results apply to multiple actions. In a secure application, a client might try to access a page without being authorized, and many actions may need access to a "logon" result. If actions need to share results, a set of global results can be defined for each package. The framework will first look for a local result nested in the action. If a local match is not found, then the global results are checked.

<!-- Defining global results -->
<global-results>
    <result name="error">/Error.jsp</result>
    <result name="invalid.token">/Error.jsp</result>
    <result name="login" type="redirectAction">Logon!input</result>
</global-results>



3. <include>標籤和<global-results>標籤結合

(1)<global-results>標籤的作用域只是當前<struts></struts>,也可以說是當前的xml檔案;struts2不允許把struts-user.xml(通過<include>引入到struts.xml)中的<global-results>標籤寫在struts.xml中。

(2)如果struts-user.xml中的package繼承自struts.xml中的package,則可以將struts-user.xml中的<global-results>放在struts.xml中。然後struts-user.xml將此<global-results>從struts.xml中繼承過來。例如(將上面的兩段程式碼簡單修改):

(1)struts-user.xml

<struts>
    <!-- 這裡struts-user繼承(extends)的是struts, 即struts.xml中package的name屬性值 -->
    <package name="struts-user" extends="struts">
        
        <action name="UserAction_login" class="userAction" method="login"></action>
        <action name="UserAction_insert" class="userAction" method="insert"></action>
        <action name="UserAction_update" class="userAction" method="update"></action>
        <action name="UserAction_delete" class="userAction" method="delete"></action>
        <action name="UserAction_queryById" class="userAction" method="queryById"></action> 
        <action name="UserAction_queryByLike" class="userAction" method="queryByLike"></action>
        <action name="UserAction_queryAll" class="userAction" method="queryAll">
            <result>/user/user_list.jsp</result>
        </action>
        
    </package>
</struts>



(2)struts.xml(引入了struts-user.xml)

<struts>

    <include file="struts-user.xml"></include>
    <package name="struts" extends="struts-default">
        <global-results>
            <result type="redirect-action">UserAction_queryAll</result>
        </global-results>
    </package>
    
</struts>


相關推薦

struts2配置檔案includeglobal-results

今天遇到的一個這樣的問題:幾個struts2的配置檔案 用include 進struts.xml配置檔案裡面去。每個配置檔案都有 一個 相同的<global-results>  想把它們提出來來 放到struts.xml配置檔案裡面去。這樣就只需要配置一個<

struts2: includeglobal-results

先貼兩段程式碼,在慢慢解釋 (1)struts-user.xml 1.<struts> 2.    <package name="struts-user" extends="struts-default"> 3.        4.        &

struts2配置檔案include問題

今天遇到的一個這樣的問題:幾個struts2的配置檔案 用include 進struts.xml配置檔案裡面去。每個配置檔案都有 一個 相同的<global-results>  想把它們提出來來 放到struts.xml配置檔案裡面去。這樣就只需要配置一個&l

struts2 配置檔案各個項詳解

<action   name= "Login_* "   method= "{1} "   class= "mailreader2.Login "> 中Login_*帶*是什麼意思?method= "{1} "帶{}這個是什麼意

struts2[3.5]在struts2配置檔案使用OGNL表示式

1.新建一個Demo3Action.java,只需重寫execute()方法即可: package com.aisino.b_config; import com.opensymphony.xwork2.ActionSupport; public class Demo3Action exte

struts2配置檔案method="{1}"詳解

struts2為了簡化配置檔案,來採用了萬用字元的方式 圖中的method="{1}"指向的是action後的第一個萬用字元,也就是如圖的 * , 假如name中含有多個萬用字元 , 則method

struts2配置檔案result的type型別

    struts的核心配置檔案是struts找頁面用的,用返回的字串,通過配置檔案的配置,去查詢返回相應的頁面。在struts配置檔案中,result的型別有不同種類,預設的跳轉方式是dispat

[Struts2] 配置檔案struts.xmlweb.xml詳解

 配置檔案struts.xml和web.xml。 其實要使Struts2可以工作,配置很簡單,套模板就好了。而且基本與版本無關。 如,只要struts2需要的基本jar包已經引入,那麼直接配置一下web.xml和struts.xml檔案。 web.xml中包含: <

Struts2配置檔案的萬用字元的使用

<package name="user" extends="struts-default" namespace="/"><action name="user_*" class="com.test.action.UserAction" method="

讓Eclipsespring的xml配置檔案出現屬性類提示

在spring配置檔案中可以讓配置bean的時候出現提示,這裡需要做一些設定。設定包括安裝springide外掛,spring-beans-version.xsd檔案引入,增加xml編輯提示的字元,預設只有=>:。最後是讓配置檔案可以通過Spring Config Editor的方式開

Spring配置檔案配置property標籤的nameref的區別:

在看李剛的《Java EE企業實戰》,裡面有一個關於Spring的配置的 <bean id=“person” class=“service.Person”> <!-- 控制器呼叫setAxe方法,將容器中的axe bean作為傳入的引數 --> <!–此處的na

Spring Boot Cache + redis 設定有效時間自動重新整理快取,時間支援在配置檔案配置

分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

【轉載】python使用logginConfigParser配置檔案遇到的問題

原文連結:https://blog.csdn.net/weixin_39918285/article/details/79551104 問題一: 載入loggin配置檔案時出錯 UnicodeDecodeError 一開始logger.conf配置檔案的存檔格式為unicode,該檔案中有中文字

struts2配置檔案的載入順序優先順序

1.優先順序         web.xml > struts.properties > struts.xml > default.properties  2.載入順序         1.default.properties檔案          作用

小程式JSON檔案全域性子頁面的欄位window配置

相信有過實際小程式開發的人,都不陌生主程式app.json和子頁面的XX.json檔案中window欄位的配置。 如果全域性都是用app.json的一個樣式,那麼你就可以忽略掉此文。但是你想個性化單獨設定各個頁面的window欄位,那麼問題來了, 你會發現:嚴格按照小程式官方的window格式來設定,就是不

登入plsql時,登入視窗資料庫顯示的配置檔案不匹配

        先用win+r快捷鍵進入cmd,輸入sqlplus/nolog,進入下一行,輸入: conn manager /system as sysdba;看你本地oracle和plsql的裝載有沒有問題,沒有問題,說

Node.js專案的package.json配置檔案的devdependencies dependencies的區別

1、dependencies和devDependencies 具體程式碼如下 "name": "webpack-react-express", "version": "0.2.0", "private": true, "dependencies": {

SpringBoot學習——如何設定讀取配置檔案屬性

配置檔案配置 直接配置 在src/main/resources下新增配置檔案application.properties  例如修改埠號 #埠號 server.port=8089 分環境配置 在src/main/resources下新增,application-pro.

Java路徑的CLASSPATH配置檔案的CLASSPATH

一. Java路徑中的CLASSPATH (1)類路徑(classpath)       java編譯器編譯.java檔案和java虛擬機器執行.class檔案時的路徑寫法是不一樣的。      在沒有設定任何classpath

Spring Boot快取實戰 Redis 設定有效時間自動重新整理快取,時間支援在配置檔案配置

問題描述 Spring Cache提供的@Cacheable註解不支援配置過期時間,還有快取的自動重新整理。 我們可以通過配置CacheManneg來配置預設的過期時間和針對每個快取容器(value)單獨配置過期時間,但是總是感覺不太靈活。下面是一個示例: @Bean