[SSM网上书店基础与实战]-04MVC架构

177 阅读4分钟

一、Servlet

JSP运行原理

image.png

Servlet的使用

建立类

建类时最好以XxxServlet结尾类名,继承HTTPServlet,重写doGetdoPost两个方法(包名一定不能大写)

image.png

image.png

image.png

配置Servlet

在web.xml中进行配置,配置在服务器的部分,网址需要加/,在浏览器/客户端的部分则不需要

image.png

image.png

访问测试

image.png

image.png

image.png 无报错且控制台输出信息,连接成功

传递参数

访问 image.png

servlet

image.png

点击跳转之后即可在控制台拿到前端输入的信息

image.png

image.png

获得内置对象

使用jsp内置对象即可在页面上输出信息

image.png

image.png

二、过滤器

过滤器是一个特殊的Servlet,用于过滤请求,在Spirng MVC对应的是拦截器

案例--字符编码过滤

建类,实现Filter接口,重写doFilter方法

image.png

在web.xml中进行配置

image.png

小结

在进行同一操作时,就可以选择使用过滤器来完成

三、MVC

概念

MVC是经典的分层开发架构

    常见的Struts,SpringMVC,SpringBoot等都是使用的MVC架构

其实学习Servlet就是为了实现最基本的MVC架构

M

    Model,模型

    公共类,工具类,实体类等,就是模型

    比如:MyBatis类,dao类,po类

V

    View,视图

    用于收集用户数据,和向用户展示数据的技术

    比如:html,js,vue,app客户端,jsp

C

    Controller,控制器

    得到用户数据,处理数据,进行调度,跳转等,处理业务逻辑

    比如:Servlet,Controller,Action

原则

让所有的童虎请求,都经过C(Controller)层(不经过就无法控制)

四、MVC架构表单CRUD

Create,生成,添加

Read,读取,查询

Update,更新,修改

Delete,删除

因为是一个小demo的形式,主要实现功能方面,在其他方面可能会有一点不规范。

数据表

image.png

实体类

po包下新建Course类,先将表的字段设计成对应的实体类。

在导入时,一张表对应一个类,表中的一行数据对应一个对象

image.png

自动生成getset方法

image.png

image.png

image.png

DAO

DataBase Access Object,数据库访问对象

image.png

具体方法内容的编写跟前两篇文章内容相同,或者也可见源码

Servlet

image.png

image.png

页面

image.png

image.png

先运行一下

image.png

接下来我们进行方法的编写

添加课程

image.png

courseAdd.jsp

image.png

image.png

CourseServlet.java中添加add方法的处理

image.png

image.png

image.png

再随便添加几条数据以供测试

修改课程

添加修改方法

image.png

CourseServlet.java中添加toupd方法跳转至courseUpd.jsp页面

image.png

courseUpd.jsp

image.png

编写upd方法,这里有一点要注意的是,跳转的页面value的值是已经根据要修改id的课程得到了,才可以修改

image.png

运行

image.png

image.png

image.png

image.png

删除课程

在删除信息之前要有一个提示信息,防止用户误触,这里选择使用js的方式

image.png

image.png

image.png

编写del方法,同时重新提交展示方法

image.png

C(6Y~@WW7B%UXW0~~58WB2W.png

image.png

image.png

搜索课程

CourseDao.java中添加关键字查询方法,这里要注意数据库的语句和预执行数据库语句时传参的方法

image.png

在jsp页面中添加搜索方法

image.png

CourseServlet.jsp中添加search方法

image.png

运行

image.png

分页查询

任何一个app/网站都离不开分页,牵扯到服务器客户端的运行效率问题

分页原理

有4个要素:

页码,第几页,pageNum【自定义,已知】

页大小,每页显示几行数据,pageSize【自定义,已知】

总行数,totalRows,【计算求出,select count(*)】

总页数,totalPage【计算求出】
totalRows/pageSize+(totalRows%pageSize==0?0:1)

某页的行数范围
(pageNum-1)*pageSize~(pageNum)*pageSize

image.png

CourseDao.java中添加分页查询的方法

先得到所有数据的行数

image.png

再编写将数据库的内容进行分页查询的方法

image.png

编写页面的角标部分,这里有个逻辑就是,当页号为第一页的时候,上一页的角标应该是无响应的,当页号为最后一页的时候下一页的角标应该是无响应的,因为数据有点少,还想做出来分页的效果,所以就用5行为一页进行分页

image.png

同时在跳转时传入页面号1

image.png

运行

image.png

image.png

写在最后

今天最后一部分用MVC架构的思想来处理单表的CRUD,基本已经囊括了在项目中可能用到的所有的方法,除了前端不美观之外,一个程序所拥有的,这个小项目也基本都拥有了。这篇博客从开始到结束也花了好久的时间,也为以后我自己回看留下一点痕迹。

网盘链接:链接: pan.baidu.com/s/1a7f7GOCf… 提取码: