为什么名字不能重复呢? 2025-04-24 19:40 采纳率: 0%
浏览 7
已结题

servlet与JDBC问题

package nuc.edu.zhuce;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

// 定义一个名为RegServlet的类,继承自HttpServlet,用于处理用户注册请求
public class RegServlet extends HttpServlet {
    // 重写doGet方法,用于处理HTTP GET请求
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
    // 重写doPost方法,用于处理HTTP POST请求
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置响应内容类型
        resp.setContentType("text/html;charset=UTF-8");

        // 从请求中获取用户提交的参数,并创建一个新的User对象
        User user = new User(
                req.getParameter("userid"),    // 获取用户ID参数
                req.getParameter("uname"),     // 获取用户名参数
                req.getParameter("upassword"), // 获取用户密码参数
                req.getParameter("usex"),      // 获取用户性别参数
                req.getParameter("uemail"),    // 获取用户邮箱参数
                req.getParameter("userdate")   // 获取用户日期参数
        );

        // 创建UserDAO对象,用于与数据库交互
        UserDAO userDAO = new UserDAO();
        // 调用UserDAO的registerUser方法尝试注册用户,返回注册结果
        boolean isRegistered = userDAO.registerUser(user);

        // 根据注册结果进行页面跳转
        if (isRegistered) {
            // 如果注册成功,重定向到成功页面
            resp.sendRedirect("/Suc.html");
        } else {
            // 如果注册失败,重定向到失败页面
            resp.sendRedirect("/Fal.html");
        }
    }
}

```java
package nuc.edu.zhuce;

public class User {
    private String userid;
    private String uname;
    private String upassword;
    private String usex;
    private String uemail;
    private String userdate;

    public User(String userid, String uname, String upassword, String usex, String uemail, String userdate) {
        this.userid = userid;
        this.uname = uname;
        this.upassword = upassword;
        this.usex = usex;
        this.uemail = uemail;
        this.userdate = userdate;
    }

    public String getUserid() {
        return userid;
    }

    public String getUname() {
        return uname;
    }

    public String getUpassword() {
        return upassword;
    }

    public String getUsex() {
        return usex;
    }

    public String getUemail() {
        return uemail;
    }

    public String getUserdate() {
        return userdate;
    }
}


```java

package nuc.edu.zhuce;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class UserDAO {

    private static final String URL = "jdbc:mysql://localhost:3306/db_news2025?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC";
    private static final String USER = "root";
    private static final String PASSWORD = "root";

    public boolean registerUser(User user) {
        Connection conn = null;
        PreparedStatement pst = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        try {
            // Load MySQL driver
            Class.forName("com.mysql.cj.jdbc.Driver");

            // Get database connection
            conn = DriverManager.getConnection(URL, USER, PASSWORD);

            // Prepare SQL statement
            String sql = "INSERT INTO t_user (userid, uname, upassword, usex, uemail, userdate) VALUES (?, ?, ?, ?, ?, ?)";
            pst = conn.prepareStatement(sql);
            pst.setString(1, user.getUserid());
            pst.setString(2, user.getUname());
            pst.setString(3, user.getUpassword());
            pst.setString(4, user.getUsex());
            pst.setString(5, user.getUemail());

            try {
                String date = sdf.format(sdf.parse(user.getUserdate()));
                pst.setString(6, date);
            } catch (Exception e) {
                System.out.println("日期格式解析错误:" + e.getMessage());
                return false;
            }

            // Execute SQL statement
            int res = pst.executeUpdate();

            // Handle result set
            return res == 1;
        } catch (ClassNotFoundException | SQLException e) {
            System.out.println("异常:" + e.getMessage());
            e.printStackTrace();
            return false;
        } finally {
            // Close resources
            try {
                if (pst != null) pst.close();
                if (conn != null) conn.close();
            } catch (SQLException e) {
                System.out.println("关闭资源失败:" + e.getMessage());
                e.printStackTrace();
            }
        }
    }
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>注册页面</title>
    <style>
        body {
            text-align: center;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: flex-start;
            height: 100vh;
        }

        .A2 {
            text-align: left;
            width: 50%;
            margin: 20px auto;
            padding: 20px;
            box-sizing: border-box;
        }

        table {
            width: 100%;
        }
    </style>
</head>
<body>
<div>
    <h1>注册操作</h1>
    <!-- 修改表单的action为 "/reg",与Java代码中的@WebServlet("/reg")一致 -->
    <form class="A2" action="/proj_0234huopengzhao_exp3_war_exploded/reg" method="post">
        <table border="1">
            <tr>
                <td colspan="2">
                    <p>用户注册</p>
                </td>
            </tr>
            <tr>
                <td style="height: 50px;">
                    <p>用户ID:</p>
                </td>
                <td>
                    <input type="text" name="userid"/> <!-- 修改name为userid -->
                </td>
            </tr>
            <tr>
                <td>
                    <p>用户名</p>
                </td>
                <td>
                    <input type="text" name="uname"/> <!-- 修改name为uname -->
                </td>
            </tr>
            <tr>
                <td>
                    <p>性别:</p>
                </td>
                <td>
                    <input type="radio" name="usex" value="male" checked><input type="radio" name="usex" value="female"></td>
            </tr>
            <tr>
                <td>E-mail</td>
                <td>
                    <input type="email" name="uemail"/> <!-- 修改name为uemail -->
                </td>
            </tr>
            <tr>
                <td>
                    登录密码:
                </td>
                <td>
                    <input type="password" name="upassword"/> <!-- 修改name为upassword -->
                </td>
            </tr>
            <tr>
                <td>
                    注册日期:
                </td>
                <td>
                    <input type="date" name="userdate"/> <!-- 添加name为userdate -->
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <input type="submit" value="提交">
                </td>
            </tr>
        </table>
    </form>
</div>
</body>
</html>

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">
<servlet>
    <servlet-name>RegServlet</servlet-name>
    <servlet-class>nuc.edu.zhuce.RegServlet</servlet-class>
</servlet>
    <servlet-mapping>
        <servlet-name>RegServlet</servlet-name>
        <url-pattern>/reg</url-pattern>
    </servlet-mapping>
</web-app>


img

img

img


html页面可以正常打开,但提交后

img


请问该怎么解决

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-04-24 19:48
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    您的问题是关于Servlet与JDBC的问题,可能是指使用Servlet技术与JDBC数据库连接库进行数据库操作。

    从您的代码中可以看到,您正在使用Jakarta Servlet API和JDBC API,但是代码还没有完整,因此无法确定具体的问题。

    如果您的问题是关于如何使用Servlet与JDBC连接数据库,请提供更多的代码和详细信息,我将尽力帮助您解决问题。

    如果您的问题是关于其他方面的Servlet或JDBC问题,请提供更多的信息和代码,我也将尽力帮助您解决问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月23日
  • 创建了问题 4月24日