gpt4 book ai didi

java - Google App Engine 上的 Servlet URL 模式

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

我正在尝试使用 url-pattern 做一些简单的工作,它在本地主机上运行良好,但当应用程序部署在 GAE 服务器上时失败。接下来我要做的是:

  • 一个 servlet 来处理所有请求
  • 这个 servlet 会将一些请求转发到 jsp 文件(在大多数情况下)

为此,我配置了 web.xml:

<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.mycompany.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>MyServlet</welcome-file>
</welcome-file-list>

这适用于 GAE 本地主机服务器,但当应用程序部署在真正的 GAE 服务器上时,它就不行了。问题是当我访问 myapp.appspot.com/anything GAE 响应时:

错误:未找到在此服务器上未找到请求的 URL/anything。

谁能帮帮我,好吗?

最佳答案

您缺少 Servlet 元素。 Servlet-mapping 元素本身是不够的。建立你的 web.xml 试试这个....

    <servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>package.path.to.my.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

当然要将 package.path.to.my.servlet 替换为您的 MyServlet 类的实际包。完成此操作后,您可以放入多个 servlet 映射元素以将不同的 url 映射到同一个 servlet。

如果这发生在您的 appspot url 上,您可以尝试并确保所有静态文件都被部署到您的 appspot...

    <static-files>
<include path="/**.css" />
<include path="/**.xml" />
</static-files>

请注意,这意味着您要在 war 文件中部署所有 xmls/css 文件。如果您不想这样做,请相应地调整包含路径属性。

此外,要让所有请求转到一个 servlet,只需使用以下 url 模式...

<url-pattern>/*</url-pattern>

请记住,在使用此模式时,如果您有图像/css 文件/jsp 文件/等,此 servlet 将拦截对它们的请求。因此,您将拥有某种逻辑来转发您不感兴趣的请求。如果您正在做一些直截了当的事情,这可能就足够了;但是随着您变得越来越复杂(例如缓存 css 文件/图像文件),您可能会想要考虑添加静态资源过滤器。

关于java - Google App Engine 上的 Servlet URL 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674843/

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