错误500:示例化servlet类时出错

kfgdxczn  于 2021-10-10  发布在  Java
关注(0)|答案(0)|浏览(168)

我在eclipse中创建了以下项目
我的web.xml看起来是这样的:

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>CustomerServlet</servlet-name>
    <display-name>CustomerServlet</display-name>
    <description></description>

    <servlet-class>com.acn.controller.CustomerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CustomerServlet</servlet-name>
    <url-pattern>/register</url-pattern>
  </servlet-mapping>
</web-app>

我的servlet类看起来是这样的:

package com.acn.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.acn.dao.CustomerDao;
import com.acn.registration.Customer;

/**
 * Servlet implementation class CustomerServlet
 */
//@WebServlet("/register")
//@WebServlet( name="ListServlet", displayName="ListServlet", urlPatterns = {"/register"}, loadOnStartup=1)
public class CustomerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private CustomerDao customerDao;

    public void init() {
        customerDao = new CustomerDao();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.getWriter().append("Served at: ").append(request.getContextPath());

        RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/customerregister.jsp");
        dispatcher.forward(request, response);
    } 

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String firstName = request.getParameter("firstName");
        String lastName = request.getParameter("lastName");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String address = request.getParameter("address");
        String contact = request.getParameter("contact");

        Customer customer = new Customer();
        customer.setFirstName(firstName);
        customer.setLastName(lastName);
        customer.setUsername(username);
        customer.setPassword(password);
        customer.setAddress(address);
        customer.setContact(contact);

        try {
        customerDao.registerCustomer(customer);
        } catch(Exception e) {
            e.printStackTrace();
        }

        response.sendRedirect("customerdetails.jsp");
        //RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/customerdetails.jsp");
        //dispatcher.forward(request, response);
    }

}
package com.acn.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.acn.dao.CustomerDao;
import com.acn.registration.Customer;

/**
 * Servlet implementation class CustomerServlet
 */
//@WebServlet("/register")
//@WebServlet( name="ListServlet", displayName="ListServlet", urlPatterns = {"/register"}, loadOnStartup=1)
public class CustomerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private CustomerDao customerDao;

    public void init() {
        customerDao = new CustomerDao();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.getWriter().append("Served at: ").append(request.getContextPath());

        RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/customerregister.jsp");
        dispatcher.forward(request, response);
    } 

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String firstName = request.getParameter("firstName");
        String lastName = request.getParameter("lastName");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String address = request.getParameter("address");
        String contact = request.getParameter("contact");

        Customer customer = new Customer();
        customer.setFirstName(firstName);
        customer.setLastName(lastName);
        customer.setUsername(username);
        customer.setPassword(password);
        customer.setAddress(address);
        customer.setContact(contact);

        try {
        customerDao.registerCustomer(customer);
        } catch(Exception e) {
            e.printStackTrace();
        }

        response.sendRedirect("customerdetails.jsp");
        //RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/customerdetails.jsp");
        //dispatcher.forward(request, response);
    }

}

我的客户道看起来是这样的:

package com.acn.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.acn.registration.Customer;

public class CustomerDao {
    private ConnectorPool conPool;

    public CustomerDao(ConnectorPool cpool) {
        if(cpool == null) {
            throw new IllegalArgumentException(" pool should not be null");
        }
        conPool = cpool;
    }

    public void registerCustomer(Customer cust) {
        String sql = "insert into customer (first_name, last_name, username, password, address, contact) values (?,?,?,?,?,?)";

        try(Connection con = conPool.getMyConnection()) {
            PreparedStatement pstm = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            con.setAutoCommit(false); //starting transaction
            con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
            pstm.setString(1, cust.getFirstName());
            pstm.setString(2, cust.getLastName());
            pstm.setString(3, cust.getUsername());
            pstm.setString(4, cust.getPassword());
            pstm.setString(5, cust.getAddress());
            pstm.setString(6, cust.getContact());

            int numOfRows = pstm.executeUpdate();

            //Führt zur id in meiner API
            //Prüf ob id==0 denn das darf nicht sein
            ResultSet rs = pstm.getGeneratedKeys();
            System.out.println(numOfRows);

            if(rs.next()) {
                cust.setId(rs.getLong(1));
            }

            System.out.println(cust);

        } catch (SQLException e) {

            e.printStackTrace();
        }

    }

    }

我的jsp如下所示:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
 <div align="center">
  <h1>Employee Register Form</h1>
  <form action="<%= request.getContextPath() %>/register" method="post">
   <table style="with: 80%">
    <tr>
     <td>First Name</td>
     <td><input type="text" name="firstName" /></td>
    </tr>
    <tr>
     <td>Last Name</td>
     <td><input type="text" name="lastName" /></td>
    </tr>
    <tr>
     <td>UserName</td>
     <td><input type="text" name="username" /></td>
    </tr>
    <tr>
     <td>Password</td>
     <td><input type="password" name="password" /></td>
    </tr>
    <tr>
     <td>Address</td>
     <td><input type="text" name="address" /></td>
    </tr>
    <tr>
     <td>Contact No</td>
     <td><input type="text" name="contact" /></td>
    </tr>
   </table>
   <input type="submit" value="Submit" />
  </form>
 </div>
</body>
</html>

jsp文件运行良好,我使用 http://localhost:8080/RegistrationWebApp/ 无论如何努力 http://localhost:8080/RegistrationWebApp/register 给我一个错误:

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:756)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2470)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:866)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1370)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1224)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:353)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:870)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1696)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)

我已经看过其他帖子,并尝试实施建议的解决方案,但迄今为止没有任何成功。谁能帮我一下吗?
编辑:我的pom依赖项:

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.23</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-juli -->
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-juli</artifactId>
        <version>10.0.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>3.10.0</version>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.9.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.8.0</version>
    </dependency>

  </dependencies>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题