一尘不染

如何在不映射web.xml的情况下调用servlet?

tomcat

如何使用以下URL调用简单的servlet: http:// localhost:8080 / servlet /
MyServlet

我将其放在文件夹中: tomcat\webapps\ROOT\WEB-INF\classes

我读过,没有必要在web.xml中提及servlet。我也一样 不过,我无法调用它。


阅读 286

收藏
2020-06-16

共1个答案

一尘不染

我读过,没有必要在web.xml中提及servlet。

您可能会与InvokerServletApache
Tomcat较旧版本中存在的旧版Tomcat内置功能混淆(仍然在较差且过时的教程/书中提到)。实际上,它允许这样调用servlet,而无需映射任何内容。但是,后来证实这是一个安全漏洞,容易受到攻击。它已在Tomcat
5.0上禁用和弃用,在Tomcat 7.0上已被删除。在这种情况下,您确实需要在其中映射servlet web.xml(并将其放入包中!)。

另一个令人困惑的原因可能是新的Servlet 3.0
@WebServlet注释。如果您已经在使用Tomcat
7.0之类的Servlet 3.0容器,则可以使用此批注来映射Servlet,而无需费心web.xml

package com.example;

@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {

    // ...

}

然后,您将可以按所需方式访问它。

2020-06-16