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

标签 java tomcat servlets

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

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

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

最佳答案

I've read there is no need to mention the servlet in web.xml.

您可能对遗留的 Tomcat 内置 InvokerServlet 感到困惑它出现在旧版本的 Apache Tomcat 中(并且仍然在糟糕和过时的教程/书籍中提到)。它确实允许像这样调用 servlet 而无需映射任何东西。不过后来证实是security hole and vulrenable to attacks .它在 Tomcat 5.0 上被禁用和弃用,并在 Tomcat 7.0 上被删除。在这种情况下,您确实需要在 web.xml 中映射您的 servlet(并将其放在一个包中!)。

另一个混淆来源可能是新的 Servlet 3.0 @WebServlet注解。当您已经在使用 Servlet 3.0 容器(如 Tomcat 7.0)时,您可以使用此注释来映射 servlet,而无需摆弄 web.xml

package com.example;

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

    // ...

}

然后您将能够以您想要的方式访问它。

另见:

关于java - 如何在不映射 web.xml 的情况下调用 servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5031018/

相关文章:

java - 如何在 Android Studio 中随机化按钮?

java - OSGi和依赖注入(inject)有什么关系

java - 从 HTTPS 中的 Node JS 调用 Java REST API(在 Tomcat 上)

tomcat - war的依赖在类路径中寻找文件

java - Microsoft Word 忽略从 WebDAV 服务器发送的锁定状态

java编码在jsp中获取多个注释

java - 使Java JScrollpane仅垂直滚动

java - JPA:主键的重复条目

java - "No persistence unit with name ' 产品 ' found"

servlets - @WebServlet 注释不适用于 Tomcat 8