重定向所有URL以返回App Engine Java servlet中的index.html

时间:2012-10-09 03:36:08

标签: java google-app-engine servlets restlet-2.0

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

我想为所有网址(/ *)返回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。我该怎么做?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

您可以尝试从web.xml删除所有servlet并使用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>

尝试一下,如果有效,请告诉我。

答案 2 :(得分:-1)

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