`

Struts2.5的action动态方法调用(转)

阅读更多

Struts2.5要实现一个action调用不同的方法,一般来说三种方式:

一,指定method属性。

<action name="login" class="com.action.XXXAction" method="redirect">
            <!-- redirectAction返回类型 -->
            <result type="redirectAction">
                <param name="actionName">userLogin</param>  <!-- Action名参数 -->
                <param name="namespace">/user</param>       <!-- 命名空间参数 -->
            </result>
</action>

二,感叹号方式。(需要开启,虽然官网不推荐使用这种方式,但我还是要用!)

先开启一个开关:

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <!-- 配置包default,该包继承了struts-default -->
    <package name="default" extends="struts-default">

以上代码一般在开头就行。需要注意的是2.5不仅需要打开这个开关,还需要声明你访问的方法:

<package name="default" namespace="/" extends="struts-default">
        <global-allowed-methods>这里是你要声明的此package所有action通用的方法名</global-allowed-methods>
        <!-- 配置名为login的Action,实现类为LoginAction -->
        <action name="login" class="com.action.LoginAction" >
            <!-- redirectAction返回类型 -->
            <result type="redirectAction">
                <param name="actionName">userLogin</param>  <!-- Action名参数 -->
                <param name="namespace">/user</param>       <!-- 命名空间参数 -->
            </result>
            <!-- 返回值为error,redirectAction类型,重定向到名为error的Action -->
            <result name="error" type="redirectAction">error</result>
            <allowed-methods>getoper,getmobile</allowed-methods>
            <!-- 这里是你要声明的此action独有的方法名,多个方法名以逗号相隔 -->
        </action>

三,通配符方式。(这种方式是官网推荐的方式!)

<action name="login_*" class="com.action.LoginAction" method="{1}">
            <!-- redirectAction返回类型 -->
            <result type="redirectAction">
                <param name="actionName">userLogin</param>  <!-- Action名参数 -->
                <param name="namespace">/user</param>       <!-- 命名空间参数 -->
            </result>
            <!-- 返回值为error,redirectAction类型,重定向到名为error的Action -->
            <result name="error" type="redirectAction">error</result>
            <allowed-methods>redirect</allowed-methods>
        </action>
这个方式需要注意的是,要先将方式2中开关关掉,即
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
将ture改为false。struts2.5.5是默认false的。
并且同样需要在<allowed-methods>中声明允许访问的方法名,
要访问这个方式的方法只需要在jsp文件中
<s:a action="login_redirect">redirect</s:a>
这样写就可以访问我之前声明的redirect()方法的。login_*里的*就是通配符。

 

分享到:
评论

相关推荐

    struts2.5.14.1最少的jar包

    Struts2.5.14.1是该框架的一个版本,它引入了若干增强功能和修复了已知问题,以提升开发效率和应用稳定性。 在Struts2.5.14.1中,为了实现基本功能,至少需要8个核心JAR文件。这些JAR文件包含了框架的核心组件、...

    struts2.5 框架核心包

    3. **拦截器(Interceptor)**:拦截器是Struts2的一个强大特性,它们是实现了特定接口的Java类,可以插入到Action调用的前后,执行一些预处理或后处理任务。例如,验证用户输入、记录日志、事务管理等。通过灵活...

    struts2.5.10.1 jar包

    同时,掌握OGNL(Object-Graph Navigation Language)表达式语言是至关重要的,因为它是Struts2中数据绑定和动态方法调用的基础。此外,熟悉Java Servlet和JSP等Web开发基础技术也是必要的,因为Struts2是建立在这些...

    struts2.5必须

    Struts2.5引入了动态方法调用(Dynamic Method Invocation,DMI),允许开发者直接通过URL调用Action类的方法,增强了URL与Action方法之间的映射灵活性。 **3. OGNL表达式语言** Struts2.5使用OGNL(Object-Graph ...

    struts-2.5-docs

    它涵盖了Action类、结果类型、拦截器、动态方法调用等方面的基础知识。 2. **API文档**:API文档提供了Struts 2.5核心库、插件和所有公开接口的详细信息。开发者可以在这里查找类、接口、方法的定义,了解其用途和...

    struts2.5+框架使用通配符与动态方法常见问题小结

    Struts2.5框架使用通配符与动态方法是两个非常重要的概念,它们可以帮助开发者更好地实现灵活的方法调用和减少配置文件中的action数量。然而,在使用这些功能时,需要注意可能出现的错误提示,并遵循正确的解决步骤...

    struts-2.5

    Struts 2.5是Apache软件基金会开发的Java Web应用程序框架Struts的最新版本。它是一个基于MVC(Model-View-Controller)设计模式的框架,用于构建企业级的Java Web应用。Struts 2.5版本的发布旨在提供更好的性能、...

    struts-2.5-apps

    7. **动态方法调用**: 动态方法调用是Struts 2的一个特色,允许直接通过URL调用Action方法,增强了URL与Action方法的绑定灵活性。 8. **注解配置**: 除了XML配置外,Struts 2.5还支持注解配置,可以在Action类或...

    struts2.5软件开发包

    拦截器是Struts2的一个重要特性,它们在Action调用前后执行,可以实现事务管理、权限控制、日志记录等功能。开发者可以根据需要自定义拦截器,组合成拦截器栈,提高代码的复用性和可维护性。 **依赖注入...

    SSH之最新简单整合,Struts-2.5.10.1+Spring 4.3.8+Hibernate5.2.10

    4. 在Struts 2 Action中注入Spring管理的Service,调用Service完成业务逻辑。 5. 使用Hibernate的 Criteria 或 HQL 进行复杂的数据查询。 6. 通过Spring的Transaction Management进行事务控制。 通过SSH框架的整合...

    struts2 基本jar包

    它是Struts2中动作方法调用和属性访问的基础。 4. **freemarker.jar**:FreeMarker是一个模板引擎,用于生成动态HTML或其他格式的输出。在Struts2中,它常用于生成视图层的内容。 5. **javassist.jar**:这是一个...

    Mac下 Eclipse4.7 + Struts2.5 简单的例子

    在Mac操作系统上,Eclipse 4.7集成开发环境(IDE)可以用来开发基于Struts2.5的Web应用程序。Struts2是一个流行的Java开源框架,用于构建MVC(Model-View-Controller)架构的Web应用。这个例子将展示如何在Eclipse中...

    struts-2.5.26-min-lib.zip

    Interceptor是拦截器,可以实现如日志记录、权限检查等功能,在Action调用前后执行。配置管理则允许开发者通过XML或注解来定义Action、结果类型和拦截器栈。 在Struts 2.5.26版本中,可能包含以下关键组件: 1. **...

    eclipse搭建(Struts2.5+Spring5.0+hibernate5.2)整合框架Demo实例

    本教程将详细介绍如何使用Eclipse IDE搭建一个基于Struts2.5、Spring5.0和Hibernate5.2的整合框架,提供一个可运行的Demo实例。这个组合是Java企业级开发中常见的技术栈,它们各自负责不同的职责:Struts2作为前端...

    一个Struts2+Spring2.5+SiteMesh的小DEMO

    Struts2、Spring2.5 和 SiteMesh 是Java Web开发中的三个重要框架,它们共同构建了一个强大且灵活的Web应用程序架构。在这个小DEMO中,我们将深入探讨这三个框架的集成和工作原理。 **Struts2** 是一个基于MVC...

    Struts2.5版本struts.xml与web.xml配置的更改方法

    在Struts2.5版本中,为了支持动态方法调用,每个`package`需要添加`&lt;global-allowed-methods&gt;`标签。这允许通过URL直接调用Action的任何方法。以下是示例: ```xml &lt;!DOCTYPE struts PUBLIC "-//Apache Software ...

    struts2动态访问方式

    除了动态方法调用,Struts2还支持基于注解的配置,这使得Action类和方法的配置更加简洁。例如,可以在Action类或方法上使用`@Action`注解: ```java @Action(value = "saveUser", results = { @Result(name = ...

    struts-2.5.30-lib.zip struts-2.5.30jar包

    3. **拦截器**:拦截器是Struts 2的重要特性,它们在Action调用前后执行,可以实现事务管理、日志记录、权限验证等功能。 4. **结果类型**:定义了Action执行后如何跳转到视图。 5. **标签库**:提供了一系列自定义...

    Struts2与Spring2.5的整合

    3. **创建 Action 类**:Struts2 的 Action 类是控制器层,负责接收用户的请求并调用相应的服务层方法。这里我们创建了 `LoginAction`,它继承自 `ActionSupport`,并实现了 `execute()` 方法。Action 类中的业务...

    struts-2.5.30-all.zip

    OGNL 支持对象属性的访问和动态方法调用,简化了数据绑定过程。 3. **拦截器**:拦截器是 Struts 2 的核心组件,它们按照预定义的顺序执行,可以实现如日志、权限验证、事务管理等通用功能。开发者可以自定义拦截器...

Global site tag (gtag.js) - Google Analytics