常见包名的含义:
基本思想就是把程序界面和业务逻辑分离开来,方便开发、测试以及后期为维护,增强各模块间的独立性,避免牵一发而动全身:
Servlet+JSP(Javaweb)中MVC的分工:
其中,Model(模型)层又可以分为DAO(Data Access Object 数据访问对象)层与service业务层,DAO层负责将数据库访问代码封闭,而业务层负责封装业务逻辑,处理数据,实现用户需求,最为核心:
Javaweb架构的历史沿革:
①JSP Model1第一代
JSP Model1是JavaWeb早期的模型,它适合小型Web项目,开发成本低!Model1第一代时期,服务器端只有JSP页面,所有的操作都在JSP页面中,连访问数据库的API也在JSP页面中完成。也就是说,所有的东西都耦合在一起,对后期的维护和扩展极为不利。
②JSP Model1第二代
JSP Model1第二代有所改进,把业务逻辑的内容放到了JavaBean中,而JSP页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,但还让JSP做了过多的工作,JSP中把视图工作和请求调度(控制器)的工作耦合在一起了。
③JSP Model2
JSP Model2模式已经可以清晰的看到MVC完整的结构了。
·JSP:视图层,用来与用户打交道。负责接收用来的数据,以及显示数据给用户;
·Servlet:控制层,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;
JavaBean:模型层,完成具体的业务工作,例如:开启、转账等。
SSH框架中:
Struts位于web层,Spring位于service层,Hibernate位于dao层 。
Struts、Spring、Hibernate在各层的作用:
Struts负责Web层:ActionFormBean接收网页中表单提交的数据,然后通过Action进行处理,再Forward到对应的网页。在Struts-config.xml中定义<action-mapping>,ActionServlet会加载。
Spring负责业务层管理,即Service(或Manager)。
Service为action提供统计的调用接口,封装持久层的DAO; 可以写一些自己的业务方法; 统一的Javabean管理方法; 声明式事务管理; 集成Hibernate。
Hibernate,负责持久化层,完成对数据库的crud操作。提供OR/Mapping。它由一组.hbm.xml文件和POJO,是跟数据库中的表相对应的。然后定义DAO,这些是跟数据库打交道的类,它们会使用PO。
使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决BS应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。
MVC架构与三层架构的对应关系:
三层架构中的UI对应MVC中的view(jsp),都是用于显示以及获取界面的数据;三层架构中的BLL层和DAL层对应MVC中的Model(javabean)层都是用于处理上层传递来的数据以及从数据库获取的数据的;MVC中的Controller(Servlet)最多算是三层架构中的UI的一部分,也就我们常说的是Servlet。