struts2.5动态方法调用和默认Action

在动态方法调用中,使用通配符方法出现问题,参考了http://www.cnblogs.com/jasonlixuetao/p/5933671.html 这篇博客,问题解决了。

这个是helloworld.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 4     "http://struts.apache.org/dtds/struts-2.5.dtd">
 5
 6 <struts>
 7     <package name="default" namespace="/" extends="struts-default">
 8         <global-allowed-methods>regex:.*</global-allowed-methods>
 9         <action name="*_*_*" method="{2}"
10                 class="com.imooc.{3}.{1}Action">
11             <result>/result.jsp</result>
12             <result name="add">/{2}.jsp</result>
13             <result name="update">/{2}.jsp</result>
14         </action>
15     </package>
16 </struts>

在struts.xml中包含了这个文件:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 4     "http://struts.apache.org/dtds/struts-2.5.dtd">
 5
 6 <struts>
 7
 8     <include file="helloworld.xml"></include>
 9     <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
10
11 </struts>

解决2.5版本通配符的动态方法调用就是加上了这一句:

<global-allowed-methods>regex:.*</global-allowed-methods>

但是,问题来了,在使用默认Action时,加上这一句就会报错,不加就可以正常运行,下面是正常运行的helloworld.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 4     "http://struts.apache.org/dtds/struts-2.5.dtd">
 5
 6 <struts>
 7     <package name="default" namespace="/" extends="struts-default">
 8
 9         <default-action-ref name="index"></default-action-ref>
10         <action name="index">
11             <result>/error.jsp</result>
12         </action>
13
14         <action name="*_*_*" method="{2}"
15                 class="com.imooc.{3}.{1}Action">
16             <result>/result.jsp</result>
17             <result name="add">/{2}.jsp</result>
18             <result name="update">/{2}.jsp</result>
19         </action>
20     </package>
21 </struts>

又发现,也只能运行默认的action,并不能调用到add或update方法。

时间: 2024-12-25 05:48:24

struts2.5动态方法调用和默认Action的相关文章

Struts2.5动态方法调用action和使用通配符访问action

[原帖地址]http://blog.csdn.net/leafage_m/article/details/54577687 动态方法调用Action. 这种方法,需要在struts.xml中对其进行支持: [html] view plain copy print? <!-- 是否开启动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" />

struts2的动态方法调用(DMI)和通配符映射

动态方法调用 1.Struts2默认关闭DMI功能,需要使用需要手动打开,配置常量 [html] view plain copy struts.enable.DynamicMethodInvocation = true 2.使用“!”方法,即action名称!方法名称. struts.xml [html] view plain copy <action name="query" class="action.QueryAction"> <result

Struts2之动态方法调用(优点:调用同一个action中的多个方法不需要在配置文件中写多个指向相同action类的的action节点只需要一个action节点就行)

在表单action值里指定所调用的action中的哪个方法而不是借助配置文件action节点的method属性 1 UserAction类 package org.action; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext;

Struts2中动态方法调用

1 . 查看默认配置,是否为:true 2.如果为false 可以通过struts.xml进行相关的配置:

struts2的通配符和动态方法调用

<?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>    <

struts2的通配符与动态方法调用

1.Action标签中的method属性 我们知道action默认的执行的方法是execute方法,但是一个action只执行一个方法我们觉得有点浪费,我们希望在一个action中实现同一模块的不同功能.怎么办呢? 思考: 我们是否可以在execute()方法中添加一个判断,然后根据该判断选择我们执行的方法呢?我想struts2也是这样干的.不过是在execute之前的方法中进行的,判断的依据不是通过参数,而是通过取读配置文件或者其他得到的. Struts2在Action中为我们提供了这样的一个

Struts2动态方法调用(DMI)

在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多 第一种方式:指定method属性这种方式我们前面已经用到过,类似下面的配置就可以实现 <action name="chainAction" class="chapter2.action.Chapter2Action" method="chainAction"> <result name="chai

struts2DMI(动态方法调用)

DMI(Dynamic Method Invoke)即动态,是strus2的一个特性,我们知道,在最开始学习strus2时,往往一个action中只有一个excute方法,比如说add,delete,update,search,往往要在struts.xml中配置配置多个<action>以便指定不同的method,但是strus2目前提供了DMI机制,即如下配置即可: <action name="book" class="com.speed.BookActio

Struts2 Action中动态方法调用、通配符的使用

一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Action中动态方法调用<Dynamic Method Invocation> DMI 第一种方式: 自定义DMIAction类,使它继承ActionSupport类,该类无需手动重写execute(),底层有默认实现.因此我们也可以自定义方法list. struts.xml中的action元素植入met