1.目录结构图:
2.数据库
JDBCUtils -------- 工具类 :加载驱动 和 释放资源
LoginServlet ------- 登入界面
RegisterServlet -------注册界面
User ----------------------用户类
UserDAO ----------------工具类写了 注册 和 登入的两种方法
代码:
JDBCUtils 类:
package com.test;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
//JDBC工具类
public class JDBCUtils {
//1.1 获取对象
private static String url;
private static String user;
private static String password;
private static String driver;
static{
try {
url ="jdbc:mysql:///dbc?useUnicode=true&characterEncoding=utf8";
user = "root";
password = "123456";
driver = "com.mysql.cj.jdbc.Driver";
// 最新版本的加cj com.mysql.cj.jdbc.Driver 如果不是最新的版本用 com.mysql.jdbc.Driver ;
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
// COnnection conn = DriverManager.getConnection(url,user,password);
return DriverManager.getConnection(url,user,password);
}
public static void close(ResultSet rs,PreparedStatement stmt,Connection conn){
try{
if(rs != null){
rs.close();
}
}catch(SQLException e){
e.printStackTrace();
}
try{
if(stmt != null){
stmt.close();
}
}catch(SQLException e){
e.printStackTrace();
}
try{
if(conn != null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
public static void close(PreparedStatement stmt,Connection conn){
try{
if(stmt != null){
stmt.close();
}
}catch(SQLException e){
e.printStackTrace();
}
try{
if(conn != null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
USer类 :
package com.test;
//这个是连接库表 user 的封装
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserame() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserDAO 类:
package com.test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDAO {
//数据库连接对象
public User login(String username,String password) {
User user =null;
Connection conn =null;
PreparedStatement pstmt = null;
ResultSet resultSet = null;
//赋值
try {
conn=JDBCUtils.getConnection();
//静态sql语句
String sql = "select * from user where username=? and password=?"; // ?号是占位符
pstmt = (PreparedStatement) conn.prepareStatement(sql); //执行
pstmt.setString(1, username); //为sql语句中的第一个 ? 的值参数设置string的值username 从0开始算的
pstmt.setString(2, password); //为sql语句中的第二个 ? 的值参数设置string的值password 从0开始算的
resultSet = pstmt.executeQuery(); //查询
System.out.println(" resultSet " + resultSet );
if(resultSet.next()){
user=new User();
// String name = resultSet.getString("username"); //得到这个值,,,
// String pass = resultSet.getString("password");
// user.setUsername(name); //获取 进去
// user.setPassword(pass); //获取 进去 等于下面的语句
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
System.out.println("登录成功!");
}else{
System.out.println("用户名或者密码错误!");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.close( resultSet,pstmt,conn); //
}
return user ;
}
public void addUser(User user) { //添加的方法
Connection connection = null;
PreparedStatement psmt = null;
try {
connection = JDBCUtils.getConnection(); //连接数据库
String sql ="insert into user(id,username,password)values(?,?,?)"; //添加的语句
psmt = (PreparedStatement) connection.prepareStatement(sql);
//运用实体对象进行参数赋值
psmt.setInt(1, user.getId()); //拿到设置User的封装
psmt.setString(2,user.getUserame());
psmt.setString(3,user.getPassword());
int count = psmt.executeUpdate();
System.out.println("已经执行 "+count +" 语句");//统计执行的语句
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.close(psmt, connection); //关闭数据库
}
}
}
LoginServlet 类:
package com.test;
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;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username + " " + password );
UserDAO userDAO=new UserDAO(); //初始化
User user=userDAO.login(username, password);// 调用 userDAO的方法 里面的username 和 password 要与上面的一样
System.out.println("user的存在是 " + user);
if(user!=null){
request.getRequestDispatcher("loginSuccess.jsp").forward(request, response); // 成功 : 请求转发到loginSuccess.jsp
}else{
request.getRequestDispatcher("loginFailed.jsp").forward(request, response); // 失败 : 请求转发到 loginFailed.jsp
}
}
}
RegisterServlet 类
package com.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class RegisterServlet
*/
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public RegisterServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPut(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
int id=Integer.valueOf(request.getParameter("id"));
String username = request.getParameter("username");
String password = request.getParameter("password");
User user=new User();
user.setId(id); // 封装
user.setUsername(username); //获取不l 千万不要加 写成 “username” 用上面语句的
user.setPassword(password); //获取user的方法
UserDAO userDAO=new UserDAO();
userDAO.addUser(user); // UserDAO 工具
System.out.println("注册成功");
//request.getRequestDispatcher("login.jsp").forward(request, response);
PrintWriter out =response.getWriter();
out.println("注册成功。。。。");
}
}
WEB 资源 :
登入的jsp文件
注册的 Register.jsp 文件
需要的驱动包 :
要 :驱动包可以联系我哦
下面是一个查询表单的功能
JDBCUtils
//查询所有数据
public void query(User_info account) throws SQLException , ClassNotFoundException {
try{
conn = JDBCUser3.getconnection();
//定义语句
String sql = "select *from user_info;";
prepared = conn.prepareStatement(sql);
//执行语句
ResultSet rs = prepared.executeQuery();
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
String email = rs.getString("email");
String address = rs.getString("address");
System.out.println(id +" " + name +" "+ password +" "+email + " " + address );
}
}catch(ClassNotFoundException e){
System.out.println("查询 的 驱动加载异常。。");
e.printStackTrace();
}
}
Query 类
package com.test3;
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.sql.SQLException;
@WebServlet("/query")
public class Query extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
User_info account = new User_info();
UserDAO3 dao3 = new UserDAO3();
try {
dao3.query(account);
PrintWriter out =response.getWriter();
out.println("查询成功。。。。");
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
查询结果图