1. 程式人生 > >struts2動態方法呼叫(DMI)

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

<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>
UserAction.java
<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>
index.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>
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+"/";
%>
<!-- 此處引進了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

Struts2DMI(動態方法呼叫)的一些問題

    <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