Struts2由S truts1、WebWork两个经典的MVC框架发展而来,是个优秀的MVC框架;与传统的Struts1相比,Struts2允许使用普通、传统的Java对象作为Aciton;Action的excute方法不再与Servlert API耦合,因而更易测试;支持更多视图技术;基于AOP思想的拦截机制,提供了极好的可扩展性;更强大、更易用的输入校验功能;整合的Ajax支持等
MVC思想将应用中各组件按功能进行分类,不同的组件使用不同技术充当,甚至推荐了严格分层,不同组件被严格限制在其层内,各层之间以松耦合的方式组织在一起,从而提供良好的封装
(1)、传统Model1和Model2
Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应。用少量的JavaBean来处理数据库连接、数据库访问等操作
Model2已经是基于MVC架构的设计模式。在Model2架构中,Servlet作为前端控制器,负责接受客户端发送的请求,在Servlet中只包含控制逻辑和简单的前端处理;然后,调用后端JavaBean来完成实际的逻辑处理;最后,转发到相应的JSP页面处理显示逻辑
(2)、MVC思想及其优势
MVC并不是Java语言所特有的设计思想,也并不是Web应用所特有的思想,他是所有面向对象程序设计语言都应遵守的规范
MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)、Controller(控制器)
在经典的MVC模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图,反之亦然。具体来说,每个模型对应一系列的视图列表,这种对应关系通常采用注册来完成,即:把多个视图注册到同一个模型,当模型发生改变时,模型向所有注册过的视图发送通知,接下来,视图从对应的模型中获得信息,然后完成视图显示的更新
MVC的特点:
1)、多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护
2)、模型返回的数据与显示逻辑分离。模型数据可应用任何显示技术(JSP、Velocity、Excel文档等)
3)、应用被分隔为三层,降低了各层间的耦合,提供了应用的可扩展性
4)、控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说是包含了用户请求权限的概念
5)、MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码