关于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日

相关文章

  • java处理字节的常用工具类

    Java处理字节的常用工具类 Java作为一门强大的编程语言,提供了一系列的工具类来处理字节数据。在以下的文章中,我将会详细讲解Java处理字节的常用工具类,包括InputStream、OutputStream、ByteArrayInputStream、ByteArrayOutputStream、DataInputStream、DataOutputStrea…

    Java 2023年5月27日
    00
  • ajax跳转到新的jsp页面的方法

    当用户在网页中进行某些操作,需要展示新的内容时,可以通过跳转到新的jsp页面来实现。Ajax技术可以使这个过程更加流畅和无感知。下面,我将详细讲解“ajax跳转到新的jsp页面的方法”的完整攻略。 1. 前端实现 1.1 创建按钮或链接 首先,在前端页面中添加一个按钮或链接,当点击这个按钮或链接时,将使用Ajax技术跳转到新的jsp页面: <butto…

    Java 2023年6月15日
    00
  • Kafka简单客户端编程实例

    下面我将为您详细讲解“Kafka简单客户端编程实例”的完整攻略。 1.什么是Kafka Kafka是由Apache基金会开发的一种高性能、可扩展的分布式消息队列。Kafka可以支持多个生产者和多个消费者的并发操作,并且支持数据的持久化。 2.Kafka的客户端API Kafka提供了丰富的客户端API,包括Java、C++、Python等多种语言,这些API…

    Java 2023年5月20日
    00
  • 新手了解java基础知识(二)

    下面给出“新手了解java基础知识(二)”的完整攻略。 知识点概述 本篇文章主要介绍Java中的基本数据类型、常量和变量。对于初学者来说,这是基础中的基础,掌握了这些内容才能更深刻地理解后续学习的内容。 本文主要介绍以下内容: Java中的基本数据类型 常量的定义与使用 变量的定义与使用 类型转换 Java中的基本数据类型 Java中共定义了8中基本数据类型…

    Java 2023年5月20日
    00
  • springboot聚合工程的部署与深入讲解

    SpringBoot聚合工程的部署与深入讲解 什么是SpringBoot聚合工程? SpringBoot聚合工程是指在一个工程中集成了多个模块,每个模块都是一个独立的SpringBoot项目。这些模块可以共享公共的代码和资源,同时也可以单独部署和运行。SpringBoot聚合工程的好处在于将多个关联的应用程序组合在一起,简化了项目的部署、维护和扩展。 如何创…

    Java 2023年5月20日
    00
  • SpringBoot整合java诊断工具Arthas解读

    SpringBoot整合java诊断工具Arthas解读 简介 Arthas是一款阿里开源的Java诊断工具,它可以帮助开发者找到应用运行过程中的问题,定位性能瓶颈,进行动态代码修改等。本攻略将介绍如何在SpringBoot项目中使用Arthas进行诊断调试。 步骤 1. 导入依赖 在SpringBoot项目的pom.xml中添加arthas依赖,如下所示:…

    Java 2023年5月19日
    00
  • Java中使用fileupload组件实现文件上传功能的实例代码

    介绍 在Java Web开发中,文件上传功能是一个非常常见和基础的功能。而使用fileupload组件实现文件上传,不仅方便易用,而且功能强大,能够满足大多数文件上传需求。 本文将介绍如何使用fileupload组件实现文件上传功能的实例代码并附有完整代码和两个示例供您参考。在实现文件上传的过程中,我们需要引入Apache Commons FileUploa…

    Java 2023年5月19日
    00
  • JPype实现在python中调用JAVA的实例

    JPype是一个开源的Python模块,它可以让Python程序调用Java类。使用JPype可以方便地使用Java已有的库,从而加速Python在特定场景下的运行效率。下面是在Python中使用JPype调用Java实例的详细攻略: 1. 安装JPype 安装JPype模块前,需要Python和Java环境同时存在于计算机中。如果没有安装Java环境,可以…

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