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日

相关文章

  • js验证身份证号有效性并提示对应信息

    为了讲解验证身份证号有效性的完整攻略,我将分以下几个步骤进行介绍: 了解身份证号的规则 身份证号是由18或15位数字和字母组成的标识符,其中最后一位可能是数字或字母X。身份证号是根据国家标准GB 11643-1999确定的,身份证号的前17位数字是根据ISO 7064:1983算法计算出来的,最后一位是校验码。 编写JavaScript代码实现身份证有效性的…

    Java 2023年6月16日
    00
  • 详解tomcat各个端口的作用

    详解Tomcat各个端口的作用 本文将详细介绍 Tomcat 各个端口的作用,帮助用户更好地了解 Tomcat 的运行机制。 Tomcat 的端口 Tomcat 有三个最重要的端口,它们分别是: 8080: HTTP 请求的默认端口,用于 Web 应用程序和客户端之间的通信。 8005: Shutdown 端口,用于远程关闭 Tomcat 服务。 8009:…

    Java 2023年5月19日
    00
  • Spring Security密码解析器PasswordEncoder自定义登录逻辑

    概述: Spring Security 的 PasswordEncoder 用于对用户的密码进行加密(哈希处理)和解密,提供了很多加密算法,但是在某些情况下,我们需要自定义一些特殊的登录逻辑。本文将详细介绍如何自定义登录逻辑,实现 PasswordEncoder 的自定义。 过程: 1.继承PasswordEncoder接口,实现自定义逻辑的加密方法。 pu…

    Java 2023年6月3日
    00
  • 解决lambda表达式内出现异常无法throw抛出的问题

    当使用Lambda表达式时,可能会遇到无法抛出异常的问题。通常来说,在Lambda表达式中,我们不能throw出异常,因为这样做会导致代码无法编译。 但是,在一些特定的场合,我们还是需要在Lambda表达式中抛出异常。当这种情况发生时,我们可以通过使用java.util.function.Consumer或java.util.function.Supplie…

    Java 2023年5月27日
    00
  • JS自定义对象实现Java中Map对象功能的方法

    实现Java中Map对象的功能是通过JavaScript自定义对象来实现的。在JavaScript中,每个对象都可以包含一些属性和方法来定义其特定的行为。我们可以使用这一特性来模拟Java中的Map对象。 定义一个自定义对象 Map 对象是一个键值对的集合,我们可以用一个自定义的对象来代表这个集合。定义一个 Map 对象的例子如下: function Map…

    Java 2023年5月26日
    00
  • struts2中常用constant命令配置方法

    在Struts2中,可以通过配置constant命令来设置全局常量,方便在整个应用程序中共用这些常量。以下是配置constant命令的方法及示例: 配置常量 在struts.xml中使用constant命令可以配置全局常量: <constant name="CONSTANT_NAME" value="CONSTANT_VA…

    Java 2023年5月20日
    00
  • Java实现的求逆矩阵算法示例

    Java实现的求逆矩阵算法示例 什么是逆矩阵 矩阵A的逆矩阵记为A-1,它是一个与A相乘后得到单位矩阵的矩阵。在一般的情况下,只有方阵才有逆矩阵。 矩阵求逆算法 对于一个n阶方阵A,它的行列式为det(A)。 如果det(A)不等于0,则A可逆,它的逆矩阵B为: B = 1/det(A) * adj(A) 其中,adj(A)是A的伴随矩阵,它是由矩阵A的每个…

    Java 2023年5月19日
    00
  • Java Objects工具类原理及用法详解

    Java Objects工具类原理及用法详解 什么是Java Objects工具类? Java Objects工具类是Java编程语言中一个常用的工具类。它提供了一些静态方法,用于对Java对象进行类型转换、属性读取、对象比较、hashcode计算等操作。 Java Objects工具类的用法 引入Java Objects工具类 Java Objects类是…

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