深入解析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后端学习精华之网络通信项目进阶

    JAVA后端学习精华之网络通信项目进阶攻略 网络通信是JAVA后端开发中重要的一环,本文将从网络通信的概念、常见协议以及实现原理等方面进行详细讲解,以帮助读者深入了解JAVA网络通信技术,并指导初学者系统学习网络通信项目的开发过程。 网络通信基础知识 什么是网络通信? 网络通信是指在计算机网络中实现信息交换的过程,包括数据传输和信息处理两个环节。具体而言,在…

    Java 2023年5月24日
    00
  • Sprint Boot @Service使用方法详解

    @Service是Spring Boot中的一个注解,它用于标记一个类为服务类。在使用Spring Boot开发应用程序时,@Service是非常有用的。本文将详细介绍@Service的作用和使用,并提供两个示例说明。 @Service的作用 @Service的作用是标记一个类为服务类。服务类是指实现业务逻辑的类。使用@Service注解标记的类将被Spri…

    Java 2023年5月5日
    00
  • spring boot 集成 shiro 自定义密码验证 自定义freemarker标签根据权限渲染不同页面(推荐

    Spring Boot 集成 Shiro 在 Spring Boot 中集成 Shiro 需要以下步骤: 引入依赖。在 pom.xml 中添加以下依赖: <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</a…

    Java 2023年5月20日
    00
  • Java编写多功能万年历程序的实例分享

    Java编写多功能万年历程序的实例分享 本攻略将介绍使用Java编写多功能万年历程序的完整过程。 1. 概述 本程序的功能包括: 显示公历日期、星期、农历日期、节气、节日等信息 支持查看指定日期的信息 支持查询指定日期范围内的某个节日的日期 支持查询指定日期范围内的某个节气的日期 支持循环显示节日或节气日期 2. 准备工作 为了编写这个程序,您需要掌握Jav…

    Java 2023年5月20日
    00
  • Java项目开启远程调试的方法步骤(tomcat、springboot)

    当我们遇到 Java 项目中出现奇怪的问题时,远程调试是一种非常有用的方法,它可以帮助我们定位问题并解决它。在这里,我们将讨论如何在 Tomcat 和 Spring Boot 中开启 Java 项目的远程调试。 开启 Tomcat 远程调试 步骤 1:修改 Tomcat 启动脚本 找到你的 Tomcat 安装路径下的 bin 目录,打开 catalina.s…

    Java 2023年5月19日
    00
  • springMVC返回复杂的json格式数据方法

    为了返回复杂的json格式数据,我们可以在SpringMVC中使用Jackson库的ObjectMapper类,将java对象序列化为json字符串。下面是SpringMVC返回复杂的json格式数据的步骤。 1. 添加Jackson库依赖 在pom.xml文件中添加Jackson库的依赖。 <dependency> <groupId&gt…

    Java 2023年5月26日
    00
  • 两个例子了解java中的回调机制

    回调(Callback)是指A调用B的某个方法,B完成这个方法后通知A,这个机制在Java中被广泛应用,比如事件驱动(Event-Driven)编程、异步编程等。 下面分别通过两个实际例子来阐述Java中的回调机制: 例子一:事件驱动编程 在GUI(Graphical User Interface)编程中,事件驱动模型非常常见,我们可以通过按钮、文本框等控件…

    Java 2023年5月30日
    00
  • 关于Ubuntu Server 18.04 LTS 安装Tomcat并配置systemctl管理Tomcat服务的问题

    下面是详细的攻略: 环境准备 确保已经安装了Java环境,Tomcat需要依赖Java运行 sudo apt install default-jdk 下载Tomcat 可以在官网下载Tomcat https://tomcat.apache.org/download-90.cgi。 这里以apache-tomcat-9.0.52.tar.gz为例,在终端中执行…

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