让我来为你详细讲解“Java Web连接数据库实现简单登录注册功能的全过程”。
准备工作
在进行 Java Web 开发之前,需要安装以下软件:
- JDK(Java Development Kit)
- Eclipse(开发工具)
- MySQL(数据库管理系统)
- Apache Tomcat(Web服务器)
创建数据库
在 MySQL 中创建一个名为 user
的数据库,并创建名为 user_info
的表。其中,user_info
表包含以下字段:
id
- INT,主键,自动增加username
- VARCHAR,用户名,唯一password
- VARCHAR,密码
create database user;
use user;
create table user_info (
id INT NOT NULL AUTO_INCREMENT primary key,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(50) NOT NULL
);
创建 Java Web 项目
在 Eclipse 中创建一个新的 Dynamic Web Project,项目名为 LoginDemo
。
导入 JAR 包
下载 JDBC 驱动程序,将压缩包解压后得到的 mysql-connector-java-X.X.X.jar
文件拷贝到 WebContent/WEB-INF/lib
目录下,然后将其添加到 Eclipse 项目路径和 Build Path 中。
编写 HTML 页面
在 WebContent 目录下创建一个名为 index.html
的文件,用于登录或注册。其中,将登录和注册表单放在一个 HTML 文件中,根据表单提交方式不同在 form
标签中添加 action
属性来指定表单提交到不同的 Servlet。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login & Register Demo</title>
</head>
<body>
<h1>Login & Register Demo</h1>
<h2>Login</h2>
<form action="LoginServlet" method="post">
<label for="username">Username:</label>
<input type="text" name="username" id="username"><br>
<label for="password">Password:</label>
<input type="password" name="password" id="password"><br>
<input type="submit" value="Login">
</form>
<h2>Register</h2>
<form action="RegisterServlet" method="post">
<label for="username">Username:</label>
<input type="text" name="username" id="username"><br>
<label for="password">Password:</label>
<input type="password" name="password" id="password"><br>
<input type="submit" value="Register">
</form>
</body>
</html>
编写 Servlet
登录
在 src
目录下创建一个名为 LoginServlet.java
的 Servlet,用于验证用户提供的登录信息是否正确。
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 获取表单中提交的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 加载MySQL驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
String url = "jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=UTF-8";
String user = "root";//数据库用户名
String sqlpassword = "password";//数据库密码
conn = DriverManager.getConnection(url, user, sqlpassword);
// 创建PreparedStatement对象,设置SQL语句并执行
String sql = "SELECT * FROM user_info WHERE username=? AND password=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if(rs.next()) {
// 如果用户验证成功,则在session中记录该用户信息
request.getSession().setAttribute("username", username);
// 跳转到欢迎页面
response.sendRedirect("welcome.jsp");
}else {
// 用户验证失败,返回登录页面
out.print("<script>alert('用户名或密码错误,请重新登录!')</script>");
request.getRequestDispatcher("index.html").include(request, response);
}
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if(rs != null) rs.close();
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
注册
在 src
目录下创建一个名为 RegisterServlet.java
的 Servlet,用于注册新用户。
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 获取表单中提交的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 加载MySQL驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
String url = "jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=UTF-8";
String user = "root";//数据库用户名
String sqlpassword = "password";//数据库密码
conn = DriverManager.getConnection(url, user, sqlpassword);
// 创建PreparedStatement对象,设置SQL语句并执行
String sql = "INSERT INTO user_info (username, password) VALUES (?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
pstmt.executeUpdate();
// 注册成功,返回登录页面
out.println("<script>alert('注册成功!请登录。')</script>");
request.getRequestDispatcher("index.html").include(request, response);
}catch(Exception e) {
// 注册失败,返回注册页面
out.println("<script>alert('注册失败!')</script>");
request.getRequestDispatcher("index.html").include(request, response);
e.printStackTrace();
}finally {
try {
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
创建欢迎页面
在 WebContent 目录下创建一个名为 welcome.jsp
的文件,用于登录成功后的欢迎页面。在该页面中,获取用户的用户名并展示欢迎信息。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Welcome</title>
</head>
<body>
<h1>Welcome</h1>
<p>Hi <%=session.getAttribute("username")%>, welcome to our website!</p>
<p>Your account information:</p>
<ul>
<li>Username: <%=session.getAttribute("username")%></li>
<li>Password: *********</li>
</ul>
<a href="logout.jsp">Logout</a>
</body>
</html>
创建退出登录页面
在 WebContent 目录下创建一个名为 logout.jsp
的文件,用于退出登录。在该页面中,清除 session 中的用户信息,并跳转到登录页面。
<%
session.invalidate();//清除session
response.sendRedirect("index.html");
%>
部署与运行
将 LoginDemo
项目导出为 WAR 文件,然后将 WAR 文件上传到 Apache Tomcat 的 webapps
目录下,启动 Tomcat 服务器,访问 http://localhost:8080/LoginDemo/index.html
即可进行登录或注册。
示例代码:https://github.com/Learnerzyy/LoginDemo
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javaWeb连接数据库实现简单登陆注册功能的全过程 - Python技术站