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。我该怎么做?
答案 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