在我之前的博客中我曾写过目录结构的创建,大家可以先看一下
一、目录结构
二、MySQL
三、代码实现
1.StudentDao
package com.gok.dao;
import com.gok.entity.Student;
import com.gok.util.DBUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
* @description:student 的持久化操作
* @author: Lenovo
* @date: Created in 2020/12/21 14:53
* @version:
* @modified By:
*/
public class StudentDao {
//连接数据库的对象
private Connection conn;
//会话对象
private Statement stmt;
//预编译会话对象
private PreparedStatement pstmt;
//结果集
private ResultSet rs;
public Student login(String username, String password) {
try {
//准备Sql语句
String sql = "select id,age,name from student where username ='" + username + "' and password='" + password + "'";
//获取数据库连接
conn = DBUtils.getConn();
//创建会话以执行sql
stmt = conn.createStatement();
//执行sql语句
rs = stmt.executeQuery(sql);
if (rs.next()) {
return new Student(rs.getInt(1), rs.getString(3), rs.getInt(2), username, password);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
System.out.println("stmt error");
return null;
} finally {
DBUtils.close(stmt, pstmt, rs);
}
return null;
}
public List <Student> listAll() {
try {
// 准备sql语句
String sql = "select id,name,age,username from student ";
// 获取数据库连接
conn = DBUtils.getConn();
// 创建会话以执行sql
stmt = conn.createStatement();
// 执行sql语句
rs = stmt.executeQuery(sql);
List <Student> list =new ArrayList<Student>();
while (rs.next()) {
list.add(new Student(rs.getInt(1),rs.getString(2),rs.getInt(3),rs.getString(4),null));
}
return list;
} catch (SQLException throwables) {
throwables.printStackTrace();
System.out.println("stmt error");
return null;
} finally {
DBUtils.close(stmt, pstmt, rs);
}
}
public static void main(String[] args){
Student s = new StudentDao().login("","");
System.out.println(s);
}
}
2.Student
package com.gok.entity;
/**
* @description:表student的实体类
* @author: Lenovo
* @date: Created in 2020/12/21 14:55
* @version:
* @modified By:
*/
public class Student {
private Integer id;
private String name;
private Integer age;
private String username;
private String pwd;
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", username='" + username + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Student(Integer id, String name, Integer age, String username, String pwd) {
this.id = id;
this.name = name;
this.age = age;
this.username = username;
this.pwd = pwd;
}
public Student() {
}
}
3.LoginServlet
package com.gok.servlet;
import com.alibaba.fastjson.JSONObject;
import com.gok.dao.StudentDao;
import com.gok.entity.Student;
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.HashMap;
import java.util.List;
import java.util.Map;
/**
* @description:
* @author: Lenovo
* @date: Created in 2020/12/21 14:55
* @version:
* @modified By:
*/
@WebServlet(value = "/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
StudentDao studentDao = new StudentDao();
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
Student student = studentDao.login(username, pwd);
List <Student> list = studentDao.listAll();
//Map<String, Object> result = new HashMap<String, Object>();
if (student != null){
// result.put("code","200");
// result.put("msg","login success");
// result.put("data",student);
req.setAttribute("student" ,student);
req.setAttribute("students",list);
req.getRequestDispatcher("/myweb.jsp").forward(req,resp);
}else {
//result.put("code","700");
//result.put("msg","login failed");
req.setAttribute("failed","username or password error");
req.getRequestDispatcher("/login.jsp").forward(req,resp);
}
// resp.getWriter().write(JSONObject.toJSONString(result));
}
}
4.DBUtils
package com.gok.util;
import java.awt.*;
import java.sql.*;
/**
* @description:连接数据库的工作类
* @author: Lenovo
* @date: Created in 2020/12/21 10:58
* @version:
* @modified By:
*/
//打开连接
public class DBUtils {
private static Connection conn;
public static Connection getConn(){
try {
//连接的用户名
String username = "root";
//链接的密码
String pwd = "123321";//自己mysql的密码
//利用驱动链接数据库
String driver = "com.mysql.cj.jdbc.Driver";
//数据库的具体驱动,并带上属性参数
String url = "jdbc:mysql://127.0.0.1:3306/login?characterEncoding=utf8&serverTimezone=GMT&useSSL=false";
//加载驱动
Class.forName(driver);
conn = DriverManager.getConnection(url, username, pwd);
return conn;
}catch (ClassNotFoundException e){
e.printStackTrace();
System.out.println("driver error");
}catch(SQLException throwables){
throwables.printStackTrace();
System.out.println("url error");
}
return null;
}
//关闭连接
public static void close(Statement stmt, PreparedStatement pstmt, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch(SQLException throwables){
throwables.printStackTrace();
}
}
public static void main(String[] args){
System.out.println(getConn());
}
}
5.登录页面–login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<body>
<form action="/login" method="get">
<p>
<label for="username">username:</label>
<input type="text" id="username" autocomplete="off" name="username">
</p>
<p>
<label for="password">password:</label>
<input type="text" id="password" name="pwd">
</p>
<p>
<input type="submit" value="login">
<em>${requestScope.student}</em>
</p>
</form>
</body>
</head>
</html>
css大家可以设计自己喜爱的
四、tomcat配置
下次博客会细化MySQL的使用过程