综合案例
需求
使用三层架构开发,完成用户显示列表功能
需求分析
环境搭建
用户展示使用了layui框架的表格数据模块,在使用的时候需要引入layui的css和js
导入需要的jar包
前端页面
主界面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div align="center">
<a
href="/userServlet" style="text-decoration:none;font-size:33px;color: #1E9FFF">查询所有用户信息
</a>
</div>
</body>
</html>
用户信息显示界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
<!--引入LayUI的核心css文件-->
<link rel="stylesheet" href="./layui/css/layui.css">
<!--引入LayUI的核心JS文件-->
<script src="./layui/layui.js"></script>
<link rel="stylesheet" href="./css/mylayui.css">
<style type="text/css">
td, th {
text-align: center;
}
div{
width: 80%;
}
</style>
</head>
<body>
<div class="layui-fluid">
<table class="layui-table" lay-size="sm" lay-even >
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>籍贯</th>
<th>QQ</th>
<th>邮箱</th>
<th>操作</th>
</tr>
<c:forEach items="${users}" var="user" varStatus="v">
<tr>
<td>${v.count}</td>
<td>${user.name}</td>
<td>${user.gender}</td>
<td>${user.age}</td>
<td>${user.address}</td>
<td>${user.qq}</td>
<td>${user.email}</td>
<td><a class="layui-btn layui-btn-sm" href="">修改</a> <a class="layui-btn layui-btn-sm layui-btn-danger" href="">删除</a></td>
</tr>
</c:forEach>
<tr>
<td colspan="8" align="center"><a class="layui-btn layui-btn-normal" href="add.html">添加联系人</a></td>
</tr>
</table>
</div>
</body>
</html>
数据库配置文件
druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/web_day05
username=root
password=1234
initialSize=5
maxActive=10
maxWait=3000
连接数据库的工具类
JDBCUtils
package com.lifly.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @Describe
* @Author Double LiFly
* @date 2021/6/10 15:49
*/
public class JDBCUtils {
private static DataSource dataSource;
static {
try {
Properties properties = new Properties();
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
properties.load(is);
dataSource = DruidDataSourceFactory.createDataSource(properties);
}catch (IOException e){
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDataSource(){
return dataSource;
}
}
实体类
User
public class User {
private int id;
private String name;
private String gender;
private int age;
private String address;
private String qq;
private String email;
//省略了有参无参构造
//getter和setter方法
}
Dao层代码
UserDao
package com.lifly.dao;
import com.lifly.entity.User;
import com.lifly.utils.JDBCUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
/**
* @Describe
* @Author Double LiFly
* @date 2021/6/16 20:26
*/
public class UserDao {
private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
/**
* 查询所有用户信息
* @return
*/
public List<User> findAllUser(){
try {
String sql = "select * from user";
List<User> user = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
return user;
} catch (DataAccessException e) {
return null;
}
}
}
Service层代码
UserService
package com.lifly.service;
import com.lifly.dao.UserDao;
import com.lifly.entity.User;
import java.util.List;
/**
* @Describe
* @Author Double LiFly
* @date 2021/6/16 20:35
*/
public class UserService {
private UserDao userDao = new UserDao();
public List<User>findAllUser(){
List<User> user = userDao.findAllUser();
return user;
}
}
web层代码
UserServlet
package com.lifly.servlet;
import com.lifly.entity.User;
import com.lifly.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("/userServlet")
public class UserServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 处理post请求乱码问题
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
UserService userService = new UserService();
List<User> users = userService.findAllUser();
request.setAttribute("users",users);
request.getRequestDispatcher("/user_list.jsp").forward(request,response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
tomcat部署服务器
访问
http://localhost:8080
查询所有用户
总结
前端使用了layui的表格数据板块
jsp中的jstl核心库
后端使用了三层框架的开发模式,分层有力与程序的高内聚,低耦合
使用了druid数据库连接池
数据库使用了mysql数据库
使用了JDBCTemplate模板