在本篇博客中,我们将继续讲解 Servlet+JDBC 实战开发书店项目。这次我们将重点讲解如何实现登录和注册功能。
首先,我们需要在数据库中创建两个表,一个用于存储用户信息,另一个用于存储书籍信息。
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
author VARCHAR(100) NOT NULL,
price DECIMAL(8,2) NOT NULL
);
接下来,我们需要编写登录和注册页面的 HTML,让用户可以输入用户名和密码进行登录或注册操作。
login.html:
DOCTYPE html>
<html>
<head>
<title>Logintitle>
head>
<body>
<h2>Loginh2>
<form action="loginServlet" method="POST">
<label for="username">Username:label>
<input type="text" id="username" name="username" required><br><br>
<label for="password">Password:label>
<input type="password" id="password" name="password" required><br><br>
<input type="submit" value="Login">
form>
body>
html>
register.html:
DOCTYPE html>
<html>
<head>
<title>Registertitle>
head>
<body>
<h2>Registerh2>
<form action="registerServlet" method="POST">
<label for="username">Username:label>
<input type="text" id="username" name="username" required><br><br>
<label for="password">Password:label>
<input type="password" id="password" name="password" required><br><br>
<input type="submit" value="Register">
form>
body>
html>
然后,我们需要编写登录和注册的 Servlet,用于处理用户提交的表单数据,并将其保存到数据库中。
LoginServlet.java:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 进行用户名和密码的验证逻辑
// ...
// 假设验证逻辑通过,将用户信息保存到会话中
request.getSession().setAttribute("username", username);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Login Successful!");
}
}
RegisterServlet.java:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RegisterServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 进行用户名和密码的验证逻辑
// ...
// 假设验证逻辑通过,将用户信息保存到数据库中
// ...
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Registration Successful!");
}
}
好的,以下是一个简单的用户登录功能的Servlet示例代码:
package com.example.blog.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.example.blog.db.UserDatabase;
import com.example.blog.models.User;
public class LoginServlet extends HttpServlet {
private UserDatabase userDatabase;
@Override
public void init() throws ServletException {
// 初始化数据库
userDatabase = UserDatabase.getInstance();
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 检查用户名和密码是否正确
if (userDatabase.isValidUser(new User(username, password))) {
// 登录成功
request.getSession().setAttribute("username", username);
response.sendRedirect("home.jsp"); // 重定向到首页或其他需要登录后访问的页面
} else {
// 登录失败
response.sendRedirect("login.jsp?error=true"); // 重定向到登录页面,并传递错误参数
}
}
}
上述代码中,我们创建了一个名为LoginServlet
的Servlet类,它处理POST请求以接收用户登录信息。在doPost
方法中,我们从请求参数中获取用户名和密码,并使用UserDatabase
类的isValidUser
方法来检查用户名和密码是否正确。
如果用户名和密码匹配成功,我们将用户名保存在会话中,并通过sendRedirect
方法将用户重定向到首页或其他需要登录后访问的页面。如果登录失败,我们将用户重定向回登录页面,并传递一个错误参数以在页面上显示错误消息。
请注意,上述示例仅提供了一个基本的框架来处理用户登录请求,并未包含真正的数据库操作。你需要根据自己的数据库结构和操作方式进行适当的修改。另外,你还需要创建一个相应的登录页面(例如login.jsp
),用于接收用户输入用户名和密码的表单,并将表单提交到上述LoginServlet
中处理。
希望以上示例对你有所帮助!如有任何疑问,请随时提问。