2

これは私の現在の Guice 構成です。

public class MyServletModule extends ServletModule {
    @Override
    protected void configureServlets() {
        bind(MyRest.class);
        serveRegex(".+(?<!\\.(html|css|png|jpg))")
               .with(HttpServletDispatcher.class);
    }
}

ただし、Rest リソースが次の形式でのみアクセスされ、http://127.0.0.1:8888/{hashcode_or_filename}受け入れられて処理される唯一の形式であることを望みます (さらに、以下の /create メソッドも)。

今のところ、このパス パターンでハッシュコードとファイル名を適切に処理できます。

ただし、クライアントがマップされていないパスを要求している以下の種類またはシナリオに対処する方法がわかりません。これは私の場合はこれを返します。

相対のリソースが見つかりませんでした: フル パスの /examples/foo: http://127.0.0.1:8888/examples/foo

また

相対のリソースが見つかりませんでした: フル パスの /examples/bar/foo:http://127.0.0.1:8888/examples/bar/foo

必要なのは、マップされていないパスを処理できるようにして、エラー HTML ページなどを返して、これらのエラー テキストをブラウザーに表示しないようにすることです。

また、リクエストが次の場合: http://127.0.0.1:8888/I need to forward to http://127.0.0.1:8888/index.htmlautomatically. 今のところ、手動​​で index.html を末尾に配置する必要があります。

私の Resteasy リソースは、次のように構成または配線されています。

@Singleton
@Path("/")
public class MyRest {
    @GET
    @Path({hashcode})
    public Response getSomething(...){}

    @POST
    @Path("create")
    public Response createSomething(...){}
}
4

1 に答える 1

0

最も簡単な方法は、フィルターを登録して、200 (OK) 以外のエラー コードの応答を処理することです。または、次のようなものを web.xml に追加します。

<error-page>
    <error-code>404</error-code>
    <location>/ErrorPage.jsp</location>
</error-page> 

また、リクエストが次の場合: http://127.0.0.1:8888/I need to forward to http://127.0.0.1:8888/index.htmlautomatically. 今のところ、手動​​で index.html を末尾に配置する必要があります。

このモジュールを使用できますhttp://tuckey.org/urlrewrite/

WEB-INF/web.xml

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
        <param-name>confPath</param-name>
        <param-value>/WEB-INF/urlrewrite.xml</param-value>
    </init-param>
    <!--...omitted...-->
</filter>

<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

WEB-INF/urlrewrite.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
        PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
    <rule match-type="regex">
        <from>^/$</from>
        <to type="redirect">/index.html</to>
    </rule>
</urlrewrite>
于 2013-07-26T11:11:41.443 に答える