【问题标题】:Prematch filters in Java resteasyJava resteasy 中的预匹配过滤器
【发布时间】:2014-09-25 22:40:20
【问题描述】:

我有一个这样的代码块。但它似乎没有找到在@Path("resource-name") 中指定了小写 url 的资源方法。如何在资源或控制器上的方法匹配之前应用此过滤器?

public class LowerCaseRequestFilter implements Filter {

    @Inject
    public LowerCaseRequestFilter() {
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(@Nonnull ServletRequest servletRequest, @Nonnull ServletResponse servletResponse, @Nonnull FilterChain filterChain) throws IOException, ServletException {

        final HttpServletRequest req = (HttpServletRequest) servletRequest;
        final String requestUrl = req.getRequestURI();
        final String newUrl = requestUrl.toLowerCase();
        req.getRequestDispatcher(newUrl).forward(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }

【问题讨论】:

    标签: java rest servlet-filters resteasy


    【解决方案1】:

    如果您使用的是 JAX-RS 2,则可以使用 @PreMatching ContainerRequestFilter

    @Provider
    @PreMatching
    public class LowerCaseFilter implements ContainerRequestFilter {
    
        @Override
        public void filter(ContainerRequestContext requestContext) throws IOException {
            String newUri = requestContext.getUriInfo().getRequestUri().toString().toLowerCase();
            requestContext.setRequestUri(URI.create(newUri));
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      相关资源
      最近更新 更多