Struts 2 实现Action的几种方式

Struts 2 实现 Action 的几种方式包括以下几种:基于方法、基于类、基于接口、基于注解,以及自定义 Action。

基于方法

这种方式是在 Action 类中定义不同的方法来处理不同的请求,例如:

public class UserAction{
    public String list(){
        // 处理列表请求
        return "list";
    }
    public String add(){
        // 处理添加请求
        return "add";
    }
    public String delete(){
        // 处理删除请求
        return "delete";
    }
}

在 Struts 2 中,可以通过类似如下的方式进行配置:

<action name="userAction_*" class="com.example.UserAction" method="{1}">
    <result name="list">/user/list.jsp</result>
    <result name="add">/user/add.jsp</result>
    <result name="delete">/user/delete.jsp</result>
</action>

请求的 URL 格式为:

/userAction_list.do 执行 UserAction 类的 list 方法
/userAction_add.do 执行 UserAction 类的 add 方法
/userAction_delete.do 执行 UserAction 类的 delete 方法

基于类

这种方式是在 Action 类中实现不同的接口来处理不同的请求,例如:

public class ListAction implements Action{
   public String execute() throws Exception{
       // 处理列表请求
       return "list";
   }
}
public class AddAction implements Action{
   public String execute() throws Exception{
       // 处理添加请求
       return "add";
   }
}

在 Struts 2 中,可以通过如下的方式进行配置:

<action name="list" class="com.example.ListAction">
    <result name="list">/list.jsp</result>
</action>
<action name="add" class="com.example.AddAction">
    <result name="add">/add.jsp</result>
</action>

请求的 URL 格式为:

/list.do 执行 ListAction 类的 execute 方法
/add.do 执行 AddAction 类的 execute 方法

基于接口

这种方式是定义一个接口来规定 Action 类必须实现的方法,例如:

public interface BaseAction{
   public String execute() throws Exception;
}
public class ListAction implements BaseAction{
   public String execute() throws Exception{
       // 处理列表请求
       return "list";
   }
}
public class AddAction implements BaseAction{
   public String execute() throws Exception{
       // 处理添加请求
       return "add";
   }
}

在 Struts 2 中,可以使用如下配置:

<package name="example" namespace="/" extends="struts-default">
   <action name="list" class="com.example.ListAction" implements="BaseAction">
       <result name="list">/list.jsp</result>
   </action>
   <action name="add" class="com.example.AddAction" implements="BaseAction">
       <result name="add">/add.jsp</result>
   </action>
</package>

请求的 URL 格式为:

/list.do 执行 ListAction 类的 execute 方法
/add.do 执行 AddAction 类的 execute 方法

基于注解

这种方式是使用 Struts 2 的注解来标记方法实现不同的请求,例如:

@Namespace("/")
@Action(value="list",results={@Result(name="list",location="/list.jsp")})
public class ListAction extends ActionSupport{
   public String execute() throws Exception{
       // 处理列表请求
       return "list";
   }
}

在 Struts 2 中,可以使用如下配置:

<package name="example" namespace="/" extends="struts-default">
   <action name="list" class="com.example.ListAction">
       <result name="list">/list.jsp</result>
   </action>
</package>

请求的 URL 格式为:

/list.do 执行 ListAction 类的 execute 方法

自定义 Action

自定义 Action 方式是定义自己的 Action 类,实现特定的逻辑,例如:

public class MyAction extends ActionSupport implements ServletRequestAware{
   private HttpServletRequest request;
   public void setServletRequest(HttpServletRequest request){
       this.request=request;
   }
   public String execute() throws Exception{
       // 处理请求
       return SUCCESS;
   }
}

在 Struts 2 中,可以使用如下配置:

<package name="example" namespace="/" extends="struts-default">
   <action name="myAction" class="com.example.MyAction">
       <result name="success">/success.jsp</result>
       <result name="error">/error.jsp</result>
   </action>
</package>

请求的 URL 格式为:

/myAction.do 执行 MyAction 类的 execute 方法

以上就是 Struts 2 实现 Action 的几种方式的详细介绍,希望对您有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts 2 实现Action的几种方式 - Python技术站

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

相关文章

  • 关于Kafka消费者订阅方式

    下面我来为您详细讲解关于Kafka消费者订阅方式的完整攻略。 Kafka消费者订阅方式 在 Kafka 中,消费者可以通过不同的方式从主题(Topic)中获取消息,以下是三种常见的订阅方式: 1. 静态订阅方式 使用静态方式订阅主题的消费者需要在代码中显式指定要消费的主题和分区。消费者只能消费指定分区中的消息,无法动态的分配和重新分配分区。 以 Java 客…

    Java 2023年5月20日
    00
  • 详解Java中的反射机制和动态代理

    详解Java中的反射机制和动态代理 什么是反射机制 反射机制是Java语言中的一种机制,它可以在程序运行时获取一个类的信息,包括类的名称、父类、接口、属性、方法等,还可以在运行时获取和设置对象的属性和方法,创建对象并调用方法。 Java中的反射机制主要包括以下几个类: Class:代表一个类,可以获取一个类的信息,如名称、直接父类、实现的接口、构造方法、属性…

    Java 2023年5月20日
    00
  • Apache Kafka 分区重分配的实现原理解析

    Apache Kafka 分区重分配的实现原理解析 简介 Apache Kafka 是一个分布式的流数据处理平台,其中重要的一部分是分区(partition)机制。Kafka 的一个主题(topic)可以被分成多个分区,每个分区都可以被分配到不同的网络节点(broker)上进行处理。然而,Kafka 还需要在某些场景下重新分配分区。例如,网络节点加入或退出集…

    Java 2023年6月2日
    00
  • Java中批处理框架spring batch详细介绍

    Java中批处理框架Spring Batch详细介绍 什么是Spring Batch? Spring Batch是一个轻量级、全面的批处理框架,用于开发企业级批处理应用程序。它旨在帮助开发人员管理和执行大规模批处理任务,其中包括读取大量数据、处理复杂计算和写回结果等任务。Spring Batch提供了许多功能,如任务调度、处理日志和抽象化数据源的读取和写入,…

    Java 2023年5月19日
    00
  • Java实现超级实用的日记本

    Java实现超级实用的日记本 介绍 在这份攻略中,我们将详细讲解如何使用Java实现一个超级实用的日记本。这个日记本可以帮助用户记录自己每天的生活、工作情况,同时还可以进行文本的编辑、保存、读取等操作。我们将以Java Swing为界面框架,使用文件io技术将数据保存在本地。 环境 JDK 1.8 或以上 Eclipse IDE 项目结构 我们将创建一个Ja…

    Java 2023年5月18日
    00
  • JSP数据交互实现过程解析

    JSP数据交互实现过程解析 JSP是动态网页技术之一,需要数据交互才能实现其动态的功能。本文将详细讲解JSP数据交互的实现过程,包括HTTP请求方法、JSP表单提交、JSP Servlet实现数据交互、JSP EL表达式、JSP标签库等方面。 HTTP请求方法 HTTP请求方法是指Web浏览器向Web服务器请求数据的方式,常用的HTTP请求方法有GET和PO…

    Java 2023年6月15日
    00
  • 常见的Java代码混淆工具有哪些?

    常见的Java代码混淆工具有以下几种: ProGuard: ProGuard 是一款开源的Java代码混淆工具,通过删除未使用的类、字段、方法和属性,重命名它们,使得反编译后的代码难以阅读和理解。使用方法如下: 1.1. 首先下载并安装 ProGuard 工具,可以从官方网站 https://sourceforge.net/projects/proguard…

    Java 2023年5月11日
    00
  • Java常用函数式接口总结

    Java常用函数式接口总结 Java已经从JDK 8开始支持函数式编程,因此添加了许多的函数式接口,包括常用的Function、Predicate、Consumer等等。本文将对Java中常用的函数式接口进行总结,并给出相应的使用示例。 Function Function接口定义了一个输入参数类型,返回一个结果类型的方法,通常用于将一个类型的值转换为另一个类…

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