2014-05-14 55 views
0

是否可以在應用程序或期望的映射中對每個POST(或HTTP動作的組合)應用過濾器?針對特定請求方法的javax.servlet.Filter

實施例的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] /富/
  • [GET] /富/:ID
  • [POST] /富
  • [POST] /酒吧
  • [PUT] /棒/:ID

例如,

我可以將這個過濾器JUST應用到POST的URL嗎?

動機:只讓資源的所有者修改它們,但讓每個人都使用它們。

回答

1

檢查要求methodFilter如下所示,做任何你想做的事情。

@Override 
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, 
     FilterChain filterChain) throws ServletException, IOException { 
    HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; 

    String method = httpServletRequest.getMethod(); //post or get 

} 
+0

這個問題沒有被問到......我想避免爲了簡單而做這個。 – amarseillan

+0

根據URL和方法,您可以將請求轉發到下一級或發送錯誤頁面。 – Braj