一.MVC设计模式原理概述
MVC架构模式可以将应用程序分为三个模块:Model、View、Controller。其中,Model通常用于与数据库交互,包括数据访问对象(DAO)和业务逻辑层(Service),而Controller负责接收和处理客户端请求,将请求发送到适当的Model和View组件,View采用JSP页面,用于呈现HTML页面,显示相应的数据。
Model层与数据库交互,使得数据库操作与应用程序逻辑分离,降低了耦合度。Controller层负责处理请求,不直接与数据库交互,可以通过修改Controller层的代码,更改请求的处理逻辑,而不会影响Model层和View层的代码。View层只负责显示数据,不包含任何业务逻辑,使得前端与后端的开发分离,这很好的融合了sevlet和jsp的优缺点,使代码的独立性更高,同时也更易于维护和拓展。本次的练习就是通过model层访问数据库,用sevlet充当控制器,采用JSP页面显示视图
同时,MVC架构模式的三个组件:Model、View、Controller,有些类似于数据库的三级模式:外模式、概念模式、内模式。外模式对应着用户看到的界面(View),概念模式对应着应用程序的数据模型(Model),而内模式则对应着数据库实际存储的数据结构。同时,MVC架构模式的两级映像:Controller与Model的交互和View与Model的交互,也有些类似于数据库的两级映像:外模式与概念模式的映像和概念模式与内模式的映像。
二.基于MVC模式的CRUD操作
Read(读取):
读取的操作比较easy,首先定义两个实体类Hero和HeroDAO,前者主要是作为一个抽象类,为后者做好方法和子类的覆写的铺垫,HeroDAO作为模型层,主要和数据库打交道,然后,在编写一个servlet容器和jsp页面,分别对应控制器和视图层,
首先Servlet作为控制器组件来接收请求。具体来说,其调用HeroDAO类的方法获取所有来自模型层上hero的数据,并将其保存在request对象中,然后将请求转发到listHero.jsp页面进行展示。servlet展示如下:
@WebServlet("/HeroListServlet") protected void service(HttpServletRequest request, HttpServletResponse response)
|
读取结果:
Create (新建),Update(更新),Delete(删除):
主要的操作的思路与上述基本一致,分别编写相关方法的类,通过add,delete,edit,update的方法,其中,用户在view层上发出edit请求时,会被重定向到editHero.jsp页面上,完成edit后,表单信息提交到update方法上处理,之后再重定向回到listHero.jsp上显示最新数据
这里面通过多个方法的重定向关系,处理后,会被再次重定向到listHero.jsp,显示处理后的视图,逻辑巧妙并且简单直接,效果展示:
需要注意的是,这里应用程序是通过XML配置文件来完成的,与读取时所采用的注解方式不同
总结一下CRUD的操作过程:
Model层上,定义一个父类Hero,通过HeroDAO对Hero的属性和操作方法进行覆写,与此同时,通过HeroDAO来访问数据库,建立连接,在这之后,通过控制器映射的请求对应到模型上,来完成对数据的更新等等
Controller层上,编写servlet方法类,接受来自视图层的请求,并通过类中的方法映射到Model上进行,之后跳转至JSP页面(视图层)上显示
View层上,通过前端框架来显示处理或者更新后的视图,接受用户的输入,向控制层发送请求,调用对应控制器中的方法进行处理