gpt4 book ai didi

java - 网站在本地工作,但是当部署在 Tomcat 服务器上时,它不再找到 Servlet

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

背景


我正在为学校做一个项目。最终目标是创建一个学习网站。我一直在本地创建我的网站并测试它到目前为止进展顺利,所以我致力于将它放在服务器上进行测试(部署 .war 文件)。我一这样做,整个网站似乎就无法正常工作了。

问题


问题是,一旦我尝试单击通过 servlet 的任何链接,我就会从 tomcat 收到一条错误消息,指出所请求的资源不可用(http 状态 404)。这有点奇怪,因为它确实在本地工作。

我尝试了什么


我注意到的第一件事是转到服务器 .war 文件首先转到快照 url(在我的例子中: http://145.92.6.85:8080/PDL-1.0-SNAPSHOT/)而不是立即登陆 index.jsp 页面(在本地发生)所以我的第一个想法是它使用了一种完全不同的方式来访问我正在寻找的文件。再次奇怪,因为在本地一切正常(也使用 tomcat)。我查看了我的项目并尝试使用 map 结构访问我正在寻找的文件,这似乎有效。因此,我没有使用我在 web.xml 中指定的 servlet,而是忽略了它。

所以我决定它可能找不到我的 web.xml 文件。上网查了一下,发现应该放​​在WEB-INF map里面。目前 web.xml 位于 META-INF 中,因此将其置于 WEB-INF 中,但无济于事。我要找的页面仍然找不到。我还读到有人说项目的类(我假设是我的 servlet?)需要放在 WEB-INF 文件夹内的 classes 目录中。我决定不这样做,因为目前我已经将它们全部设置在不同的包中(源包 -> Controller /模型等)。这对我来说似乎更合乎逻辑,而且它在本地工作,所以为什么这在服务器上不起作用?

据我所知,我的 web.xml 设置正确,但我会显示一些代码来指示问题所在。

代码


这是我要跟踪的 URL(在导航栏内)(如下: http://145.92.6.85:8080/PDL/inlog)

<li>
<a href="/PDL/inlog">Log In</a>
</li>

这是 web.xml

<servlet>
<servlet-name>login</servlet-name>
<servlet-class>controllers.login</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>

inlog.java 文件(在 Source Packages->controllers 或 PDL/src/main/java/controllers 内)

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher rd = request.getRequestDispatcher("/pages/inlog.jsp");
rd.forward(request, response);
}

这就是它崩溃的地方,因为找不到它。


最后


在写这个问题的时候,我确实觉得我的 URL 和东西可能有点变化,也许应该比当前的静态那些更动态(因为我猜服务器环境不同)。谁能给我一些关于如何使 url 更具动态性的提示,以便它们可以在本地和服务器上直接工作(类似于 PHP 等同于 $_SERVER['SERVER_NAME'] 等?任何帮助将不胜感激!虽然我觉得我重定向到的 url 是我只是不知道如何解决这个问题。

最佳答案

war 文件的名称是什么?是 PDL-1.0-SNAPSHOT.war 吗?您是否尝试访问“www.ip或域名/PDL-1.0-SNAPSHOT/”?

如果您的 war 文件具有版本名称,那么您将必须编辑 Tomcat 配置文件以将 war 文件名称映射到上下文根。

请参阅http://tomcat.apache.org/tomcat-6.0-doc/config/context.html了解更多信息,如果您使用的是 Tomcat 6。

关于java - 网站在本地工作,但是当部署在 Tomcat 服务器上时,它不再找到 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126697/

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