JavaWeb阶段(JSP+JavaBean+Servlet用户展示小案例)

综合案例

需求

使用三层架构开发,完成用户显示列表功能

需求分析

在这里插入图片描述

环境搭建

在这里插入图片描述

用户展示使用了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>&nbsp;<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模板

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

double_lifly

点喜欢就是最好的打赏!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值