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

2024-02-20

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

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

我读过无需在 web.xml 中提及 servlet。我也这么做了。尽管如此,我还是无法调用它。


我读过无需在 web.xml 中提及 servlet。

您可能对遗留的 Tomcat 内置感到困惑InvokerServlet http://tomcat.apache.org/tomcat-4.1-doc/catalina/funcspecs/fs-invoker.html它存在于旧版本的 Apache Tomcat 中(并且在糟糕且过时的教程/书籍中仍然提到)。它确实允许像这样调用 servlet,而无需映射任何内容。不过后来证实这是一个安全漏洞且容易受到攻击 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-1394。它在 Tomcat 5.0 上被禁用和弃用,并在 Tomcat 7.0 上被删除。在这种情况下,您确实需要将 servlet 映射到web.xml(并将其放入包装中!)。

另一个混乱的来源可能是新的 Servlet 3.0@WebServlet https://jakarta.ee/specifications/platform/8/apidocs/javax/servlet/annotation/webservlet注解。当您已经使用像 Tomcat 7.0 这样的 Servlet 3.0 容器时,您可以使用此注释来映射 servlet,而无需摆弄web.xml.

package com.example;

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

    // ...

}

然后您就可以按照您想要的方式访问它。

也可以看看:

  • 我们的 Servlet wiki 页面 https://stackoverflow.com/tags/servlets/info
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有映射到 web.xml 的情况下调用 servlet? 的相关文章

随机推荐