Maven 忽略@WebServlet 注释

发布于 2024-12-03 20:56:46 字数 219 浏览 0 评论 0原文

我有一个动态 Web 项目,其中有一些 @WebServlet 注释,所有这些都运行良好。此后,我将 Dynamic Web 项目切换为 Maven Web 项目。这样做之后,我无法通过 @WebServlet 注释中定义的内容访问任何 servlet。我还应该注意到,我的一些 servlet 是来自其他 Maven 项目的覆盖。我现在必须在 web.xml 文件中定义我的 servlet 映射吗?

谢谢

I had a Dynamic Web project which had a few @WebServlet annotations, all of which worked fine. I have since switched my Dynamic Web project to a Maven web project. Since doing so, I can't access any of my servlets by what I defined in my @WebServlet annotations. I should also note that some of my servlets are overlay from other Maven projects. Do I have to now define my servlet mappings in the web.xml file?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

治碍 2024-12-10 20:56:46

抛开 Maven 的故事不谈,@WebServlet 注释是在 Servlet 3.0 中引入的。如果它们未初始化,则仅意味着 Web 应用程序描述符(web.xml)未声明为符合 Servlet 3.0,或者目标容器不支持 Servlet 3.0。

您需要验证您的 web.xml 是否符合 Servlet 3.0。即, 根声明必须匹配:

<web-app 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">

The Maven story aside, the @WebServlet annotation was introduced in Servlet 3.0. If they are not initialized, then it simply means that either the web application descriptor (the web.xml) is not declared conform Servlet 3.0 or that the target container does not support Servlet 3.0.

You need to verify if your web.xml conforms Servlet 3.0. I.e., the <web-app> root declaration must match that:

<web-app 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文