王鹿其 发表于 2024-4-22 16:50:16

编写一个用户注册模块

register.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <title>User Registration</title>
</head>
<body>
<h2>User Registration Form</h2>
<form action="doRegister.jsp" 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>

    <label for="gender">Gender:</label>
    <select id="gender" name="gender" required>
      <option value="male">Male</option>
      <option value="female">Female</option>
      <option value="other">Other</option>
    </select><br><br>

    <input type="submit" value="Register">
</form>
</body>
</html>




doRegister.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter" %>
<%@ page import="java.io.FileWriter" %>
<%@ page import="java.io.BufferedReader" %>
<%@ page import="java.io.FileReader" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.util.logging.Logger" %>
<%@ page import="java.util.logging.Level" %>
<%@ page import="java.io.PrintWriter,java.io.FileWriter,java.io.BufferedReader,java.io.FileReader,java.io.IOException,java.util.logging.Logger,java.util.logging.Level" %>

<%
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    String gender = request.getParameter("gender");

    String userData = username + "," + password + "," + gender;
    String filePath = "D:\\user.txt";

    // Check if user already exists
    boolean userExists = false;
    try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
      String line;
      while ((line = reader.readLine()) != null) {
            String[] userDataArray = line.split(",");
            if (userDataArray.equals(username)) {
                userExists = true;
                break;
            }
      }
    } catch (IOException e) {
      Logger.getLogger("doRegister.jsp").log(Level.SEVERE, "Error occurred while reading user file", e);
      response.getWriter().println("<h3>Error occurred while reading user file.</h3>");
      return;
    }

    // If user does not exist, add user to file
    if (!userExists) {
      try (PrintWriter writer = new PrintWriter(new FileWriter(filePath, true))) {
            writer.println(userData);
            response.getWriter().println("<h3>Registration successful!</h3>");
      } catch (IOException e) {
            Logger.getLogger("doRegister.jsp").log(Level.SEVERE, "Error occurred while registering user", e);
            response.getWriter().println("<h3>Error occurred while registering user.</h3>");
      }
    } else {
      response.getWriter().println("<h3>User already exists. Please choose a different username.</h3>");
    }
%>
题目
编写一个用户注册模块,功能如下:
(1)设计用户注册表单页面register.jsp,包含:用户名(文本框)、密码(密码框)、性别(下拉框);
(2)设计用户注册数据保存页面doRegister.jsp,用以保存用户数据至user.txt文件。
user.txt中每行保存一个用户,格式为:“用户名,密码,性别”;
(3)如果user.txt已包含同名的用户,提示用户已存在;否则提示注册成功。


目前的问题是,注册过后,信息并不能保存在user.txt中,user.txt没有变化,导致再次以相同的用户名注册的时候,依然可以注册

FishC 发表于 2024-4-22 16:51:23

这个问题可能是因为在doRegister.jsp中没有将用户数据保存到user.txt文件中。以下是一个解决方案:

首先,假设你的register.jsp页面已经能够成功获取到用户输入的用户名、密码和性别。

在doRegister.jsp中,你需要使用Java的IO流来操作文件。具体步骤如下:

1. 首先,导入所需的类库:

<%@ page import="java.io.File" %>
<%@ page import="java.io.FileWriter" %>
<%@ page import="java.io.BufferedWriter" %>
<%@ page import="java.io.IOException" %>

2. 在doRegister.jsp中,添加以下代码来获取register.jsp页面传递过来的用户名、密码和性别的值:

String username = request.getParameter("username");
String password = request.getParameter("password");
String gender = request.getParameter("gender");

3. 然后,使用IO流将用户数据保存到user.txt文件中。你可以在文件末尾添加新用户信息。代码如下:

File file = new File("user.txt");
// 如果文件不存在,则创建新文件
if (!file.exists()) {
    file.createNewFile();
}

// 将用户数据写入文件
try (FileWriter fw = new FileWriter(file, true);
   BufferedWriter bw = new BufferedWriter(fw)) {
    bw.write(username + "," + password + "," + gender);
    bw.newLine();
}

4. 最后,你可以在doRegister.jsp中添加一些输出语句,以便在注册成功或者用户已存在时向用户显示相应的消息。例如:

out.println("注册成功!");

这样,在用户注册成功后,用户数据就会被保存到user.txt文件中。当你再次以相同的用户名进行注册时,由于文件中已经存在该用户名,你就可以根据需要给出相应的提示。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 编写一个用户注册模块