📜  Servlet中的注册表单示例(1)

📅  最后修改于: 2023-12-03 15:20:06.602000             🧑  作者: Mango

Servlet中的注册表单示例

在Web开发中,注册表单是一个必不可少的功能,本文将介绍一个基本的Servlet注册表单示例,涉及到表单的验证、向数据库中插入数据等相关操作。

设计思路

本示例中,用户需要填写的信息有:用户名、密码、确认密码和邮箱地址。其中,用户名和密码的长度需要限制在6~16个字符之间,并且需要对密码和确认密码进行相同性检验。邮箱地址需要按照一定的格式进行验证。

在实现时,使用了JDBC连接MySQL数据库、JSP和Servlet,使得用户填写完表单后,数据能够顺利地被传输到数据库中。

代码实现
HTML部分

在index.jsp文件中,需要包含一个

元素,用于用户填写注册信息。代码片段如下:

<form action="register" method="post">
  <label for="username">Username:</label>
  <input type="text" name="username" id="username" required>
  <br><br>
  
  <label for="password">Password:</label>
  <input type="password" name="password" id="password" required>
  <br><br>
  
  <label for="confirm">Confirm Password:</label>
  <input type="password" name="confirm" id="confirm" required>
  <br><br>
  
  <label for="email">Email:</label>
  <input type="text" name="email" id="email" required>
  <br><br>
  
  <input type="submit" value="Submit">
</form>
Servlet部分

在RegisterServlet.java文件中,需要处理用户提交的表单数据,并完成相应的验证和数据库操作。以下是详细的代码:

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

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("/register")
public class RegisterServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 获取表单参数
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    String confirm = request.getParameter("confirm");
    String email = request.getParameter("email");
    
    //进行表单验证
    if (username.length() < 6 || username.length() > 16) {
        response.getWriter().println("Username length should be between 6 and 16 characters.");
        return;
    }
    if (password.length() < 6 || password.length() > 16) {
        response.getWriter().println("Password length should be between 6 and 16 characters.");
        return;
    }
    if (!password.equals(confirm)) {
        response.getWriter().println("Confirmation password does not match.");
        return;
    }
    if (!email.matches("\\w+@\\w+\\.\\w+")) {
        response.getWriter().println("Invalid email address.");
        return;
    }
    
    //插入数据到数据库
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test");
        PreparedStatement ps = con.prepareStatement("INSERT INTO user(username, password, email) VALUES (?, ?, ?)");
        ps.setString(1, username);
        ps.setString(2, password);
        ps.setString(3, email);
        ps.executeUpdate();
        response.sendRedirect("success.jsp");
    } catch (SQLException | ClassNotFoundException e) {
        e.printStackTrace();
    }
}
}
结果展示

当用户填写表单并提交后,如果验证通过,插入数据成功,用户将被重定向到success.jsp页面。

总结

本文介绍了一个基本的Servlet注册表单示例,涉及到表单验证和向数据库中插入数据等知识点。在实际开发中,还需要考虑安全性和可用性等方面的问题。