gpt4 book ai didi

java - Servlet 映射在本地工作,但在 App Engine 中的网络服务器上不工作

转载 作者:行者123 更新时间:2023-11-30 11:42:46 25 4
gpt4 key购买 nike

我遇到了应用引擎上的 servlet 映射问题。

详情
使用我的 web.xml 配置文件,我映射 URL 模式“/i”以重定向到我的 WAR 路径根目录上的 info.html。

当我在本地运行它并访问 url localhost:8888/i 时,Web 服务器正确地重定向到 info.html 站点。但是当我推送到 App Engine 并尝试访问 www.mysite.com/i 时,我收到 404 Error: NOT_FOUND

问题
1. 为什么我的服务器映射在本地有效,而在远程无效?2. 是否有另一种方法可以将 www.mysite.com/i 之类的 url 模式映射到我的 war 路径中的静态文件?

*虽然我使用的是应用程序引擎,但我认为这与其他通过 web.xml 使用 servlet 映射的 Java 服务器类似。我也知道映射到静态 html 文件可能看起来很奇怪,但目前我没有加载任何动态内容。

代码示例
下面我包含了我的 web.xml 文件的精简版本以供引用。它隔离了我进行重定向的方式。

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

<servlet>
<servlet-name>Info</servlet-name>
<jsp-file>info.html</jsp-file>
</servlet>

<servlet-mapping>
<servlet-name>Info</servlet-name>
<url-pattern>/i</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

最佳答案

请记住 AE 并不完全相同:

By default, App Engine makes all files in the WAR available as static files except JSPs and files in WEB-INF/. Any request for a URL whose path matches a static file serves the file directly to the browser—even if the path also matches a servlet or filter mapping. You can configure which files App Engine treats as static files using the appengine-web.xml file.

来自 https://developers.google.com/appengine/docs/java/gettingstarted/staticfiles

配置 appengine-web.xml 的说明在这里 https://developers.google.com/appengine/docs/java/config/appconfig

我会尝试明确声明它:

<static-files>
<include path="info.html" />
</static-files>

如果这不起作用,只需将我的 .html 页面更改为真正的 jsp 页面(即使没有动态内容)。

如果这不起作用,将尝试从 servlet 中使用 RequestDispatcher 来转发 html 页面,请参见 http://www.jguru.com/faq/view.jsp?EID=1310997

顺便说一句,我的经验是,即使 appengine-web.xml 相同,devmode 服务器和部署的服务器有时也会以不同的方式解析文件。

关于java - Servlet 映射在本地工作,但在 App Engine 中的网络服务器上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11535928/

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