gpt4 book ai didi

Maven Tomcat 插件 - 找不到 404 WebServlet

转载 作者:行者123 更新时间:2023-11-28 22:28:51 25 4
gpt4 key购买 nike

我有一个带有 Maven 的 Web 应用程序,它使用服务器的 Tomcat 插件。该应用程序被编译为 .war,在提取时,它似乎包含 WEB-INF/classes 文件夹中的所有类(包括 servlet)。

当 url http://localhost:8080/com.galya.crm被击中,index.html(这是一个 SPA 应用程序)被正常加载重定向到 http://localhost:8080/com.galya.crm/#!/login/msg/notlogged

我有 4 个以类似方式注释的 servlet:

@WebServlet("/restapi/login")
public class LoginController extends HttpServlet {

当 SPA 应用程序尝试使用登录 servlet(如上所示)进行身份验证时,问题就出现了。我希望它在这里:http://localhost:8080/com.galya.crm/restapi/login ,但出现 404 错误。

下面我附上了自动创建的Tomcat插件文件夹。工作目录是空的,我不确定它是否可以。

enter image description here

最初 webapp/WEB-INF/web.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>
<display-name>Archetype Created Web Application</display-name>
</web-app>

我还尝试将其更改为接受 WebServlet 注释,但也没有用:

<!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://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
</web-app>

附言该应用程序之前在另一台服务器上运行,因此问题应该出在服务器配置上,而不是代码本身。

最佳答案

原因肯定是部署描述符必须声明为 3.0 版本。您的 web.xml 仍然是 2.3。

删除 DOCTYPE 声明并保留根节点,就像您已经做的那样:

<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"
version="3.0">

我自己测试过,成功了。

关于Maven Tomcat 插件 - 找不到 404 WebServlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com