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

yizhihongxing

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

在使用Struts2.5+框架进行web开发过程中,经常会用到通配符和动态方法的方式进行访问,但在实际开发中,可能会遇到一些问题。下面我们就来详细讲解一下在使用通配符和动态方法时会遇到的常见问题,并提供一些解决方案。

通配符使用

通配符的作用是将不同的请求映射到同一个Action中进行处理。比如你有两个请求 /user/info/1/user/update/1,你可以通过在 Struts.xml 文件中使用通配符 /* 的方式将它们映射到同一个 Action 中进行处理。

问题一:通配符和正则表达式怎么用?

通配符在 Struts2.5+ 中是使用正则表达式实现的,因此在使用通配符时,要注意避免和正则表达式的语法冲突。比如下面的代码中,我们想把所有的请求都映射到一个 Action 中:

<action name="/*" class="com.example.MyAction">
  <result>/result.jsp</result>
</action>

但是这段代码中,/* 实际上是一个正则表达式中的符号,表示匹配任意字符零次或多次,因此这个配置是匹配不到任何请求的。如果要使用通配符,请使用 /{*} 的方式进行配置,如下所示:

<action name="/{*}" class="com.example.MyAction">
  <result>/result.jsp</result>
</action>

问题二:如何传递参数?

在使用通配符时,请求的参数是作为 HttpServletRequest 对象的属性传递到 Action 的方法中的。比如我们有一个请求 /user/info/1,其中的 1 可以作为参数传递到 Action 的方法中。下面是一段示例代码:

public class MyAction extends ActionSupport {

  private String id;

  public void setId(String id) {
    this.id = id;
  }

  public String execute() throws Exception {
    System.out.println(id);
    return SUCCESS;
  }
}

在这段代码中,我们将请求参数 1 的值通过 setId 方法传递到了 id 变量中。

动态方法使用

动态方法的作用是在一个 Action 中定义多个方法,根据请求参数的不同调用相应的方法。比如你有一个请求 /user/info.action?method=get,则会调用 Action 中的 get 方法进行处理。

问题三:动态方法的参数名如何定义?

在使用动态方法时,参数名必须是 method,否则 Struts2.5+ 将无法识别请求参数。同时,method 参数可以通过在 action 的配置中进行定义。比如下面的代码,定义了 method 参数的默认值为 execute

<action name="user" class="com.example.UserAction">
  <param name="method">execute</param>
  <result>/user.jsp</result>
</action>

问题四:动态方法的命名有什么要求?

在动态方法中,方法的命名必须以 execute 开头,比如 executeGetexecuteSave 等。同时,在使用动态方法时,为了避免与 Struts2.5+ 的默认方法名发生冲突,建议将动态方法名统一使用 execute 开头,比如 executeGetexecuteSave 等。

示例

下面我们来演示一下在 Struts2.5+ 中如何使用通配符和动态方法:

示例一:通配符

首先在 Struts.xml 中进行如下配置:

<action name="/user/*" class="com.example.UserAction">
  <result>/user.jsp</result>
</action>

在 UserAction 中的代码如下:

public class UserAction extends ActionSupport {

  private String id;

  public void setId(String id) {
    this.id = id;
  }

  public String execute() throws Exception {
    System.out.println("execute method");
    System.out.println(id);
    return SUCCESS;
  }
}

当我们访问 /user/info/1 时,就会执行 UserAction 类中的 execute 方法,并将请求参数 1 的值赋值给 id 变量。

示例二:动态方法

首先在 Struts.xml 中进行如下配置:

<action name="user" class="com.example.UserAction">
  <param name="method">executeGet</param>
  <result>/user.jsp</result>
</action>

在 UserAction 中的代码如下:

public class UserAction extends ActionSupport {

  private String id;

  public void setId(String id) {
    this.id = id;
  }

  public String executeGet() throws Exception {
    System.out.println("executeGet method");
    System.out.println(id);
    return SUCCESS;
  }
}

当我们访问 /user?action=get&id=1 时,就会执行 UserAction 类中的 executeGet 方法,并将请求参数 1 的值赋值给 id 变量。

总结

在使用 Struts2.5+ 框架进行 web 开发时,通配符和动态方法是常见的访问方式,掌握了它们的正确使用方法,可以使我们的开发更加方便和高效。同时,我们也需要注意上述介绍中提到的问题,以免在开发中出现错误。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts2.5+框架使用通配符与动态方法常见问题小结 - Python技术站

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

相关文章

  • python实现提取jira bug列表的方法示例

    下面我将详细讲解Python实现提取Jira bug列表的方法示例的完整攻略。 1. 准备工作 在使用Python获取Jira bug列表前,我们需要先为访问Jira做好准备工作。具体做法是: 在Jira中创建一个新的用户,用于Python访问Jira时使用。 在Jira中为该用户授权,最好只授权访问相关的项目和数据,以保证安全性。 在Python中安装相关…

    Java 2023年6月16日
    00
  • springboot 2.x整合mybatis实现增删查和批量处理方式

    下面是“springboot 2.x整合mybatis实现增删查和批量处理方式”的完整攻略。 准备工作 在开始整合之前,需要确保已经添加了Spring Boot和MyBatis的依赖。 先来看一下pom.xml文件: <dependencies> <!–Spring Boot相关依赖–> <dependency> &l…

    Java 2023年5月20日
    00
  • java文件读写操作实例详解

    下面是对“java文件读写操作实例详解”的完整攻略,包含以下几个部分: 1. 概述 文件读写操作是程序开发中经常用到的一项基础操作,Java提供了丰富的文件读写API,能够满足各种不同的需求。文件读写操作包括文件读取、文件写入、文件拷贝等。 2. 文件读取操作 Java提供了多种读取文件的方式,常用的方式包括IO流、NIO、FileReader等。下面以Fi…

    Java 2023年5月20日
    00
  • 详解SpringBoot启动代码和自动装配源码分析

    详解 Spring Boot 启动代码和自动装配源码分析 在本文中,我们将详细讲解 Spring Boot 启动代码和自动装配源码分析的完整攻略。我们将使用 Spring Boot 2.5.0 版本的源码进行分析。 步骤一:下载源码 首先,我们需要下载 Spring Boot 2.5.0 版本的源码。可以从官方网站或者 GitHub 上下载。 步骤二:分析启…

    Java 2023年5月15日
    00
  • java中jdk的下载和安装全过程

    1. 确定Java版本和下载地址 在下载和安装JDK之前,需要确定所需的Java版本以及下载该版本的JDK。可到Java官方网站(https://www.oracle.com/java/technologies/javase-downloads.html)下载。在该网站中,需要选择需要的Java版本,例如:Java SE 16 LTS,然后根据操作系统的不同…

    Java 2023年5月19日
    00
  • MyBatisPlus超详细分析条件查询

    以下是针对“MyBatisPlus超详细分析条件查询”的完整攻略: 一、MyBatisPlus概述 MyBatisPlus是对MyBatis进行了功能扩展和优化的一款工具。其提供了更加便捷的CRUD操作、Lambda表达式查询等功能,大大提升了开发效率。 二、条件查询 MyBatisPlus提供了多种条件查询的方式,包括wrapper、Lambda以及Que…

    Java 2023年5月20日
    00
  • js中如何对json数组进行排序

    首先需要明确的是,JSON数组是由JavaScript对象组成的数组。在对JSON数组进行排序前,需要先确定排序的依据。 若JSON数组中的对象具有单个属性用于排序,可以使用JavaScript的sort()方法。sort()方法可以按照属性值进行排序,可以接受一个比较函数作为参数。 以下为示例代码: // 假设JSON数组中的对象包含一位客人的姓名和年龄 …

    Java 2023年5月26日
    00
  • springboot+springmvc+mybatis项目整合

    一、概述 本文将简要讲解如何使用SpringBoot + SpringMVC + MyBatis这个组合来开发Web应用。这一组合是非常流行的,MyBatis负责ORM,SpringMVC负责MVC框架,SpringBoot则帮助我们快速搭建整个应用。 二、环境搭建 首先,我们需要在本地环境中安装JDK、Maven以及相应的IDE。为了便于快速上手,可以使用…

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