1、前言 STRUTS是标准的"模型2"的WEB应用框架,其中的ActionServlet代表了"模型2"MVC设计模式中的"控制器" 。STRUTS应用程序一般使用JSP代码生成用户界面,这些代码不包括任何商业逻辑,代表了MVC中的”VIEW”部分。需要执行商业逻辑的用户界面中的表单或超链将会由"控制器" ActionServlet接收和处理。在STRUTS中,只有一个ActionServlet实例,这个实例将接收和处理应用中的相关用户交互请求。ActionServlet实例将选择和调用相应的ACTION类来处理商业逻辑。在设计模式上,ACTION类被称为“控制辅助者”,它将修改JavaBeans,这些JavaBeans就是MVC中的” model”部分。本文将分析在STRUTS中进行模块化编程的具体细节。
2、样例描述 我们将作一个模块编程的例子,这个例子包括三个模块,缺省模块、registration模块和approval模块。缺省模块下有资源index.html,我们使用它来连接其它两个模块。registration模块和approval模块的编程类似,都包含一个index.jsp和一个结果jsp:result.jsp。下面是目录结构:
目录结构表明,struts的模块由配置文件、java类(这里者action和form类)和资源文件构成,另外各模块可以共享web.xml,message (这里是applicatonResources.properties)文件。
我们的例子的界面交互图可以表示如下:
缺省模块的index.html包括两个链接,分别连接两个模块的index.jsp资源,registration模块的index.jsp提交后,如果验证失败会重新返回到该模块的index.jsp,否则用资源resultok.jsp显示注册成功的结果。模块approval的index.jsp提交后进入到resultok.jsp的界面,显示批准与否的结果。
我们从应用程序的文件组成和交互两方面的模块情况对我们要实现的例子进行了比较清晰的组织,下面我们讲解如何在struts中实现模块化编程。