java - 实例化 servlet 类时出错 [org.ran.FristServlet]

标签 java jsp tomcat servlets

您好,我正在使用 Apache Tomcat 编写代码,我不断收到上述信息。我已经检查了 Web.xml 路径

enter image description here

和web.xml的内容我没发现有什么错误

enter image description here

下面是我的代码和错误信息

索引.jsp

enter image description here

第一个Servlet

public class FirstServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        RequestDispatcher rd = req.getRequestDispatcher("index.jsp");
        rd.forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String uid = req.getParameter("uid");
        int ph = Integer.parseInt(req.getParameter("ph"));

        HttpSession session = req.getSession();

        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        if (uid != null && ph < 0) {

            try {
                Class.forName("com.mysql.jdbc.Driver");
                con = DriverManager.getConnection("jdbc:mysql://localhost:3306?user=root&password=Eagle&useSSL=false");

                String sql = "select invno,phone from invnt.allinvoice where invno=? and phone=? ";
                pstmt = con.prepareStatement(sql);
                pstmt.setString(1, uid);
                pstmt.setInt(2, ph);
                rs = pstmt.executeQuery();

                String nid="";
                int nph=0;

                while (rs.next()) {
                    nid=rs.getString(1);
                    nph=rs.getInt(2);
                }
                if(uid==nid && ph==nph) {
                    RequestDispatcher rd = req.getRequestDispatcher("index.jsp");
                    rd.forward(req, resp);
                }else{
                    RequestDispatcher rd = req.getRequestDispatcher("index.jsp");
                    rd.forward(req, resp);
                }

            } catch (ClassNotFoundException | SQLException e) {

                e.printStackTrace();
            }

        } else {
            RequestDispatcher rd = req.getRequestDispatcher("index.jsp");
            rd.forward(req, resp);
        }
    }

错误日志

javax.servlet.ServletException: Error instantiating servlet class [org.ran.FristServlet]
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)

Root Cause

java.lang.ClassNotFoundException: org.ran.FristServlet
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1363)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1186)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61

最佳答案

首先从您的 web.xml 中删除所有 servlet 及其 servletmapping 标记,因为 您可以简单地使用注释而不是编写部署描述符代码。 您的项目结构也受到干扰,您应该 将您的 servlet 放入 src/main/java 并尝试运行它。

也像下面这样注释你的类。

@WebServlet(urlPatterns = "/fs", loadOnStartup = 1)
public class FirstServlet extends HttpServlet {

关于java - 实例化 servlet 类时出错 [org.ran.FristServlet],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59320396/

相关文章:

javascript - 我如何循环ajax请求(使用jquery)和jsp

Java servlet tomcat 404

java - 减少 Lucene 文档索引的内存使用量

JAVA获取URL API

java - Java中的非阻塞IO解决方案

Java线程notify() wait()以加快计算速度

java - war 中运送的 jar 与 jetty 冲突

java - 如何正确地将图像从 servlet 传递到 JSP

java - Spring:Tomcat 响应中的 HTTP 状态 406

apache - Tomcat 中的 Shibboleth session 验证