大家好,又见面了,我是你们的朋友全栈君。
目录
MVC 三层架构
- 三层架构即改造了 MVC 以后的架构,也就是 MVC 架构的升级版,MVC 基本结构详见:MVC 模式简介。
1. 分层简介
- 通常意义上的三层架构就是将整个业务应用划分为:表示(现)层、业务逻辑层、数据访问层。区分层次是为了贯彻 高内聚低耦合 的思想。
- 表示(现)层:又称为 Web 层,与浏览器进行数据交互(控制器和视图)。
- 业务逻辑层:又称为 Service 层,处理业务数据(如 if 判断,for 循环等)。
- 数据访问(持久)层:又称为 DAO 层(Data Access Object),与数据库进行交互的(每一条(行)记录与 JavaBean 实体对应)。
2. 包目录结构
- com.company:基本包(公司域名要倒写);
- com.company.dao:持久层;
- com.company.service:业务层;
- com.company.web:表示层;
- com.company.domain:实体类(JavaBean);
- com.company.util:工具类。
3. 数据访问层
- 数据访问(持久)层(DAO 层):操作 domain 中的 JavaBean 和数据库;
- 常用 JavaBean(都存于 domain 中):
- PO:Persistent Object 持久对象;
- POJO:Plain Ordinary Java Object,无规则简单 Java 对象;
- BO:Business Object 业务对象;
- VO:Value Object,值对象 / View Object,表现层对象;
- DTO(TO):Data Transfer Object,数据传输对象;
- DAO:Data Access Object,数据访问对象。
4. 流程图
5. 综合案例:用户信息列表展示
a. 主要需求
- 使用 MVC 模式升级版(三层架构)开发代码,完成用户显示列表功能。
b. 需求分析
- 见上文流程图中的案例。
c. 环境搭建
i. 创建 web 项目
ii. 导入第三方依赖 Jar 包(JSTL)
iii. 创建三层包目录结构
d. 代码实现
i. index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>${NAME}</title>
</head>
<body>
<h3><a href="${pageContext.request.contextPath}/FindAllServlet">用户列表查询</a></h3>
</body>
</html>
ii. User 实体类(domain)
package com.company.up.domain;
public class User {
private String id;
private String name;
private String sex;
private Integer age;
private String address;
private String qq;
private String email;
public User() {
}
public User(String id, String name, String sex, Integer age, String address, String qq, String email) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
this.address = address;
this.qq = qq;
this.email = email;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
iii. FindAllServlet(web)
package com.company.up.web;
import com.company.up.domain.User;
import com.company.up.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/FindAllServlet")
public class FindAllServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.调用service查询
UserService userService = new UserService();
List<User> list = userService.findAll();
// 2.将list存储request域
request.setAttribute("list", list);
// 3.转发list.jsp
request.getRequestDispatcher("/list.jsp").forward(request, response);
}
}
iv. UserService(service)
package com.company.up.service;
import com.company.up.dao.UserDao;
import com.company.up.domain.User;
import java.util.List;
public class UserService {
public List<User> findAll() {
// 调用dao,查询
UserDao userDao = new UserDao();
List<User> list = userDao.findAll();
return list;
}
}
v. UserDao(dao)
- 不包含处理数据库,所以只存测试数据。
package com.company.up.dao;
import com.company.up.domain.User;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
private static List<User> list = new ArrayList<>();
static {
list.add(new User("1", "Regino", "男", 18, "香港", "123456", "123456@qq.com"));
list.add(new User("2", "Reggie", "男", 19, "扬州", "123436", "123436@qq.com"));
list.add(new User("3", "Regina", "女", 20, "北京", "223456", "223456@qq.com"));
list.add(new User("4", "Reginald", "男", 21, "日本", "423456", "423456@qq.com"));
}
public List<User> findAll() {
return list;
}
}
vi. list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>list.jsp</title>
</head>
<body>
<%--<c:forEach items="${list}" var="user">
${user} <br>
</c:forEach>--%>
<table border="1" cellpadding="0" cellspacing="0" width="500px" align="center">
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>地址</th>
<th>QQ</th>
<th>邮箱</th>
</tr>
<c:forEach items="${list}" var="user">
<tr align="center">
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.sex}</td>
<td>${user.age}</td>
<td>${user.address}</td>
<td>${user.qq}</td>
<td>${user.email}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
e. 测试
- 启动 Tomcat,页面显示:
- 点击链接:
原文链接:https://qwert.blog.csdn.net/article/details/105698011
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153068.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...