第183章

大B:“由于在JUnit中,参杂了其它的模式在里面,使得命令模式的特点不太明显。我给你讲讲以命令模式在Web开发中最常见的应用——Struts中Action的使用作为例子。”

小A:“嗯。好的。”

大B:“在Struts中Action控制类是整个框架的核心,它连接着页面请求和后台业务逻辑处理。按照框架设计,每一个继承自Action的子类,都实现execute方法——调用后台真正处理业务的对象来完成任务。”

大B:“需要注意的是:继承自DispatchAction的子类,则可以一个类里面处理多个类似的操作。”

下面我们将Struts中的各个类与命令模式中的角色对号入座。

先来看下命令角色——Action控制类

publicclassAction{

……

/*

*可以看出,Action中提供了两个版本的执行接口,而且实现了默认的空实现。

*/

publicActionForwardexecute(ActionMappingmapping,

ActionFormform,

ServletRequestrequest,

ServletResponseresponse)

throwsException{

try{

returnexecute(mapping,form,(HttpServletRequest)request,

(HttpServletResponse)response);

}catch(ClassCastExceptione){

returnnull;

}

}

publicActionForwardexecute(ActionMappingmapping,

ActionFormform,

HttpServletRequestrequest,

HttpServletResponseresponse)

throwsException{

returnnull;

}

}

下面的就是请求者角色,它仅仅负责调用命令角色执行操作。

publicclassRequestProcessor{

……

protectedActionForwardprocessActionPerform(HttpServletRequestrequest,

HttpServletResponseresponse,

Actionaction,

ActionFormform,

ActionMappingmapping)

throwsIOException,ServletException{

try{

return(action.execute(mapping,form,request,response));

}catch(Exceptione){

return(processException(request,response,e,form,mapping));

шшш тт kan C〇

}

}

}

大B:“Struts框架为我们提供了以上两个角色,要使用struts框架完成自己的业务逻辑,剩下的三个角色就要由我们自己来实现了。”

小A:“那要怎么去实现啊?”

大B:“实现的步骤如下:1、很明显我们要先实现一个Action的子类,并重写execute方法。在此方法中调用业务模块的相应对象来完成任务。2、实现处理业务的业务类。3、配置struts-config.xml配置文件,将自己的Action和Form以及相应页面结合起来。4、编写jsp,在页面中显式的制定对应的处理Action。”

第150章第86章第191章第141章第49章第63章第207章第179章第35章第175章第110章第121章第123章第128章第7章第158章第202章第40章第82章第135章第107章第106章第63章第112章第167章第220章第11章第196章第160章第21章第2章第33章第108章第53章第220章第196章第38章第200章第44章第130章第177章第110章第70章第135章第44章第155章第197章第30章第30章第221章第220章第129章第13章第169章第153章第155章第98章第105章第42章第64章第228章第130章第42章第172章第223章第135章第53章第71章第50章第92章第74章第43章第197章第176章第32章第191章第211章第89章第128章第111章第178章第116章第141章第214章第155章第49章第98章第120章第101章第99章第218章第82章第199章第99章第139章第182章第147章第103章
第150章第86章第191章第141章第49章第63章第207章第179章第35章第175章第110章第121章第123章第128章第7章第158章第202章第40章第82章第135章第107章第106章第63章第112章第167章第220章第11章第196章第160章第21章第2章第33章第108章第53章第220章第196章第38章第200章第44章第130章第177章第110章第70章第135章第44章第155章第197章第30章第30章第221章第220章第129章第13章第169章第153章第155章第98章第105章第42章第64章第228章第130章第42章第172章第223章第135章第53章第71章第50章第92章第74章第43章第197章第176章第32章第191章第211章第89章第128章第111章第178章第116章第141章第214章第155章第49章第98章第120章第101章第99章第218章第82章第199章第99章第139章第182章第147章第103章