教学视频涉及到一些jsp页面代码,但由于jsp基本已被模板引擎所取代,所以本专栏没有jsp相关详解。
尽管如此,读者可自行选择学习使用jsp,因为模板引擎的使用跟jsp大同小异。
MVC设计模式
重点总结(初学者先看完下面再回头来看这个):
1:
MVC模式将web应用进行分层,实现功能上的部分解耦,提高开发效率,能够使初学者更加清晰的认识web。
2:
Model:数据的Javabean
Dao层:对数据的增删改查,面向数据库
Service:对业务的数据操作,如注册、登录、查找
servlet:通过操纵service与浏览器进行交互
3:
以本节实验(登录注册)为例,博主习惯按以下方式进行设计:
- 考虑所需model,需要一个用户User,包含username,password等信息。
- 登录注册涉及到user的“按用户名和密码进行比对”,“按所输入信息增加用户”,因此Dao层包含
- “按用户名和密码进行查找”
- “按用户名、密码等信息进行插入”
- 所需功能为“登录”“注册”,因此编写登录Service和注册Service
- 编写处理登录的servlet
1. 软件的MVC设计
1.1 软件开发模式
- C/S:客户端 / 服务器 (胖客户端)
- 大部分处理在客户端执行,服务器压力很小,对客户端要求很高
- B/S:浏览器 / 服务器 (瘦客户端)
- 客户端(浏览器)只做用户界面交互显示和部分数据处理,服务端做业务逻辑和数据处理,对客户端要求很低
随着大前端的潮流,逐渐向胖客户端发展(前端逐渐担任更多的任务)
1.2 JavaBean概念
Bean,豆荚,外层包裹着一粒粒豆子。
这些豆子就形象的比喻着数据字段,通过一层“外衣”包装着数据。
一般包含:
- 一个无参构造
- 私有属性
- 公共的getter和setter方法
1.3 MVC设计
M:model模型(Javabean)
V:View视图(页面)
C:Controller控制器(Servlet)
model封装数据
view展示渲染页面
controller进行交互
1.4 分层思想(重要)
Web层(表示层)
Servlet层(业务层)
Dao层(数据层)
2. 实验:登录注册
1.数据层Dao
- (1)数据库准备
- (2)model准备
- (3)Dao准备对应model的CRUD(增删改查)接口及其实现
2.业务层Service
- (1)准备需要使用model CRUD的业务的接口及其实现(比如登录注册业务,用到model的CR)
3.表示层Web
- (1)写好主页(包含登录、注册链接)
- (2)写好登录、注册、登录成功、注册成功页面
4.控制层servlet
- (1)Servlet从页面获取表单数据,映射为model,然后调用model的注册/登录业务,根据调用结果进行页面跳转
2.1 项目准备
2.1.1 数据库和表
CREATE DATABASE test
CREATE TABLE t_user(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50),
email VARCHAR(50),
birthday DATE
)
INSERT INTO t_user(username,password,email,birthday)
VALUES('admin','123','admin@qq.com','1999-09-11');
INSERT INTO t_user(username,password,email,birthday)
VALUES('sxuer','123','sxuer@qq.com','1999-09-11');
2.1.2 导入所需包
- commos-beanutils
- commons-logging
- mysql-connector-java-x.x.x-bin
版本自行选择,可在maven仓库下载
2.2 项目结构
- dao 接口
- dao.impl 接口实现
- model 模型类
- service 业务接口
- serviceimpl 业务接口实现
- utils 工具类
- servlet 控制器
为什么dao和service需要接口和接口实现?
方便复用、方便拓展。
2.3 编写页面
登录、注册按钮通过href跳转到对应页面
注册、登录表单提交到对应servlet
2.4 model
model
2.5 Dao
Dao接口
Dao实现
2.6 Service
Service接口
Service实现
2.7 注册Servlet
2.8 登录Servlet
main.jsp