说明
NOTE:文中所用到的jar包均在本博客”专业软件software”中可查找
所需工具:
软件类:
Mysql
SQLyog
IDEA
软件类:
Mysql
SQLyog
IDEA
JAR包类:
JSTL包
Bean包
JDBC包
用户类实现不一定是固定数据,且代码数量过多,故封装为类
创建用户类[User]
package Bean; import java.util.Date; public class User { private int id; private String username; private String password; private String email; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
创建用户信息类[UserDao]
package Dao; import Bean.User; import utils.JDBCUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; public class UserDao { // 添加用户的操作 public boolean insert(User user) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { // 获得数据的连接 conn = JDBCUtils.getConnection(); // 发送SQL语句 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String birthday = sdf.format(user.getBirthday()); String sql = " INSERT INTO users(NAME,PASSWORD,email,birthday) VALUES(?,?,?,?)"; // 获得Statement对象 stmt = conn.prepareStatement(sql); stmt.setString(1,user.getUsername()); stmt.setString(2,user.getPassword()); stmt.setString(3,user.getEmail()); stmt.setString(4,birthday); int num = stmt.executeUpdate(); if (num > 0) { return true; } return false; } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.release(rs, stmt, conn); } return false; } //查询所有,返回的是多条数据对应的bean对象 public List<User> getall(){ List<User> list=new ArrayList<>();//删除集合存储查询到的所有对象 Connection connection=null; PreparedStatement statement=null; ResultSet set=null; try { connection = JDBCUtils.getConnection();//连接数据库 String sql = "select * from users";//SQL语句 statement = connection.prepareStatement(sql);//获得preparedStatment对象 set = statement.executeQuery();//执行SQL语句 //操作结果集 while (set.next()) { //获得每条记录各个字段的值 int id = set.getInt("id"); String name = set.getString("name"); String password = set.getString("password"); String email = set.getString("email"); String birthday = set.getString("birthday"); //将各个字段的值封装进bean对象 User user = new User(); user.setId(id); user.setUsername(name); user.setPassword(password); user.setEmail(email); user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(birthday));//要把字符串birthday转换成Date //将user放入集合 list.add(user); } return list;//将集合返回给调用者 } catch (Exception e){ e.printStackTrace(); } finally { JDBCUtils.release(set,statement,connection); } return null;//如果发生异常,返回null } }
创建数据库工具类[JDBCUtil]
package utils; import java.sql.*; public class JDBCUtils{ //获得数据库连接 public static Connection getConnection() throws Exception{ Statement stmt=null; ResultSet rs=null; Connection conn=null; // 1. 注册数据库的驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.通过DriverManager获取数据库连接 String url = "jdbc:mysql://localhost:3306/jdbc"; String username = "root"; String password = "******"; conn = DriverManager.getConnection(url, username, password); return conn; } //释放资源 public static void release(ResultSet rs,Statement statement,Connection conn){ if(rs!=null){ try{ rs.close(); }catch(SQLException e){ e.printStackTrace(); } rs=null; } if(statement!=null){ try{ statement.close(); }catch(SQLException e){ e.printStackTrace(); } statement=null; } if(conn!=null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } conn=null; } } public static void release(Statement statement,Connection connection){ if(statement!=null){ try{ statement.close(); }catch(SQLException e){ e.printStackTrace(); } statement=null; } if(connection!=null){ try{ connection.close(); }catch(SQLException e){ e.printStackTrace(); } connection=null; } } }
注:每次需要使用数据库此三项必不可少
实现向数据库添加信息功能
创建添加用户所需的Servlet[AddServlet]
package Servlet; import Bean.User; import Dao.UserDao; 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 javax.xml.crypto.Data; import java.io.IOException; import java.io.PrintWriter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @WebServlet("/AddServlet") public class AddServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); PrintWriter out=response.getWriter(); //获取参数值 String name=request.getParameter("username"); String password=request.getParameter("password"); String email=request.getParameter("email"); String birthday=request.getParameter("birthday"); //数据封装成User-----bean对象 User user=new User(); user.setUsername(name); user.setPassword(password); user.setEmail(email); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd"); Date d= null; try{ d=format.parse(birthday); }catch (ParseException e){ e.printStackTrace(); } user.setBirthday(d);//需要将String类型的birthday转换成Date //添加进数据库 boolean f=new UserDao().insert(user); if (f){ out.print("添加成功!"); }else{ out.print("添加失败!"); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }
创建添加页面add.jsp
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2021/4/22 Time: 8:43 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/AddServlet" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> 邮箱:<input type="text" name="email"><br> 出生日期:<input type="date" name="birthday"><br> <input type="submit" value="提交"> </form> </body> </html>
实现查询数据库信息功能
创建查询用到的Servlet[QueryAllServlet]
package Servlet; import Bean.User; import Dao.UserDao; 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.io.PrintWriter; import java.util.List; @WebServlet("/QueryAllServlet") public class QueryAllServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); PrintWriter out=response.getWriter(); // -----分割线----- List<User> list=new UserDao().getall(); request.setAttribute("list",list); request.getRequestDispatcher("/queryall.jsp").forward(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }
创建查询页面[queryall.jsp]
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%-- Created by IntelliJ IDEA. User: Administrator Date: 2021/4/22 Time: 10:35 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/QueryAllServlet" method="post"> <input type="submit" value="查询所有数据"/> </form> <table border="1" width="600px" align="center"> <tr> <td>用户名</td> <td>邮箱</td> <td>生日</td> </tr> <c:forEach items="${list}" var="user"> <tr> <td>${user.username}</td> <td>${user.email}</td> <td>${user.birthday}</td> </tr> </c:forEach> </table> <%--测试项目:按ID去查询前三个--%> <%--<form action="/QueryAllServlet" method="post">--%> <%-- <input type="submit" value="查询前三数据"/>--%> <%--</form>--%> <%--<table border="1" width="600px" align="center">--%> <%-- <tr>--%> <%-- <td>用户名</td>--%> <%-- <td>邮箱</td>--%> <%-- <td>生日</td>--%> <%-- </tr>--%> <%-- <c:if test="${list.id>3}" var="pd">--%> <%-- <tr>--%> <%-- <td>${pd.username}</td>--%> <%-- <td>${pd.email}</td>--%> <%-- <td>${pd.birthday}</td>--%> <%-- </tr>--%> <%-- </c:if>--%> </table> </body> </html>