command

 

javax.servlet.ServletException: Request[/database/item] does not contain handler parameter named 'command'.  
This may be caused by whitespace in the label text.
这个异常往往是大家对DispatchAction 不熟悉造成,在用它的时候别忘记了在STRUTS-CONFIG中的<action>属性加
parameter="method",还有<html:form>和普通的<form>是有区别的,在用form提交表单的时候别忘记要家范围
method="post",不然也会有错 ... 
Command模式即命令模式,是一种行为设计模式,它将请求封装为一个对象,使得请求的发送者和接收者之间解耦,还能支持撤销操作,并且可以被存储、记录、序列化、排队、日志等,为系统提供更大的灵活性[^1]。 命令模式的原理基于将请求封装成对象。其核心组件包括: - Command(命令):定义了执行请求的接口。 - ConcreteCommand(具体命令):实现了命令接口,负责调用请求的接收者来执行请求。 - Receiver(接收者):知道如何实施与执行一个请求相关的操作。 - Invoker(调用者):要求命令执行请求的对象。 - Client(客户端):创建具体命令对象并设置其接收者 [^2]。 命令模式的使用场景如下: - 需要将请求发送者和请求接收者解耦:命令模式允许请求发送者和接收者独立变化,互不影响。 - 需要支持命令的排队、记录请求日志、撤销操作等功能:命令模式可以轻松地扩展这些功能。 - 需要将一组操作组合在一起形成一个命令:命令模式可以将多个操作封装成一个命令对象 [^2]。 以下是一个简单的Java代码示例来展示命令模式: ```java // 命令接口 interface Command { void execute(); } // 接收者类 class LinuxSystem { public void cd() { System.out.println("执行cd命令"); } public void ls() { System.out.println("执行ls命令"); } } // 具体命令类:Cd命令 class CdCommand implements Command { private LinuxSystem receiver; public CdCommand(LinuxSystem receiver) { this.receiver = receiver; } @Override public void execute() { receiver.cd(); } } // 具体命令类:Ls命令 class LsCommand implements Command { private LinuxSystem receiver; public LsCommand(LinuxSystem receiver) { this.receiver = receiver; } @Override public void execute() { receiver.ls(); } } // 调用者类 class Invoker { private Command command; public void setCommand(Command command) { this.command = command; } public void executeCommand() { command.execute(); } } // 客户端类 public class Client { public static void main(String[] args) { // 创建接收者 LinuxSystem receiver = new LinuxSystem(); // 创建具体命令 Command cdCommand = new CdCommand(receiver); Command lsCommand = new LsCommand(receiver); // 创建调用者 Invoker invoker = new Invoker(); // 设置并执行命令 invoker.setCommand(cdCommand); invoker.executeCommand(); invoker.setCommand(lsCommand); invoker.executeCommand(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值