MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程【宁泊云】

MVC/MyBatis+web-CRUD

MVC思想

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

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

MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程【宁泊云】_第1张图片

三层架构

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

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

MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程【宁泊云】_第2张图片
项目实例的搭建
MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程【宁泊云】_第3张图片

web-crud 流程(重点)

列表 显示所有员工的信息

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

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

MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程【宁泊云】_第4张图片

删除

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

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

MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程【宁泊云】_第5张图片

添加

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

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

MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程【宁泊云】_第6张图片

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

MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程【宁泊云】_第7张图片

修改

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

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

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

MVC开发模式&三层架构_MyBatis+web的CRUD的实例流程【宁泊云】_第8张图片

常见的错误演示

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

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

    java.lang.NumberFormatException: null

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

找问题的原则:

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

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

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

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

你可能感兴趣的:(Java,笔记,知识点总结,Java,Web,MyBatis)