「这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战」。
前言
大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。复制代码
复制代码
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍开发web程序时的基本架构以及各层的作用和联系,希望初学者少走弯路。
复制代码
JavaWebApplication架构
1. 基本概念
在做web开发时,我们首先要确定就是技术选型以及架构设计,使用分层可以让我们更容易进行协同开发,提高工作效率。很多初学者虽然在搜索之后了解了各层的作用以及关系,但是真正到了使用的时候却不知道如何设计(俺也一样)。今天咱们就来聊一聊开发web应用分为哪些层,每一层又有什么作用,各层之间又有哪些联系。
首先来看下图:
上图就代表了基本分层,下面我们来解释一下各层的作用以及各层之间的联系。
- dto层:实体类层,其中存放的的是数据库中的一个个表(表的名称就是类名,表的字段就是属性,并且每个属性都有对应的set,get方法),也是我们应该最先创建的一层。
- dao层:数据持久层,用来操作dto,实际上封装了对dto的各种基本操作(增删查改等)。
- web层:web层下又分为servlet层(实际业务逻辑处理),filter层(过滤页面),listener层(监听)。
- service层:服务层,通过调用dao层的基本操作,组合为可以执行更为复杂的操作,供servlet层使用。
- utils层:存放需要使用的工具类。
2. 实际应用
知道了各层的作用和联系,下面我们就来通过实例加深印象。
【dto层】
public class User {
private long id;
private String name;
private String gender;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
复制代码
【dao层】
封装对dto中类的基本操作(CRUD等)。
我们一般会先定义接口,然后再定义实现类。
public interface UserDao {
/**
* 查询所有的用户信息
*
* @return 用户集合
*/
List<User> findAll();
/**
* 添加用户
*
* @param user
*/
void add(User user);
/**
* 删除用户
*
* @param id
*/
void delete(int id);
/**
* 根据id查找用户
*
* @param parseInt
*/
User findUserById(int parseInt);
/**
* 修改用户信息
*
* @param user
*/
void update(User user);
复制代码
接着我们根据具体的需求来写实现类即可。
一般我们会把实现类放到Impl包下。
【service层】
service层也是一样,我们一般会先定义接口再定义实现类。
public interface UserService {
/**
* 查询所有的用户信息
* @return 用户集合
*/
List<User> findAll();
/**
* 新增用户
* @param user
*/
void addUser(User user);
/**
* 删除用户
* @param id
*/
void deleteUser(String id);
/**
* 根据id查找用户
* @param id
* @return
*/
User findUserById(String id);
/**
* 修改用户信息
* @param user
*/
void updateUser(User user);
}
复制代码
然后根据需求编写实现类即可,同样我们会把实现类放到Impl包下。
是不是发现和dao层有点像,实际上就是对dao层的又一次封装,通过组合dao层的操作,提供更复杂的功能。
【web层】
web层下最重要的就是servlet,也就是我们的业务逻辑,根据需要设计filter和listener即可。
小结
以上就是关于web程序开发时各层的作用以及联系,希望能对读者有所帮助,如有不正之处,欢迎留言指正,只看不练还是容易忘记,如果还是不能理解,强烈建议自己跟着一个完成的程序敲一遍。觉好留赞哈。