第八周作业

一.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")
public class HeroListServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    List<?> heros = (List<?>) new HeroDAO().list();
        request.setAttribute("heros", heros);
        request.getRequestDispatcher("listHero.jsp").forward(request, 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层上,通过前端框架来显示处理或者更新后的视图,接受用户的输入,向控制层发送请求,调用对应控制器中的方法进行处理

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值