【问题标题】:javax.servlet.Filter for specific request methodsjavax.servlet.Filter 用于特定请求方法
【发布时间】:2014-07-02 23:57:43
【问题描述】:

是否可以将过滤器应用于应用程序中的每个 POST(或 HTTP 操作的组合)或所需的映射?

示例 web.xml:

<filter>
    <display-name>AccessFilter</display-name>
    <filter-name>AccessFilter</filter-name>
    <filter-class>foo.bar.AccessFilter</filter-class>
</filter>
    <filter-mapping>
    <filter-name>AccessFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

我有一个映射以下 URL 的控制器:

  • [GET] /foo/
  • [GET] /foo/:id
  • [POST] /foo
  • [POST] /bar
  • [PUT] /bar/:id

例如。

我可以将此过滤器仅应用于作为 POST 的 URL 吗?

动机:只让资源的拥有者修改,让大家消费。

【问题讨论】:

    标签: java http servlets filter


    【解决方案1】:

    如下所示,在Filter 中检查请求method,然后做任何你想做的事情。

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
            FilterChain filterChain) throws ServletException, IOException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
    
        String method = httpServletRequest.getMethod(); //post or get
    
    } 
    

    【讨论】:

    • 这个问题没有问对......为了简单起见,我想避免这样做。
    • 基于 URL 和方法,您可以将请求转发到下一个级别或仅发送错误页面。
    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多