MVC
MVC: Model View Controller ----> 模型 视图 控制器
1. 早先年的架构
graph LR
id1[用户] --> id2[控制器:Controller <br> Servlet <br> 1.接受用户的请求 <br> 2.响应给客户端内容 <br> 3.重定向或者转发]
id1 --> id3[View:视图层 <br> JSP <br> 1.展示数据 <br> 2.提供可以供我们操作的请求]
id2 --> id4[JavaBean <br> ( pojo ) <br> ( entity )]
id3 --> id4
id5[Servlet和JSP都可以写Java代码 <br> 为了易于维护和使用,我们约定: <br> Servlet专注于处理请求,以及控制视图的跳转 <br> JSP专注于显示数据]
id4 --JDBC--> id6[数据库]
用户解访问控制层,控制层就可以直接操作数据库
Servlet -- CRUD --> 数据库
弊端:程序十分臃肿,不利于维护
Servlet的代码中:处理请求,响应,跳转请求,处理JDBC,处理业务代码,处理逻辑代码
架构:没有说明是加一层解决不了的!(例如:JDBC)
2. MVC三层架构
graph BT
id1[用户] --> id3[View:视图层 <br> JSP <br> 1.展示数据模型 <br> 2.提供用户操作]
id7 --select--> id4[Dao]
id2 --转发或者重定向--> id3
id3 --操作--> id2[控制器:Controller <br> Servlet <br> 1.接受用户的请求 <br> 2.交给业务层去做 <br> 3.视图跳转]
id5[Servlet和JSP都可以写Java代码 <br> 为了易于维护和使用,我们约定: <br> Servlet专注于处理请求,以及控制视图的跳转 <br> JSP专注于显示数据]
id4 --JDBC--> id6[数据库]
id2 --> id7[Service <br> ( login ) <br> ( logout ) <br> ( 查询全部用户 )]
id4 --> id7
id7 --> id2
id3 --返回给用户的页面中就会存在数据--> id1
subgraph Model:控制业务操作,保存数据,<br>修改数据,删除数据,查询数据
id4
id7
id8[JavaBean <br> ( pojo ) <br> ( entity )]
end
1. Model
-
业务处理:业务逻辑(Service)
-
数据持久层:CRUD(Dao)
2. View
- 展示数据
- 提供链接发起Servlet请求(a, form, img...)
3. Conroller(Servlet)
- 接收用户的请求(req:请求参数,session信息...)
- 交给业务层处理对应的代码
- 控制视图的跳转
4. 以登录举例
graph TD
id1[登录] --> id2[接收用户的登录请求]
id2 --> id3[处理用户的请求 (获取用户登录的参数:username,password)]
id3 --> id4[交给业务层处理登录业务(判断用户名密码是否正确:事务)]
id4 --> id5[Dao层查询用户名和密码是否正确]
id5 --> id6[数据库]