关于struts2中Action名字的大小写问题浅谈

下面是关于 struts2 中 Action 名字的大小写问题的攻略:

问题描述

在 struts2 的配置文件中,Action 的名字可以大小写混用,例如:

<action name="Index" class="com.example.IndexAction">
    <result>/index.jsp</result>
</action>

还可以如下定义:

<action name="index" class="com.example.IndexAction">
    <result>/index.jsp</result>
</action>

两个配置是等价的,那么这样可以吗?

解答

在 Struts2 中,Action 名字的大小写不敏感,也就是说,不能同时存在两个不同大小写的相同名字的 Action。

例如,下面的配置不正确:

<action name="Index" class="com.example.IndexAction">
    <result>/index.jsp</result>
</action>

<action name="index" class="com.example.IndexAction">
    <result>/index.jsp</result>
</action>

上面的配置会在 Struts2 启动时抛出如下异常:

Configuration problem: There is no action mapped for namespace [/] and action name [Index] associated with context path []

示例

示例一

可以在 struts.xml 文件中定义大小写混用的 Action 名字,但是不能在 Java 代码中通过大小写混用的方式获取 Action:

// 定义大小写混用的 Action 名字
<action name="MyAction" class="com.example.MyAction">
    <result>/success.jsp</result>
</action>

// 通过正确的名称获取 Action
String result = servletRequest.getParameter("action");
String actionName = (result == null || result.trim().length() == 0) ? "MyAction" : result;

// 通过错误的名称获取 Action
String actionName = "myAction"; // 注意名字大小写
ActionProxy proxy = actionProxyFactory.createActionProxy("", actionName, null, true, false); // 会抛出异常

示例二

在 Struts2 中,Action 名字的大小写不是敏感的,但是在 web.xml 中定义的 filter 名字是敏感的。因此,在 filter 配置中注意要使用正确的大小写。

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern> <!-- 这里使用大写字母URL-PATTERN -->
</filter-mapping>

总结

在 struts2 的配置文件中,Action 的名字可以大小写混用,但是不允许同时存在两个不同大小写的相同名字的 Action。在 Java 代码中获取 Action 时,一定要使用正确的 Action 名字,否则会抛出异常。同时,在 web.xml 配置文件中,filter 的名字是大小写敏感的,一定要用正确的大小写。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于struts2中Action名字的大小写问题浅谈 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • jsp中过滤器选择过滤器的写法详解

    首先,过滤器是JSP中非常重要的组件,它可以对请求进行拦截、预处理和后处理。在实际开发中,我们经常需要对请求做一些统一的处理,这时候过滤器就派上用场了。 一、写一个过滤器的基本步骤 在JSP中,编写一个过滤器需要经历以下几个步骤: 1.创建一个 Java 类并实现 javax.servlet.Filter 接口。 2.实现接口中的 doFilter 方法,该…

    Java 2023年6月15日
    00
  • 解决Maven中关于依赖导入不进的问题

    让我来详细讲解一下“解决Maven中关于依赖导入不进的问题”的完整攻略。 检查maven仓库中是否存在依赖库 首先,我们需要检查maven的本地仓库中是否已经存在了需要导入的依赖库。可以通过在命令行中输入以下命令来查看: mvn dependency:resolve 如果发现有依赖库缺失的情况,那么我们需要手动安装相应的依赖库到本地仓库中。可以通过在命令行中…

    Java 2023年5月20日
    00
  • 这可能是最全面的MySQL面试八股文了

    什么是MySQL MySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上的值是有数据类型的,比如:整数、字符串、日期等等。 数据库的三大范式 第一范式1NF 确保数据库表字段的原子性。最全面的Java面试网站 比如字段 userInfo:…

    Java 2023年4月25日
    00
  • 详解CentOS7.0安装与配置Tomcat-7

    下面是详解CentOS7.0安装与配置Tomcat-7的完整攻略: 安装Java 使用yum安装Java: sudo yum install java 验证Java是否安装成功: java -version 下载与安装Tomcat 下载Tomcat7: wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-7…

    Java 2023年5月19日
    00
  • SpringBoot+SpringSecurity+JWT实现系统认证与授权示例

    下面是“SpringBoot+SpringSecurity+JWT实现系统认证与授权”的完整攻略: 一、什么是Spring Boot、Spring Security和JWT Spring Boot:是一个快速开发框架,能够简化Spring应用程序的创建和开发过程。 Spring Security:是Spring框架中提供的一套安全服务框架,可以用来保护Web…

    Java 2023年5月20日
    00
  • 详解Java中Duration类的使用方法

    详解Java中Duration类的使用方法 Duration 类是Java8中新添加的日期时间类,用于表示时间的持续时间。 在Java中我们可以使用 Duration 类来进行时间的加减操作、比较两个时间点之间的时间差等操作。 下面就让我们来详解Java中 Duration 类的使用方法。 创建 Duration 对象 我们可以使用静态工厂方法 Durati…

    Java 2023年5月20日
    00
  • Java详细讲解文件的读写操作方法

    Java详细讲解文件的读写操作方法 文件读取操作 在Java中,可以使用FileInputStream和BufferedInputStream,以及Reader类中的FileReader和BufferedReader类来读取文件。下面是一个读取TXT文件的示例代码: import java.io.*; public class FileReadDemo { …

    Java 2023年5月20日
    00
  • 解决spring boot网关gateway导致的坑,无法下载文件问题

    在Spring Boot应用程序中,我们可以使用网关gateway来实现请求路由和负载均衡。然而,在使用网关gateway时,可能会出现无法下载文件的问题。本文将详细介绍如何解决这个问题,并提供两个示例说明。 1. 问题描述 在使用网关gateway时,可能会出现无法下载文件的问题。当我们尝试下载文件时,可能会收到404错误或空白页面。 2. 解决方法 要解…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部