一、建表

  1. create batabase test;
  2. create table user(
  3. id int,
  4. name varchar(20),
  5. pwd varchar(10)
  6. );
  7. insert into user (id,name,pwd) values(1,'张三','123123'),
  8. (2,'李四','123456'),(3,'艾鹏','121212');

二、导包

下载MySQL jar包, 可以上maven:https://mvnrepository.com/artifact/mysql/mysql-connector-java

注意与MySQL的版本一致

我的版本是8.0.22所以下载这个包
image-20201117190000809.png

点击即可下载

下载之后复制到lib目录下面
image-20201117190122082.png

o k !!!!!!!!!!!

三、加载驱动

  1. Class.forName("com.mysql.cj.jdbc.Driver");
  • 这里驱动一般是com.mysql.jdbc.Driver
  • 由于我的JAVA EE IDE 上面报了一个错误说版本原因让我使用这个包,所以根据情况更换

四、创建链接

  1. String url = "jdbc:mysql://localhost:3306/test?userSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
  2. String username = "root";
  3. String password = "Aa123456";
  4. Connection conn = DriverManager.getConnection(url,username,password);
  5. conn.createStatement();
  • url 表示要连接的数据库
  • username 数据库登录用户
  • password 对应用户的登录密码
  • 第四行连接数据库
  • 第五行创建一个数据库连接 链接对象是Statement对象
  • 这里面会抛出异常

实验七

目录
image-20201117191322553.png
image.png

7.1编写工具类

MysqlUtils.java 写的是一个工具类,用于生产数据库连接

  1. package com.qzw.utils;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import com.qzw.pojo.User;
  9. public class MysqlUtils {
  10. public Statement getStatement(){
  11. try {
  12. //加载驱动
  13. Class.forName("com.mysql.cj.jdbc.Driver");
  14. String url = "jdbc:mysql://localhost:3306/test?userSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
  15. String username = "root";
  16. String password = "Aa123456";
  17. //创建连接
  18. Connection conn = DriverManager.getConnection(url,username,password);
  19. return conn.createStatement();
  20. }catch (Exception e) {
  21. // TODO: handle exception
  22. System.out.println("Error1");
  23. return null;
  24. }
  25. }
  26. }
  • 这里url里面的test是我的数据库名字 密码,账号根据自己的设置填写

7.2 实体类

创建实体类, 根据数据库里面的数据类型创建实体类

  1. package com.qzw.pojo;
  2. public class User {
  3. private int id;
  4. private String name;
  5. private String password;
  6. public User() {
  7. super();
  8. // TODO Auto-generated constructor stub
  9. }
  10. public User(int id, String name, String password) {
  11. super();
  12. this.id = id;
  13. this.name = name;
  14. this.password = password;
  15. }
  16. public int getId() {
  17. return id;
  18. }
  19. public void setId(int id) {
  20. this.id = id;
  21. }
  22. public String getName() {
  23. return name;
  24. }
  25. public void setName(String name) {
  26. this.name = name;
  27. }
  28. public String getPassword() {
  29. return password;
  30. }
  31. public void setPassword(String password) {
  32. this.password = password;
  33. }
  34. @Override
  35. public String toString() {
  36. return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
  37. }
  38. }
  • 实体类只是数据类型 方法通过接口去实现

7.3 接口

  1. package com.qzw.dao;
  2. import java.util.List;
  3. import com.qzw.pojo.*;
  4. public interface UserDao {
  5. //获取用户列表
  6. List<User> getUser();
  7. //判断登录信息是否正确
  8. boolean ifLogin(String name, String pwd);
  9. }
  • 定义接口,由于只需要显示信息定义一个接口就可以

下面来实现接口

  1. package com.qzw.dao;
  2. import java.sql.ResultSet;
  3. import java.sql.Statement;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import com.qzw.pojo.*;
  7. import com.qzw.utils.MysqlUtils;
  8. public class UserDao1 implements UserDao {
  9. public List<User> getUser(){
  10. Statement str = null;
  11. List<User> list = new ArrayList<User>();
  12. //创建链表用来存贮查询返回的信息
  13. try {
  14. str = new MysqlUtils().getStatement();
  15. //使用工具类创建链接
  16. String sql = "select id,name,pwd from user";
  17. //编写sql语句
  18. ResultSet re = str.executeQuery(sql);
  19. //执行sql语句 结果在ResultSet结果集里面
  20. while(re.next()) {
  21. int id = re.getInt("id");
  22. String name = re.getString("name");
  23. String pwd = re.getString("pwd");
  24. User user = new User(id,name,pwd);
  25. list.add(user);
  26. //从结果集取出信息构造User数据类型装入链表里面
  27. }
  28. str.close(); //关闭连接
  29. re.close(); //关闭结果集
  30. } catch (Exception e) {
  31. // TODO: handle exception
  32. System.out.println("Error");
  33. }
  34. return list;
  35. }
  36. public boolean ifLogin(String name, String pwd) {
  37. Statement str = null;
  38. try {
  39. str = new MysqlUtils().getStatement();
  40. String sql = "select * from user where name = '" + name +"' and pwd = '" + pwd +"'";
  41. //String kString = "select * from user where name = '" + name +"' and pwd = '" + pwd +"'";
  42. // System.out.println(sql);
  43. ResultSet re = str.executeQuery(sql);
  44. if(re.next()) //判空
  45. return true;
  46. else
  47. return false;
  48. } catch (Exception e) {
  49. // TODO: handle exception
  50. System.out.println("Error");
  51. }
  52. return false; //没错就是对的
  53. }
  54. }

7.4登录页面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <%
  11. request.setCharacterEncoding("UTF-8");
  12. String error = (String)request.getAttribute("error");
  13. %>
  14. <form name="form1" method="post" action="show.jsp">
  15. <p>用户登录</p>
  16. <p>用户名 :
  17. <input name="username" type="text" id="username">
  18. </p>
  19. <p align="left"> 密码:
  20. <input name="password" type="password" id="password" value="">
  21. </p>
  22. <p align="left">
  23. <input type="submit" name="Submit" value="提交">
  24. <input type="reset" name="Submit2" value="重置">
  25. </p>
  26. <p><%=error==null?"":error %></p>
  27. </form>
  28. </body>
  29. </html>
  • 注意设置编码格式

7.5 展示页面

编写第二个登录页面

  1. <%@page import="java.util.List"%>
  2. <%@page import="com.qzw.dao.UserDao"%>
  3. <%@page import="com.qzw.dao.UserDao1"%>
  4. <%@page import="com.qzw.pojo.*"%>
  5. <%@ page language="java" contentType="text/html; charset=UTF-8"
  6. pageEncoding="UTF-8"%>
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <meta charset="UTF-8">
  11. <title>Insert title here</title>
  12. </head>
  13. <body>
  14. <%
  15. request.setCharacterEncoding("UTF-8");
  16. UserDao u = new UserDao1();
  17. String username = request.getParameter("username");
  18. String password = request.getParameter("password");
  19. //获取提交的值
  20. if(username.equals("") || password.equals("") || !u.ifLogin(username, password)){
  21. String error = "用户名或密码不正确!";
  22. request.setAttribute("error",error);
  23. request.getRequestDispatcher("login.jsp").forward(request,response);
  24. }
  25. List<User> list = u.getUser();
  26. //取出所有值
  27. %>
  28. <p>用户<%=username %></p>
  29. <table width="495" height="73" border="2" cellpadding="0" cellspacing="0">
  30. <tbody>
  31. <tr>
  32. <th scope="col">编号</th>
  33. <th scope="col">姓名</th>
  34. <th scope="col">密码</th>
  35. </tr>
  36. <%for(User user : list){ %>
  37. <tr>
  38. <td><%=user.getId() %></td>
  39. <td><%=user.getName() %></td>
  40. <td><%=user.getPassword() %></td>
  41. </tr>
  42. <%} %>
  43. </tbody>
  44. </table>
  45. </body>
  46. </html>