0

正しい body/query/form/etc パラメータがリクエストに渡されていることを確認する簡単な方法を探しています。(また、不明な/不要なパラメータを警告するために)リクエストのコンテキストを実際のリソース クラスに挿入し、その方法ですべてのパラメータをチェックできることはわかっていますが、フィルタでこれを行う方法はありますか?

リソースクラス/メソッドを取得できるようにしますが、パラメーターを表示UriInfoExtendedUriInfoません。

Resourceクラス:

    @GET
    @Path("/{img_id}")
    @Produces("application/json")
    public Response getImgWithId(
        @PathParam("img_id") @DefaultValue("0") long imgId,
        @QueryParam("user_id") @DefaultValue("-1") long userId)   

ユーザーがパスパラメーターを渡すことを確認したいのですが、ユーザーがimg_id渡すことができる他の唯一のパラメーターはuser_id. その他のパラメーターは警告を受け取る必要があります。

ContainerRequestFilterここで、vals をチェックしてコンテキストを注入することで、このメソッドでそれを行うことができますが、アプリケーションへのエントリの実装でそれを行う方法はありますか?

4

1 に答える 1

1

com.sun.jersey.spi.container.servlet.ServletContainerをサブクラス化できると思います。

public class MyServletContainer extends
    com.sun.jersey.spi.container.servlet.ServletContainer {

@Override
public void service(javax.servlet.http.HttpServletRequest request,
        javax.servlet.http.HttpServletResponse response) {
    // do your check
    if (requestCheck()) {
        super.service(request, response);
    } else {
        //write your warning info in response...
    }
}

}

web.xmlの場合:

<servlet>
    <servlet-name>RESTService</servlet-name>
    <servlet-class>com.test.MyServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.chihuo.resource</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>RESTService</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
于 2012-09-12T14:54:21.663 に答える