JDBC实践-连接数据库,并把数据展示出来

2017-12-06 00:24:52

接下来需要把展示页面中,静态数据变成从数据库中取得的动态数据
  • 相关的数据库代码为
CREATE DATABASE lession1 CHARACTER SET UTF8;
USE lession1;
CREATE TABLE `lession1`.`user` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `username` VARCHAR(32) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB; 

INSERT INTO `user` (`id`, `username`) VALUES
(NULL, 'user1'),
(NULL, 'user2'), 
(NULL, 'user3'), 
(NULL, 'user4'),
(NULL, 'user5'), 
(NULL, 'user6'),
(NULL, 'user7'),
(NULL, 'user8'),
(NULL, 'user9'),
(NULL, 'user10');
  • 这样一个最简单的数据库就建好了,那么现在我们需要设置是jdbc连接
  1. 建立相应的java bean文件
  2. 在根目录下建立com.ungly.bean包,在此包中创建User.java文件,具体内容为
package com.ungly.bean;

/**
 * 与用户表对应的实体类
 */

public class User {
    private String id; //主键
    private String username; //用户名

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}
  1. 改造ListServlet.java文件,内容变更为
package com.ungly.servlet;

import com.ungly.bean.User;

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.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 页面初始化控制
 */
@WebServlet(name = "ListServlet",urlPatterns = "/List")
public class ListServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/lession1", "root", "123456");
            String sql = "select id,username from user";
            PreparedStatement preparedStatement = conn.prepareStatement(sql);
            ResultSet resultSet = preparedStatement.executeQuery();
            List<User> userList = new ArrayList<>();
            while (resultSet.next())
            {
                User user = new User();
                userList.add(user);
                user.setId(resultSet.getString("id"));
                user.setUsername(resultSet.getString("username"));
            }
            request.setAttribute("userList",userList);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        request.getRequestDispatcher("/WEB-INF/jsp/front/list.jsp").forward(request,response);
    }
}
  1. 当然还是需要在web/WEB-INF/文件夹下引下lib文件夹,添加mysql的jdbc jar包,这样我们才可以正常的连接数据库,相关下载地址为
    下载地址
  2. 接下来就可以通过JSTL结合el标签来把数据展示出来了.相应的html代码如下:
<%--
  Created by IntelliJ IDEA.
  User: nosay
  Date: 17-12-5
  Time: 下午3:31
  To change this template use File | Settings | File Templates.
--%>
<%@ 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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>

<div class="container">
    <div class="row clearfix">
        <div class="col-md-12 column">
            <form role="form">
                <div class="form-group">
                    <label for="username">用户名</label><input class="form-control" id="username" type="username" />
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>
            <table class="table">
                <thead>
                <tr>
                    <th>编号</th>
                    <th>用户名</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                <c:forEach items="${userList}" var="user" varStatus="status">

                    <tr>
                        <td>${status.index +1}</td>
                        <td>${user.username}</td>
                        <td>编辑|删除</td>
                    </tr>

                </c:forEach>

                </tbody>
            </table>
        </div>
    </div>
</div>

</body>
</html>

运行结果如图