Struts2.5的DMI(動態方法呼叫)與新增的SMI
在使用Struts2.5之後的版本,在DMI(動態方法呼叫)上,有與之前的版本發生一些改變
在DMI使用時,是預設被禁用的,導致萬用字元 * 無法正常使用
Apache Struts專案的官方解釋如下:
從Struts2.3開始,我們增加了一個開關來控制DMI,我們這樣做基於兩個原因:
1. 如果Action的實現是純POJO方式(既不繼承自ActionSupport也不實現Action介面),這種場景下使用DMI可能導致安全問題。
2. DMI功能跟使用萬用字元配置Action類的方法有重疊的地方,而萬用字元配置的方式早在Struts1就有了。
Struts2.5新增的SMI(嚴格方法呼叫),官方文件說是擴充套件DMI。SMI預設情況下是啟用的,如果使用DMI方式呼叫Action的方法,有兩種方法
1.可以將該包的strict-method-invocation="false" 設定為false
<package name="my" extends="struts-default" namespace="/my" strict-method-invocation="false"> <action name="stu_*" class="com.czd.action.tryAction" method="{1}"> <result name="a">/page/loginok.jsp</result> <result name="b">/page/loginok.jsp</result> <result name="c">/page/loginok.jsp</result> <result name="d">/page/loginok.jsp</result> </action> </package>
2.在package包中新增<global-allowed-methods>regex:.*</global-allowed-methods>
<package name="my" extends="struts-default" namespace="/my" > <global-allowed-methods>regex:.*</global-allowed-methods> <action name="stu_*" class="com.czd.action.tryAction" method="{1}"> <result name="a">/page/loginok.jsp</result> <result name="b">/page/loginok.jsp</result> <result name="c">/page/loginok.jsp</result> <result name="d">/page/loginok.jsp</result> </action> </package>
這兩種方法都能在Struts2.5版本中實現DMI
本人研究不深,結合自己理解寫下,如果有不當之處,可以指出!
相關推薦
Struts2.5的DMI(動態方法呼叫)與新增的SMI
在使用Struts2.5之後的版本,在DMI(動態方法呼叫)上,有與之前的版本發生一些改變 在DMI使用時,是預設被禁用的,導致萬用字元 * 無法正常使用 Apache Struts專案的官方解釋如下: 從Struts2.3開始,我們增加了一個開關來控制DMI,我們這樣
struts2動態方法呼叫與j2ee互動傳參
動態方法呼叫: (action程式碼) package com.zking.web; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ModelDriven; import
Struts2怎樣呼叫Servlet?萬用字元怎樣使用?Struts2的動態方法呼叫如何配置使用?Struts2如何在執行方法之前進行驗證?
1.Struts2怎樣呼叫Servlet// servlet.api的三種方式 1.ActionContext.getContext().getSession();//Action上下文呼叫 2.ServletActionContext.
Struts2之動態方法呼叫(優點:呼叫同一個action中的多個方法不需要在配置檔案中寫多個指向相同action類的的action節點只需要一個action節點就行)
在表單action值裡指定所呼叫的action中的哪個方法而不是藉助配置檔案action節點的method屬性 1 UserAction類 package org.action; import java.io.IOException; import javax.servle
關於struts2.5 動態方法呼叫(DMI)出現錯誤的解決辦法
1. 先上程式碼 程式碼結構圖如下 2. 展示程式碼 WEB-INF/web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001
Struts2中動態方法呼叫有三種方式
Jsp中訪問方式 <body> <a href="basePath/chapter3/chapter3Action!result1">result1</a><br><ahref="basePath/chapter3/chapter3Action!r
Struts2——Action動態方法呼叫
對於同一個表單,當用戶通過不同的按鈕提交同一個表單時,系統需要使用Action的不同方法來處理使用者請求,這時Action便需要包含多個控制處理邏輯,即一個action中包含多個方法。例如:login介面有“登入”和“註冊”兩個按鈕,分別觸發UserAction中
Struts2初學者---動態方法呼叫action!方法名報錯
在struts.xml檔案的 package標籤中, 加入以下程式碼: <global-allowed-methods>regex:.*</global-allowed-met
第12講 struts2動態方法呼叫
1在HeadFirstStruts2chapter02-05中,直接修改struts.xml檔案,去掉method屬性和萬用字元屬性 xml version="1.0" encoding="UTF-8" ?> DOCTYPE struts PU
struts2動態方法呼叫(DMI)
(1)Action執行的時候並不一定要執行execute方法 (2)可以在配置檔案中配置action的時候用method=來指定執行哪個方法,也可以在url中動態指定(動態方法呼叫DMI)(推薦使用)
Struts2自定義Action,自定義方法,DMI(動態方法呼叫),路徑問題
注意配置檔案中的result JSP 必須加/(代表當前應用) action類的編寫:可以什麼都不繼承與實現,可以實現Action介面,可以繼承ActionSupport,但推薦第三種 package struts.zyl; import com.opensymphon
Struts2 url中包含感嘆號實現動態方法呼叫
Struts2的動態方法呼叫(Dynamic method Invoc)概括起來有三種方式,下面介紹: 1、第一種方式:設定method屬性 在Action類中定義一個簽名與execute方法相同、只是名字不同的方法,如定義為: public String login() throws Exce
struts2中的動態方法呼叫DMI
通常,在struts2中,如果想執行特定的方法,往往會在struts.xml中,配置action的method屬性值為要執行的方法名,預設為execute方法。為了程式的擴充套件,這種方法不推薦,而是使用DMI方式,舉例如下(場景為使用者的增、刪、改): (1)UserAc
struts2動態方法呼叫和使用萬用字元定義action
struts.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Con
Struts2中DMI(動態方法呼叫)的一些問題
<package name="front" namespace="/front" extends="struts-default"> <default-action-ref name="index" /> &l
Struts2-動態方法呼叫(DMI)
Struts呼叫方法是要用:動態方法呼叫DMI struts.xml核心部分:<span style="font-size:14px;"><struts> <const
struts2的常量、動態方法呼叫、接受請求引數處理、型別轉換 .
struts2的常量、動態方法呼叫、接受請求引數處理、型別轉換常見的struts常量http://localhost:8080/struts_action/login.action為什麼是.action 並且.action能不能修改? 在struts2-core-2.3.8.jar的org.apache.s
升級Struts2.5後使用DMI動態方法呼叫遇到問題
問題: 升級Struts2.5後使用DMI動態方法呼叫報錯,method 找不到。 原始碼: struts.xml <action name="json_*_*" class="{1}Action" method="
Struts2服務在開啟動態方法呼叫(DMI)的情況下,導致的安全問題,一則新聞
2016-04-27 02:40:18 一則新聞 Apache官方今天晚上釋出安全公告(官方編號S2-032/CVE編號CVE-2016-3081),Apache Struts2服務在開啟動態方法呼叫(DMI)的情況下,可以被遠端執行任意命令,安全威脅程度高。 這一
Struts2中動態方法調用
.com log ima struts2 http als ges XML 配置 1 . 查看默認配置,是否為:true 2.如果為false 可以通過struts.xml進行相關的配置: Struts2中動態方法調用