Servlet+JDBC实战开发书店项目讲解第四篇:登录实现

Servlet+JDBC 实战开发书店项目讲解第四篇:登录注册实现

在本篇博客中,我们将继续讲解 Servlet+JDBC 实战开发书店项目。这次我们将重点讲解如何实现登录和注册功能。

1. 创建数据库表

首先,我们需要在数据库中创建两个表,一个用于存储用户信息,另一个用于存储书籍信息。

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
);

2. 编写登录和注册页面

接下来,我们需要编写登录和注册页面的 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>

3. 编写登录和注册 Servlet

然后,我们需要编写登录和注册的 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!");
    }
}

4. Servlet开发

好的,以下是一个简单的用户登录功能的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中处理。

希望以上示例对你有所帮助!如有任何疑问,请随时提问。

你可能感兴趣的:(java,servlet)