java - HTTP 状态 500 - 实例化 servlet 类 com.controller.RegisterServlet 时出错

标签 java servlets

我创建了一个 jsp 文件 register.jsp,在其中获取用户的详细信息并尝试将其保存在数据库中 RegisterServlet.java

package com.controller;

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;

import com.model.User;
import com.service.RegisterService;


public class RegisterServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
     response.setContentType("text/html;charset=UTF-8");
     PrintWriter out = response.getWriter();
     String firstName = request.getParameter("firstName");
     String middleName = request.getParameter("middleName");
     String lastName = request.getParameter("lastName");
     String email = request.getParameter("email");
     String userId = request.getParameter("userId");
     String password = request.getParameter("password");
     User user = new User(firstName,middleName,lastName, email,userId, password);

     try {  
         RegisterService registerService = new RegisterService();
         boolean result = registerService.register(user);       
         out.println("<html>");
         out.println("<head>");     
         out.println("<title>Registration Successful</title>");     
         out.println("</head>");
         out.println("<body>");
         out.println("<center>");
         if(result){
             out.println("<h1>Thanks for Registering with us :</h1>");
             out.println("To login with new UserId and Password<a href=login.jsp>Click here</a>");
         }else{
             out.println("<h1>Registration Failed</h1>");
             out.println("To try again<a href=register.jsp>Click here</a>");
         }
         out.println("</center>");
         out.println("</body>");
         out.println("</html>");
     } finally {        
         out.close();
     }

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" 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_2_5.xsd">
    <display-name>MVCApplication</display-name>
    <servlet>
        <display-name>LoginServlet</display-name>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.controller.LoginServlet</servlet-class>
    </servlet>
    <servlet>
        <display-name>RegisterServlet</display-name>
        <servlet-name>RegisterServlet</servlet-name>
        <servlet-class>com.controller.RegisterServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>InsertDataItem</servlet-name>
        <servlet-class>com.controller.InsertDataItem</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>RegisterServlet</servlet-name>
        <url-pattern>/RegisterServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>InsertDataItem</servlet-name>
        <url-pattern>/InsertDataItem</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

错误

**exception**
javax.servlet.ServletException: Error instantiating servlet class com.controller.RegisterServlet
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)


**root cause**
java.lang.ClassNotFoundException: com.controller.RegisterServlet
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)

Whenever I submit my details to register in the database this error pops up!. Can anyone please help me ??

最佳答案

您需要确保 RegisterServlet 类实际上可用于 servlet 容器。

通常,在 WEB-INF 目录中,您将具有以下目录:

  • 类(class)

您需要确保该类在classes目录中可用或者该类位于lib目录中的JAR中

关于java - HTTP 状态 500 - 实例化 servlet 类 com.controller.RegisterServlet 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42807998/

相关文章:

java - 无法使用 java 从 yahoo API 获取 OAuth 2.0 访问 token

java - GridBagLayout gridwidth 不能按预期工作

java - 可以访问Android智能手 secret 钥库吗?

java - 事务不回滚

java - JSP 页面使用的类的安全性如何?

java - 将 javascript 数组传递给 java servlet

java - 如何根据条件返回 json 响应并重定向到其他 View ?

java - java中递归的澄清

javascript - 即使在提交 jsp 表单后仍保留在同一页面中

java - 在 'normal' Java 应用程序和 Web 应用程序中运行良好的库关闭例程