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 ファイルなし)。

からすべてのサーブレットを削除して、機能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 に答える