JAVAWeb - MVC三层架构 以及 Javabean
一:什么是MVC
Model:模型
view:视图
Controller:控制器
二:早些年的网页模型
早些年的网页模型只有两部风:一个是控制层Contrroller,还有View视图层
控制层的工作是:
- 1.接收用户的请求
- 2.响应给客户端内容
- 3.重定向或者转发
视图层的工作是:
- 1.展示数据给用户
- 2.提供一些按钮,供我们操作请求
这两层的工作实际上都需要数据库的支持,它们都有一些自己的方法可以拿到数据库的内容;
早期都是两个层都可以通过javaBean(pojo,entity)实例化类操作JDBC拿到数据库内容或操作数据库;
导致代码十分的臃肿,不利于维护,代码逻辑顺序很紊乱,复杂;
对于大量的数据操作这两层的实现功能太多了,为了减轻压力,衍生出了第三层:model 模型
三:现在的MVC框架
servlet:专注于处理请求,以及控制视图跳转 -- jsp:专注于显示数据
视图层:
- 展示数据模型
- 提供用户操作(发起请求:a , from,img...)
控制器:(servlet)
- 接收用户请求(req:请求信息,session信息)
- 交给业务层去处理(返回数据)
- 视图跳转
业务层(model):
- 为用户提供服务(业务处理):login ,logout,查询用户
- 操作数据库Dao(增,删,查,改):通过JDBC操作数据库
常见实例:(登录操作)
登录 ---》接收用户登录请求---》处理用户请求(获取用户的username,password)---》交给业务层处理登录业务(判断用户名,密码是否正确:事务)---》Dao查询用户密码,用户名是否正确---》数据库
四:JavaBean
实体类(实例化类)
Javabean有自己特定的写法:
- 必须要一个有无参构造
- 属性私有化
- 必须要私有化必须要有对应的get/set方法
一般用于和数据库的字段做映射 ORM
ORM:对象关系映射
- 表---》类
- 字段---》属性
- 行记录--》对象
id | name | age | address |
1 | 李白 | 20 | 王者大陆 |
2 | 孙悟空 | 21 | 五行山 |
3 | 东方曜 | 16 | 稷下学院 |
class People{ private int id; private String name; private int age; private String address; } claee A{ new people(1,"李白",20,"王者大陆"); }
表格中的数据都会在Java代码中有对应关系,都会有对应的字段
javabean在jsp中的用法:
javabean中的
- id表示类名--》也是数据库表名
- class---》文件所在位置
- scope---》作用域
其它标签对象:
- setProperty:建立对象的标签
- name:对象名
- property:对象的属性
- value:对象的值
- getProperty:取出对象的值
<jsp:useBean id="people" class="top.lostyou.jsp.people" scope="page"/> <jsp:setProperty name="people" property="id" value="1"/> <jsp:setProperty name="people" property="name" value="李白"/> <jsp:setProperty name="people" property="age" value="20"/> <jsp:setProperty name="people" property="address" value="王者大陆"/> <%--<%=people.getAdress()%>--%> id:<jsp:getProperty name="people" property="id"/> 姓名:<jsp:getProperty name="people" property="name"/> 年龄:<jsp:getProperty name="people" property="age"/> 地址:<jsp:getProperty name="people" property="address"/>
以上的jsp标签所表达的值,等同于以下的Java代码
people people = new people(); people.setId(1); people.setName("李白"); people.setAge(20); people.setAddress("王者大陆"); out.print(people.getId()); out.print(people.getName()); out.print(people.getAge()); out.print(people.getAddress());
Java代码通过对象的get/set方法拿值和建立值