深入解析Java的Struts框架中的控制器DispatchAction

深入解析Java的Struts框架中的控制器DispatchAction

DispatchAction的概述

Struts是一个MVC架构的Web框架,其中控制器层由Action实现。DispatchAction是Struts中一个特殊的Action,它根据请求参数的值映射到相应的方法进行处理,相当于一组Action的集合,可以大大简化代码实现。

DispatchAction的使用方法

  1. 创建一个继承DispatchAction的Action类,并实现每个方法需执行的具体逻辑。如下示例中的DemoAction:
package com.example.action;

import org.apache.struts.action.ActionForm;
import org.apache.struts.actions.DispatchAction;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class DemoAction extends DispatchAction {

    public ActionForward add(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response) 
                             throws Exception {
        //执行添加操作的业务逻辑
        return mapping.findForward("success");
    }

    public ActionForward delete(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response) 
                             throws Exception {
        //执行删除操作的业务逻辑
        return mapping.findForward("success");
    }

    public ActionForward update(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response) 
                             throws Exception {
        //执行更新操作的业务逻辑
        return mapping.findForward("success");
    }
}
  1. 在struts-config.xml中配置对应的mapping。如下示例:
<action path="/demo" type="com.example.action.DemoAction" parameter="method">
    <forward name="success" path="/success.jsp"/>
</action>

其中,path为Action的URL请求路径,type为Action的实现类,parameter指定方法名对应的请求参数名(默认为method)。

  1. 前端请求时,将method作为参数值传入到后端,DispatchAction根据method的值,再转发到对应的方法进行处理。

例如,发送URL为“/demo.do?method=add”时,会调用DemoAction中的add方法,参数会自动将HttpServletRequest和ActionForm传入。

DispatchAction的注意点

  1. 方法名必须不同,且对应的请求参数名必须与struts-config.xml文件中的参数名相同,否则DispatchAction无法正确路由至对应的Action方法上。
  2. 每个方法必须返回一个ActionForward对象,用于指定请求处理后跳转的页面。

示例

示例一:使用DispatchAction处理商品操作

  1. 创建一个继承DispatchAction的Action类ProductAction,实现添加、修改、删除商品的方法。
package com.example.action;

import org.apache.struts.action.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ProductAction extends DispatchAction {

    public ActionForward add(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        //实现添加商品的业务逻辑
        return mapping.findForward("success");
    }

    public ActionForward update(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        //实现修改商品的业务逻辑
        return mapping.findForward("success");
    }

    public ActionForward delete(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        //实现删除商品的业务逻辑
        return mapping.findForward("success");
    }
}
  1. 在struts-config.xml中配置请求路径、参数名及Action对应的类。
<action path="/products" type="com.example.action.ProductAction" parameter="method">
  <forward name="success" path="/success.jsp"/>
</action>
  1. 前端请求时,需传递method参数(值为add、update或delete),以指定对商品的操作类型。
<a href="/products.do?method=add">添加商品</a>

示例二:使用DispatchAction处理客户信息

  1. 创建一个继承DispatchAction的Action类CustomerAction,实现新建、修改、删除客户的方法。
package com.example.action;

import org.apache.struts.action.*; 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CustomerAction extends DispatchAction {

    public ActionForward newCustomer(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        //实现新增客户的业务逻辑
        return mapping.findForward("success");
    }

    public ActionForward modifyCustomer(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        //实现修改客户信息的业务逻辑
        return mapping.findForward("success");
    }

    public ActionForward deleteCustomer(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        //实现删除客户的业务逻辑
        return mapping.findForward("success");
    }
}
  1. 在struts-config.xml中配置请求路径、参数名及Action对应的类。
<action path="/customers" type="com.example.action.CustomerAction" parameter="method">
  <forward name="success" path="/success.jsp"/>
</action>
  1. 前端请求时,需传递method参数(值为newCustomer、modifyCustomer或deleteCustomer),以指定对客户信息的操作类型。
<a href="/customers.do?method=newCustomer">新建客户</a>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入解析Java的Struts框架中的控制器DispatchAction - Python技术站

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

相关文章

  • java中Date类和Strng类的灵活转化

    Java中的Date类和String类经常在我们的编程过程中使用,它们可以进行灵活的转化,丰富我们代码的实现。接下来将为大家讲解Java中Date类和String类的灵活转化的攻略。 1. Date类转String类 1.1 SimpleDateFormat类 在Java中,我们可以使用SimpleDateFormat类将Date对象转化为String对象。…

    Java 2023年5月20日
    00
  • Maven setting.xml配置文件详解

    下面是Maven setting.xml配置文件详解的完整攻略。 什么是Maven的setting.xml配置文件? Maven的setting.xml配置文件是Maven构建系统的配置文件之一,它可以对Maven构建过程中的各种参数进行设置,比如Maven的本地仓库路径、代理服务器地址、编译插件、发布仓库等等。设置这些参数可以让我们的Maven构建过程更加…

    Java 2023年5月19日
    00
  • SpringBoot在生产快速禁用Swagger2的方法步骤

    下面我将介绍使用SpringBoot在生产环境中快速禁用Swagger2的方法。 步骤一:pom.xml中排除Swagger2依赖 在pom.xml文件中,可以使用如下代码排除Swagger2依赖: <dependency> <groupId>io.springfox</groupId> <artifactId&gt…

    Java 2023年5月20日
    00
  • java实现将ftp和http的文件直接传送到hdfs

    讲解“Java实现将FTP和HTTP的文件直接传送到HDFS”的完整攻略,步骤如下: 1.导入必要的依赖项 对于将FTP和HTTP文件传送到HDFS,我们需要使用一些必要的Java包和库。其中,Java对于FTP协议的支持已经包括在Java自带的JDK中了。而对于HTTP协议的支持,我们可以通过引入Apache HttpClient的库来实现。对于HDFS的…

    Java 2023年5月19日
    00
  • spring+springmvc整合mabytis时mapper注入失败问题解决方法

    在 Spring + Spring MVC 整合 MyBatis 时,可能会遇到 Mapper 注入失败的问题。本文将详细讲解这个问题的解决方法,包括如何配置 MapperScannerConfigurer 和如何使用 @Mapper 注解,并提供两个示例说明。 配置 MapperScannerConfigurer 在 Spring + Spring MVC…

    Java 2023年5月18日
    00
  • JSON Web Token(JWT)原理入门教程详解

    JSON Web Token(JWT)原理入门教程详解 什么是JSON Web Token(JWT)? JSON Web Token(JWT)是一种安全的身份验证方式,用于在客户端和服务器之间传递声明,以便在客户端和服务器之间进行身份验证和授权。JWT是一种开放标准(RFC 7519),它定义了一种紧凑和自包含的方式用于在各方之间作为JSON对象安全地传输信…

    Java 2023年5月19日
    00
  • Java中BigInteger用法小结

    下面我将详细讲解“Java中BigInteger用法小结”的完整攻略。 1. 什么是BigInteger BigInteger是Java中一个用于处理大整数运算的类。它可以处理任意大的整数,而不会受到计算机内存的限制,因此在处理大数时非常方便实用。 2. BigInteger类的常用方法 下面是BigInteger类的一些常用方法: 2.1 创建BigInt…

    Java 2023年5月26日
    00
  • JAVA基础类库之String类,StringBuffer类和StringBuilder类

    JAVA基础类库之String类,StringBuffer类和StringBuilder类攻略 在JAVA中,String、StringBuffer、StringBuilder这三种类都是用来处理字符串的。这篇攻略将详细说明它们的区别和用法。 String类 String类是不可变的,它代表一个字符串序列(字符数组),一旦创建,就不能再对其进行修改。因为不可…

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