過濾器實際上就是對web資源進行攔截, 做一些處理後再交給下一個過濾器或servlet處理通常都是用來攔截request進行處理的, 也可以對返回的response進行攔截處理
有兩種方式配置
一種是web.xml 方式配置
Archetype Created Web Application
@WebFilter(filterName = “FilterServlet”,
urlPatterns = “*.jsp”) //這個就是註解方式,像極了WebServlet("/xxx")
public class FilterServlet implements Filter {
應用場景
自動登陸
統一設置編碼格式
訪問權限控制
敏感字符過濾
配置Filter
可配置的屬性有那些
常用配置項
urlPatterns : 配置要攔截的資源
1.
以指定資源匹配. 列如 “/index.jsp”
2.
以目錄匹配. 列如 “/servlet/"
3.
以後綴名匹配, 列如 ".jsp”
4.
/* 通配符, 攔截所有的web資源
initParams配置初始化參數, 跟Servlet配置一樣
initParams = { @WebInitParam(name = “key”, value = “value”)}
dispatcherTypes配置攔截類型, 可配置多個. 默認爲DispatcherType.REQUEST
列如 :
dispatcherTypes = {DispatcherType.ASYNC, DIspatcherType.ERROR}
如果項目中使用了Spring框架,那麼,很多過濾器都不用自己來寫了,Spring爲我們寫好了一些常用的過濾器。下面我們就以字符編碼的過濾器 CharacterEncodingFilter爲例,來看一下Spring框架下,如果配置過濾器。
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>