2

Web 应用程序在 Google App Engine 上运行的后端使用 Java Restlet。

我想为所有 url (/*) 返回 index.html。

在这里,我不想使用response.redirect,我的意思是,客户端不应该知道重定向。

我在 web.xml 中使用了以下代码。

  <servlet>
    <servlet-name>RestletServlet</servlet-name>
    <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
    <init-param>
        <param-name>org.restlet.application</param-name>
        <param-value>com.post.PostApplication</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>RestletServlet</servlet-name>
    <url-pattern>/api/v1/*</url-pattern>
</servlet-mapping>

 <servlet>
    <servlet-name>StartPageServlet1</servlet-name>
    <jsp-file>/client/index.html</jsp-file>  
</servlet>
<servlet-mapping>
    <servlet-name>StartPageServlet1</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

它使用 Restlet 为所有 /api/v1 请求提供服务。它工作正常。但是 /* 应该总是返回 index.html。我该怎么做?

4

3 回答 3

2

您可以插入过滤器并检查请求 URI,并根据它决定是否将其转发到您的主页:

RequestDispatcher rd = request.getRequestDispatcher("/index.html"); rd.forward(request, response);

于 2017-07-16T11:37:31.773 回答
0

您只想提供静态文件(没有动态文件、JSP 文件)。

您可以尝试从您的所有 servlet 中删除web.xml并使用该welcome-file-list功能:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC
 "-//Oracle Corporation//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" version="2.5">

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

</web-app>

试一试,让我知道这是否有效。

于 2012-10-09T03:53:31.013 回答
-1

您可以使用拦截器。对于每个传入的请求,您可以将目标页面设置为您的 index.html

于 2012-10-09T08:00:35.803 回答