`
likegene
  • 浏览: 7326 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
最近访客 更多访客>>
社区版块
存档分类
最新评论

package中如何选择action

阅读更多
当struts配置文件中的一个package中有多个action都能匹配同一个请求的Url时,struts会选择其中的一个进行处理,具体怎样进行选择,请看如下实例:

struts配置如下:

<constant name="struts.enable.SlashesInActionNames" value="true" />
<package name="page" namespace="/page" extends="struts-default">
<default-action-ref name="test"/>

<action name="test" class="Test" method="test">
<result>/test.jsp</result>
</action>

<action name="*/test/**" method="test1" class="Test">
<result>/test1.jsp</result>
</action>

<action name="*/*/**" method="test2" class="Test">
<result>/test2.jsp</result>
</action>

<action name="a/test/b" method="test3" class="Test">
<result>/test3.jsp</result>
</action>
</package>

对以下请求url及action选择

          请求url     action匹配
1 http://localhost/site/page/a/tes/b     action name="*/*/**"

2 http://localhost/site/page/a/test/a    action name="*/test/**"

3 http://localhost/site/page/a/test/b    action name="a/test/b"

4 http://localhost/site/page/a/test     action name="test"

struts2选择package里的action过程如下:

1. 查找action name完全匹配的,找到则返回,否则进入2.

2. 按顺序(即在配置文件中的顺序)查找通配符匹配action name,找到则返回,否则进入3.

3. 选择 default action,如果没有配置default action,则返回null.


源码
com.opensymphony.xwork2.config.impl.DefaultConfiguration.java
...
ActionConfig findActionConfigInNamespace(String namespace, String name) {
    ActionConfig config = null;
    if (namespace == null) {
        namespace = "";
    }
    Map<String, ActionConfig> actions = namespaceActionConfigs.get(namespace);
    if (actions != null) {
        config = actions.get(name);
        // Check wildcards
        if (config == null) {
            config = namespaceActionConfigMatchers.get(namespace).match(name);
            // fail over to default action
            if (config == null) {
                String defaultActionRef = namespaceConfigs.get(namespace);
                if (defaultActionRef != null) {
                    config = actions.get(defaultActionRef);
                }
            }
        }
    }
    return config;
}
...

分享到:
评论

相关推荐

    Action-RPG+Starter+Kit+5.2.unitypackage

    Action-RPG+Starter+Kit+5.2.unitypackage,unity 类似框架类别的,导入引擎查看demo源码

    Action-RPG Starter Kit 6.55.unitypackage

    Action-RPG Starter Kit 6.55 商店几百买的最新

    Runner Action Animation Pack.unitypackage

    Runner Action Animation Pack.unitypackage

    Fantasy Action RPG Tileset v1.2.unitypackage

    Fantasy Action RPG Tileset v1.2.unitypackage

    Struts2中Action接收参数的方法

    Struts2 中 Action 接收参数的方法 Struts2 框架中,Action 组件可以通过多种方式接收参数,这些方式包括使用 Action 的属性、使用 ...Struts2 中 Action 接收参数的方法有多种,可以根据实际情况选择合适的方法。

    struts2笔记之动态调用Action指定方法及默认Action

    在 Struts2 中,还可以配置默认的 Action,例如:&lt;package ...&gt;&lt;default-action-ref name="myDefaultAction"/&gt;&lt;/package&gt;这时,我们可以在 struts.xml 文件中定义一个默认的 Action,例如:&lt;action name=...

    Struts中ActionError学习

    当你在Action中抛出异常或者使用validate方法进行数据验证时,可以通过addActionError方法添加错误信息。例如: ```java public class MyAction extends ActionSupport { public String execute() throws ...

    Struts2 Action参数详细说明

    Struts2框架中的Action是核心组件之一,它负责接收HTTP请求并进行业务逻辑处理,然后将控制转向相应的视图进行展示。在Struts2中,Action的...在实际应用中,应根据项目需求合理选择和配置Action,同时注意安全问题。

    自定义Action实现Action接口(实现简单登录功能)

    在Struts2框架中,自定义Action是实现业务逻辑的核心组件。这个教程将带你了解如何通过实现`Action`接口来创建一个简单的登录功能。首先,我们需要理解Struts2的架构和Action类的角色。 Struts2是一个基于MVC...

    Action名称的搜索顺序

    本文将深入探讨Action名称的搜索顺序、Action配置的默认值以及Action中Result的不同结果类型。 #### Action名称的搜索顺序 在Struts2中,Action的搜索顺序是由其配置文件(通常是struts.xml)决定的。当用户请求被...

    android 监听卸载那些事儿

    android.intent.action.PACKAGE_REMOVED和android.intent.action.PACKAGE_ADDED 可以监听别的应用被安装卸载,但不能监听自己被卸载啊。 监听自己被卸载通过前辈们探索发现,只能通过监听系统卸载log如:act=...

    Android Studio——优先级(setComponent()、setPackage()).zip

    本主题将深入探讨在Android Studio中如何使用BroadcastReceiver,特别是关注`setComponent()`和`setPackage()`方法在设置广播接收器优先级方面的作用。 首先,BroadcastReceiver有两种注册方式:静态注册和动态注册...

    struts2 result转向到action

    在 Struts2 中使用 `redirect-action` 来实现 Action 之间的跳转是一种常见的做法,特别是在需要按顺序执行多个 Action 的业务场景中。通过这种方式,不仅可以保持应用程序的良好结构,还能有效地组织业务流程。同时...

    Action-RPG Starter Kit 6.5

    在《Action-RPG Starter Kit 6.5》的unitypackage中,包含了构建一个完整Action-RPG所需的各种组件和模块。这些组件可能包括: 1. **角色控制器**:这是游戏的核心部分,提供角色移动、跳跃、攻击等基本功能。通常...

    去掉.action去掉.do字样 隐藏struts2 URL地址action, strus1的扩展名do也是同理.zip

    Struts2和Struts1是两个非常著名的Java Web框架,它们在处理请求时通常会在URL中显式地显示.action或.do后缀。然而,为了提供更友好的用户体验和增强安全性,有时我们需要隐藏这些扩展名。本篇文章将详细介绍如何在...

    Android应用监听自身卸载

    在实际开发中,由于Android系统的安全机制,自定义的广播接收器可能不会在应用卸载后立即接收到`ACTION_PACKAGE_REMOVED`广播。为了解决这个问题,我们可以利用AIDL(Android Interface Definition Language)创建一...

    Intent总结03 Action属性

    当有多个应用可以处理相同的Action时,可以使用`createChooser(Intent target, CharSequence title)`创建一个Intent选择器,让用户选择合适的处理应用。 总之,Intent的Action属性是Android中非常关键的一个概念,...

    S2SH+JQuery的checkbox批量选择并在action中获取数据

    ### S2SH+JQuery的Checkbox批量选择并在Action中获取数据 #### 一、背景介绍 在Web开发中,批量操作是一种常见的需求场景,尤其是在管理后台系统中,用户经常需要对多条记录进行批量处理,比如批量删除、批量启用...

    Playmaker.unitypackage

    在Unity中,Playmaker以一个Unitypackage的形式提供,方便用户导入到项目中使用。"Playmaker.unitypackage"文件包含了所有必要的资源、脚本和设置,确保在导入后即可在项目中立即启用Playmaker功能。只需将此Unity...

    测试struts2中action

    通过`verifyActionErrors`验证了Action中是否出现了密码不匹配的错误,并且确保没有设置`authentication`属性。 ### 总结 通过上述代码分析可以看出,Struts2框架中的Action是非常重要的组成部分,它负责处理用户...

Global site tag (gtag.js) - Google Analytics