【发布时间】:2015-08-19 06:38:57
【问题描述】:
我有一个带有 Maven 的 webapp,它使用 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插件文件夹。工作目录为空,不确定是否正常。
最初 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>
附:该应用程序前段时间在另一台服务器上运行,因此问题应该出在服务器配置上,而不是代码本身。
【问题讨论】:
-
我刚刚看到 Tomcat 服务器使用来自 \target\tomcat\conf\web.xml 的配置,其中版本为“2.5”。似乎这应该是问题所在,但是从上面粘贴 3.0 的 sn-p 不起作用...
-
好吧,看来我犯了一个非常愚蠢的错误。我运行命令 tomcat:run,它启动了其他一些使用 Idea 配置的服务器,而不是插件。现在,当我使用命令 tomcat7:run 并使用版本 3 配置时,servlet 可以工作。但是即使在welcome-file-list 中列出,index.html 现在也会出现 404 错误
标签: maven tomcat servlets http-status-code-404