MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程

MVC/MyBatis+web-CRUD

MVC思想

目的:实现责任分离,把业务代码从视图中剥离出来

M: Model:模型对象(封装业务操作,算法,可重复使用,JavaBean).DAO Domain
V: View:视图(界面,JSP,HTML)
C: Controler:控制器(控制界面跳转,Servlet)

三层架构

就是把业务划分成:表现层、业务逻辑层、数据访问层。目的是为了“高内聚低耦合”的思想。

表现层(Predentation Layer):MVC,负责处理与界面交互的相关操作(Struts2/Spring MVC) JSP Servlet
业务层(Business Layer) :service,负责复杂的业务逻辑计算和判断(Spring) service
持久层(Persistent Layer) :ORM,负责将业务逻辑数据进行持久化存储(Hibernate/MyBatis) dao


项目实例的搭建

web-crud 流程(重点)

列表 显示所有员工的信息

获取数据库中的数据,显示到页面上。

执行list方法,调用业务方法,获取到员工列表数据,把列表数据用el表达式获取出来,用jstl循环标签显示到表格中

删除

删除指定的员工信息,并且回到列表界面。

执行delete方法,获取要删除的指定的id,调用业务方法删除指定id的员工信息。

添加

在点击添加按钮的时候,进入到编辑界面,当输入了数据之后,点击保存,在数据库中增加信息,并且回到列表界面.

点击添加按钮,执行input方法,直接使用请求转发,到input.jsp

在input.jsp中提交表单,执行saveOrUpdate方法,接受请求参数封装成Employee对象,调用业务方法保存Employee信息,重定向到/product

修改

在点击编辑按钮,进入到编辑界面,回显数据,点击保存,更新数据库,回到列表界面

执行input方法,根据是否传递了id值,来区分到底是编辑或者是新增,如果是编辑操作,查询出来指定的员工信息,并且显示到input.jsp中。

在input.jsp中提交表单,执行saveOrUpdate,根据是否提交了id参数来区分是编辑或者新增,使用隐藏域来提交id。

常见的错误演示

  1. 编码的处理一定要放在获取所有参数之前,不然无效.

  2. 出现数字格式化异常 : 把一个空字符串转化为Number 类型 --> 没有判空直接转化

    java.lang.NumberFormatException: null

  3. 当不需要做数据共享的时候,使用URL重定向做跳转,不使用请求转发。
    死循环执行添加操作–> 请求转发数据一直都在.

找问题的原则:

对于web应用,出现了数据错误问题,一定要第一时间定位到错误的位置.第一时间确定问题是出在前台界面,或者是后台数据库

  1. 在浏览器中打开F12,查看数据是否传递给了服务器,如果在请求中已经传递了数据,那么就可以不用看前台界面了.问题是后台的代码.

  2. 在servlet的service方法中,调用业务方法的地方打断点,确定到底是参数封装问题,还是调用业务的问题.这样可以将问题定位到是否是数据库问题.

    注:web应用是交给tomcat管理的,所以直接打断点,只要有请求过来,service就可以被断掉.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小云很优秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值