声明:本文大部分内容转载自青春奔梦 - 什么是Dao层、Entity层、Service层、Servlet层、Utils层。遵循 CC 4.0 BY-SA 版权协议,转载请附上该文出处链接和本声明
文中如果有错误,希望您能够严厉指出,非常感谢!
太长不看:
- VO: view object,一般用于和前端进行交互
- DAO
就是一个里面只有按条件获得指定数据的各种方法的增删改查类 - Entity 类是实体类,它就是一张“数据库表”,数据库的表里都有啥字段那它就有啥字段,且每个字段也都有get 和set 方法
- Service 就是业务逻辑层,就比如你上百度网盘时点登录,然后输账号密码上去之后一顿操作你就登上网盘了,这其中你输完密码点登录之后就是服务器在做事而不是你了,服务器做的事就叫业务逻辑
- Servlet 就是服务端。详细解释看廖雪峰的教程。最好从这章第一节看。
vo 是什么
VO: view object,表示的是前端页面的字段数据,vo 包下的类是用来转换前端的数据的,既用于将前端数据转换为对象,又用于将对象转为可返回给前端使用的数据。Dto 和它是一个东西,但通常较规范的项目一般会使用vo 而不是dto 来实现这些功能。
vo 类里的字段是跟前端的html 相对应的,在一些项目中,当前端要传值到后端或后端传值到前端时,就会需要这个东西。Dto 也是实现这个功能。
DAO 是什么
DAO(Date Access Object) 模型就是写一个类,把访问数据库的代码封装起来,DAO在数据库与业务逻辑(Service)之间。
Dao是数据访问层,Dao的作用是封装对数据库的访问:增删改查,而不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。
Entity 是什么
就是实体层,放置一个个实体,及其相应的set、get方法。如果想要对数据库进行一些操作(比如说读取)的话,就要先写entity层
怎么写entity层?
- 理解业务需求,分析需要从数据库中读取哪些字段;
- 根据这些字段写对应属性,写完后自动生成get、set方法。
package a.example;
public class ADBClass extends BaseEntity {
private Integer actorId;
public Integer getActorId() { return actorId; }
public void setActorId(Integer actorId) { this.actorId = actorId; }
}
Service 层是什么
Service 为业务逻辑层。即它只处理逻辑上的业务,不考虑具体实现
而service 层使用接口定义有以下几点好处:
- 在java 中接口是多继承的,而类是单继承的,如果你需要一个类实现多个service ,则可以用接口实现,用类定义一个service 就没那么灵活
- 要提供不同的数据库服务时,只需面对接口用不同的类实现即可。
public interface UserService {
UserinfoEntity login(String username, String password);
}
Servlet 层是什么?
Servlet(Server Applet) 是Java Servlet 的简称,是为小服务程序或服务连接器,用Java 编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容
Servlet 实现过程:
- 客户端发送请求至服务器端;
- 服务器将请求信息发送至Servlet
- Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求
- 服务器将响应返回给客户端
Servlet 可以完成这些任务:
- 动态生成HTML文档。
- 将请求转发给Servlet组件。
- 读取客户端的Cookie,以及向客户端写入Cookie。
- 访问服务器的资源,如数据库、 XML、文件对像等。
Servlet 的特点:
- Servlet 对象由Servlet 容器(Tomcat)创建
- Servlet 是一个接口:位于javax.servlet 包中。
- service 方法用于接收用户的请求并返回响应
- 用户访问时多次被执行(可以用于统计站点访问量)
Utils 层是什么?
Utils 层是一个多功能、基于工具的包。如字符串处理、日期处理,数据库连接的建立等等。它是通用的、与业务无关的,可以独立出来,供其他项目使用。
总结
- vo 一般表示传给后端或返回给前端页面的数据
- DAO 就是一个增删改查的类,里面只有按某个条件获得指定数据的各种方法。它夹在数据库和业务逻辑之间。
- Entity 类就是一张“数据库表”,数据库的表里都有啥字段那它就有啥字段,而每个字段也一定有get/set 方法
- Service 就是业务逻辑层,就比如你上百度网盘时点登录,然后输账号密码上去之后一顿操作你就登上网盘了,这其中你输完账号密码点完登录之后那就是服务器在做事情而不是你了,而服务器在做的事情就叫做业务逻辑,例如服务器得看看你输的账号密码对不对,对了才让你登上去网站。具体怎么看、怎么验证你密码输的对不对,那就是具体代码上的逻辑了。
项目中写业务逻辑一般会先写个interface 类,里面只写方法名,这是先把你设计好、打算要用到的方法先占个位,等会儿再创建个普通类实现这个interface 类。也就是说新建个登录类里面写怎么看你这个家伙交上来的账号密码对不对的逻辑。这样做的好处主要是如果你好多个地方都用了这个看账户密码的逻辑,而有天你突然想再整个指纹登录(但你以前这个账户密码登录这个你也想保留而不做任何修改),这时你就可以再新建个登录类实现那个基本的interface 类,只不过里面的逻辑是看你指纹对不对的,而不是之前那个了。
- Servlet 就是服务端。详细解释可以直接看廖雪峰的教程。最好从这章的第一节开始看。