使用Restlet进行过滤的正确方法

时间:2015-02-10 22:11:01

标签: java restlet

这是我需要修复的过滤器代码。过滤器背后的想法是,如果找到一些查询字符串。处理它,无需返回或处理链或类似的东西。但是,当没有找到查询字符串时,应该提供原始请求,例如,获取/放置/更新/删除请求。

    @Override
    protected int doHandle(Request request, Response response) {
        HttpServletRequest servletRequest = ServletUtils.getRequest(request);
        HttpServletResponse servletResponse = ServletUtils.getResponse(response);
        String query = servletRequest.getQueryString();
        LOG.info("Query=" + query);
        if(query != null && query.contains(ESCAPED_FRAGMENT_FORMAT1)){
            // TODO: return a HTML String, no need to go down the chain.
            return STOP;
        } else {
            // TODO: need to execute the original request
            return SKIP;
        }
        return CONTINUE;
    }

这里的问题是我不完全确定在此代码中返回STOP,SKIP和CONTINUE的位置以实现我的需要。

1 个答案:

答案 0 :(得分:1)

  • CONTINUE:表示请求处理应该正常继续。
  • STOP:表示请求处理应停止并返回过滤器的当前响应。
  • SKIP:表示在beforeHandle(Request,Response)方法之后,请求处理应跳过doHandle(Request,Response)方法继续afterHandle(Request,Response)方法。 doHandle方法通过将调用分发到下一个Restlet来处理调用。

您可以在javadocs中找到所需的解释: http://restlet.com/technical-resources/restlet-framework/javadocs/2.3/jse/api/org/restlet/routing/Filter.html

我希望这会对你有所帮助。