@Max_Tr

Почему возникает ошибка «Class servlets.MainServlet is not a Servlet»?

Почему не получается достучаться до сервлета?
Прописывал вроде все правильно, но не могу достучаться к сервлету
ошибка:
type Exception report

message Class servlets.MainServlet is not a Servlet

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Class servlets.MainServlet is not a Servlet
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base/java.lang.Thread.run(Thread.java:834)


pom.xml
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1"
         metadata-complete="true">

  <display-name>Tomcat Documentation</display-name>
  <description>
    Tomcat Documentation.
  </description>


  <servlet>
    <servlet-name>testServlet</servlet-name>
    <servlet-class>servlets.MainServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>testServlet</servlet-name>
    <url-pattern></url-pattern>
  </servlet-mapping>
</web-app>

MainServlet.java
package servlets;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("")
public class MainServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("WEB-INF/views/main.jsp").forward(req,resp);

    }
}
  • Вопрос задан
  • 1496 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Evgeny_13
В нужно указать как этот сервлет будет мапиться, если нет особенного мапинга, то нужно ставить "/". (/)

В аннотации name указывается несколькими вариантами:
1. WebServlet("/YourName")
2. WebServlet(name = "YourName")

В Вашем случае вы просто ничего не указываете в данной аннотации.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы