struts2動態方法呼叫(DMI)
(1)Action執行的時候並不一定要執行execute方法
(2)可以在配置檔案中配置action的時候用method=來指定執行哪個方法,也可以在url中動態指定(動態方法呼叫DMI)(推薦使用)
(3)第一種會產生太多的action,所以不推薦使用。
(4)如果使用DMI的方式,在struts.xml配置檔案中需要設定:
<constantname="struts.enable.DynamicMethodInvocation" value="true"/>
(5)DMI:DynamicMethodInvocation動態方法呼叫
struts.xml
UserAction.java<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.devMode" value="true" /> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="user" namespace="/user" extends="struts-default"> <!--這種方法不推薦使用,會產生太多的action --> <action name="userAdd" class="com.dqpi.eonline.UserAction" method="add"> <result> /user_add_success.jsp </result> </action> <!--使用了DMI動態的方法呼叫(Dynamic method invocation) --> <action name="user" class="com.dqpi.eonline.UserAction"> <result> /user_add_success.jsp </result> </action> </package> </struts> </span>
index.jsp<span style="font-size:18px;">package com.dqpi.eonline; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private static final long serialVersionUID = -1437555295816924828L; public String add(){ return "success"; } } </span>
user_add_success.jsp<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <!--此處使用了myeclipse中經常使用的basepath --> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <a href="user/userAdd">新增使用者</a> <a href="user/user!add">新增使用者DMI</a> </body> </html> </span>
<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!-- 此處引進了struts的標籤庫 -->
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'path.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
User Add Success<br>
</body>
</html>
</span>
相關推薦
struts2動態方法呼叫(DMI)
(1)Action執行的時候並不一定要執行execute方法 (2)可以在配置檔案中配置action的時候用method=來指定執行哪個方法,也可以在url中動態指定(動態方法呼叫DMI)(推薦使用)
Struts2-動態方法呼叫(DMI)
Struts呼叫方法是要用:動態方法呼叫DMI struts.xml核心部分:<span style="font-size:14px;"><struts> <const
struts2中的動態方法呼叫DMI
通常,在struts2中,如果想執行特定的方法,往往會在struts.xml中,配置action的method屬性值為要執行的方法名,預設為execute方法。為了程式的擴充套件,這種方法不推薦,而是使用DMI方式,舉例如下(場景為使用者的增、刪、改): (1)UserAc
Struts2服務在開啟動態方法呼叫(DMI)的情況下,導致的安全問題,一則新聞
2016-04-27 02:40:18 一則新聞 Apache官方今天晚上釋出安全公告(官方編號S2-032/CVE編號CVE-2016-3081),Apache Struts2服務在開啟動態方法呼叫(DMI)的情況下,可以被遠端執行任意命令,安全威脅程度高。 這一
第12講 struts2動態方法呼叫
1在HeadFirstStruts2chapter02-05中,直接修改struts.xml檔案,去掉method屬性和萬用字元屬性 xml version="1.0" encoding="UTF-8" ?> DOCTYPE struts PU
struts2動態方法呼叫與j2ee互動傳參
動態方法呼叫: (action程式碼) package com.zking.web; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ModelDriven; import
struts2動態方法呼叫和使用萬用字元定義action
struts.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Con
Struts2.5的DMI(動態方法呼叫)與新增的SMI
在使用Struts2.5之後的版本,在DMI(動態方法呼叫)上,有與之前的版本發生一些改變 在DMI使用時,是預設被禁用的,導致萬用字元 * 無法正常使用 Apache Struts專案的官方解釋如下: 從Struts2.3開始,我們增加了一個開關來控制DMI,我們這樣
關於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自定義Action,自定義方法,DMI(動態方法呼叫),路徑問題
注意配置檔案中的result JSP 必須加/(代表當前應用) action類的編寫:可以什麼都不繼承與實現,可以實現Action介面,可以繼承ActionSupport,但推薦第三種 package struts.zyl; import com.opensymphon
Struts2中DMI(動態方法呼叫)的一些問題
<package name="front" namespace="/front" extends="struts-default"> <default-action-ref name="index" /> &l
升級Struts2.5後使用DMI動態方法呼叫遇到問題
問題: 升級Struts2.5後使用DMI動態方法呼叫報錯,method 找不到。 原始碼: struts.xml <action name="json_*_*" class="{1}Action" method="
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 url中包含感嘆號實現動態方法呼叫
Struts2的動態方法呼叫(Dynamic method Invoc)概括起來有三種方式,下面介紹: 1、第一種方式:設定method屬性 在Action類中定義一個簽名與execute方法相同、只是名字不同的方法,如定義為: public String login() throws Exce
DMI動態方法呼叫 和 萬用字元
動態方法呼叫DMI <action name="user" class="com.action.UserAction"> <result>/user_add_success.jsp</result> </ac
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
struts2的常量、動態方法呼叫、接受請求引數處理、型別轉換 .
struts2的常量、動態方法呼叫、接受請求引數處理、型別轉換常見的struts常量http://localhost:8080/struts_action/login.action為什麼是.action 並且.action能不能修改? 在struts2-core-2.3.8.jar的org.apache.s