MVC是一种软件架构的思想,将一个软件系统划分成三种不同类型的模块,分别是模型(model),用于封装业务逻辑。视图(view),提供用户操作的接口(提供业务数据的展现,并且,用户也可以通过视图来提交请求)。控制器(controller),将视图与模型解耦,也就是说视图要向控制器发送请求,由控制器来决定调用哪一个模型来处理,反过来,模型处理之后的结果也交给控制器,由控制器来选择合适的视图来展现。
Model:使用java类来实现(也可以使用spring容器管理的javabean,ejb等)
View:使用jsp
Controller:使用servlet或者filter
优点:
1. model可以被多个view共享,model处理之后的结果可以使用不同的界面来展现,多种不同类型的界面,可以调用相同的model 来处理。
2. model可以当便测试(如,将业务逻辑写在了servlet力需要部署servlet然后才能测试)如果也业务逻辑写在一个java类当中,测可以立即测试
3. 方便分工合作
4. 方便代码的维护
缺点:
增加代码量(相应的开发周期要延长,并且,要相应增大了设计的难度)。所以,一般来说,对于需要良好的可维护性且项目规模比较大的项目可以用MVC 。
Struts2框架的工作流程图
Struts2框架的工作流程
1) 服务器启动,创建StrustsPrepareAndExecuteFilter对象,并解析struts.xml配置文件
2) 客户端发出action请求后,控制器会调用ActionMapper(Action映射器)完成请求与Action组件之间的映射,便于调用Action处理
3) 通过ActionMapper处理后,接着调用ActionProxy(Action代理)提取请求对应的配置文件信息,创建ActionInvocation(Action执行者)对象,ActionProxy通过ConfigurationManager(配置管理器)解析和获取struts的配置信息
4) 通过ActionInvocation完成拦截器、Action和Result组件的调用
5) 生成响应信息后,为客户端响应