为什么点击更新按钮后出现“HTTP Status 500 - Internal Server Error”?

问题描述 投票:0回答:1

当我尝试在 JSP 工作中编辑配置文件时,会发生此错误。 Error Message NetBeans 中显示如下错误:

|#]
  org.apache.catalina.util.Enumerator@3b90e68c|#]
  StandardWrapperValve[UpdateProfileServlet]: Servlet.service() for servlet UpdateProfileServlet threw exception
java.lang.NullPointerException
    at ict.db.AccountDB.updateUser(AccountDB.java:178)
    at servlet.UpdateProfileServlet.doPost(UpdateProfileServlet.java:58)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:665)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1540)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:119)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:550)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:75)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:114)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:199)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:439)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:144)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:515)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
    at java.lang.Thread.run(Thread.java:750)
|#]

这里是源代码的链接,因为完整的代码很长,这里是 源代码

[用户配置文件.jsp]

<%-- 
    Document   : Profie
    Created on : 2024年4月12日, 上午12:51:25
    Author     : User
--%>


<%@page import="java.util.ArrayList"%>
<%@ page import="javax.servlet.http.HttpSession"%>
<%@ page import="ict.Bean.AccountBean"%>
<%@page contentType="text/html" pageEncoding="UTF-8" session="true"%>

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
        //<style> ... </style>
        <script>
            function showContact() {
                var contactInfo = document.getElementById("contact-info");
                contactInfo.classList.toggle("hidden");
            }

        </script>
    </head>

    <body>
        <%

            AccountBean user = (AccountBean) session.getAttribute("AccountBean");
            if (user == null) {
                response.sendRedirect("LoginUser.jsp"); // Redirect to login if no session found
                return;
            }
        %>
        
        <form method="POST" action="UpdateProfileServlet">
            <div class="container">
                <div class="row gutters">
                    <div class="col-xl-3 col-lg-3 col-md-12 col-sm-12 col-12">
                        <div class="card h-100">
                            <div class="card-body">
                                <div class="account-settings">
                                    <div class="user-profile">                                       
                                        <input type="text" name="id"  value="<%= user.getId()%>" hidden>
                                        <h5 class="user-name"><%= user.getUsername()%></h5>
                                        <h6 class="user-email"><%=user.getEmail()%></h6>
                                        <h6 class="user-role"><%= user.getRole()%></h6>
                                    </div>
                                    
                                </div>
                            </div>
                        </div>
                    </div> <div class="col-xl-9 col-lg-9 col-md-12 col-sm-12 col-12">
                        <div class="card h-100">
                            <div class="card-body">
                                <div class="row gutters">
                                    <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
                                        <h6 class="mb-2 text-primary">Personal Details</h6>
                                    </div>
                                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
                                        <div class="form-group">
                                            <label for="fullName">Full Name</label>
                                            <input type="text" class="form-control" id="fullName" name="name" placeholder="Enter full name" value="<%= user.getUsername()%>">
                                        </div>
                                    </div>
                                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
                                        <div class="form-group">
                                            <label for="eMail">Email</label>
                                            <input type="email" class="form-control" id="eMail" name="email" value="<%= user.getEmail()%>" placeholder="Enter email">
                                        </div>
                                    </div>
                                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
                                        <div class="form-group"> 
                                            <label for="role">Role</label>
                                            <input type="text" class="form-control" id="Role" value="<%=user.getRole()%>" readonly> </div>
                                    </div>
                                  
                                    <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
                                        <div class="form-group">
                                            <label for="pw">Password</label>
                                            <input type="password" class="form-control" id="pw" name="password" placeholder="password" maxlength="10">
                                        </div>
                                    </div>

                                    <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
                                        <div class="text-right">
                                            <button id="submit" class="btn btn-secondary"><a href="UserHome.jsp" style="text-decoration:none">Cancel</a></button>

                                            <a href=\"UpdateProfile?action=getEditCustomer&id=" + c.getId() + "\">
                                                <input type="submit"  id="submit" name="submit" class="btn btn-primary"value="Update"></a>
                                        </div>
                                    </div>


                                </div>
                            </div>
                        </div>
                    </div>
                    </form>


                </div>
            </div>

    </body>

[UpdateProfileServlet.java]

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package servlet;

import ict.Bean.AccountBean;
import ict.db.AccountDB;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author plksa
 */
@WebServlet(name = "UpdateProfileServlet", urlPatterns = {"/UpdateProfileServlet"})
public class UpdateProfileServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.print(request.getAttributeNames());
            String id = request.getParameter("id");
            String name = request.getParameter("name");
            String email = request.getParameter("email");
            String password = request.getParameter("pw");
            String role = request.getParameter("role");
//            String day = request.getParameter("day");
//            String month = request.getParameter("month");
//            String year = request.getParameter("year");
//            String gender = request.getParameter("gender");
//            String dateOfBirth = year + "-" + month + "-" + day;

            // Database connection details
            //String url = "jdbc:mysql://localhost:3306/system_db";
            String url = "jdbc:mysql://localhost:3306/asm_gp13_db_final";
            String username = "root";
            String dbPassword = "";

            //AccountDB db = new AccountDB("jdbc:mysql://localhost:3306/system_db", "root", "");
            AccountDB db = new AccountDB(url, username,dbPassword);
            AccountBean account = new AccountBean();
            account.setId(id);
            account.setUsername(name);
            account.setEmail(email);
            account.setPassword(password);
            account.setRole(role);
            
            
            //boolean updateSuccess = db.updateUser(id, name, email, password, role, dateOfBirth, gender);
            boolean updateSuccess = false;
        try {
            updateSuccess = db.updateUser(name, email, password);
        } catch (SQLException ex) {
            Logger.getLogger(UpdateProfileServlet.class.getName()).log(Level.SEVERE, null, ex);
        }

            if (updateSuccess) {
                if ("user".equals(role)) {
                    response.sendRedirect("UserHome.jsp"); // Redirect to homepage
                } else if ("courier".equals(role)) {
                    response.sendRedirect("CourHome.jsp"); // Redirect to homepage
                } else if ("Technician(Administrator)".equals(role)) {
                    response.sendRedirect("TechHome.jsp"); // Redirect to homepage
                }
            } else {
                request.setAttribute("errorMessage", "Failed to update account.");
                request.getRequestDispatcher("update.jsp").forward(request, response); // Send back to the form with an error message
            }
    }

}

[AccountDB.java] https://pastebin.com/mjcdJVMS

我试图更新数据库中的配置文件,但我尝试了很多方法,但仍然有错误。

java mysql jsp netbeans ant
1个回答
0
投票

看起来

password
为 null,当调用
isEmpty()
方法时,它将抛出 NullPointerException。您在类
UpdateProfileServlet.doPost
之前添加一个条件
try catch block

if(password == null){
 password = "";
}
© www.soinside.com 2019 - 2024. All rights reserved.