過濾器相關類的結構
spring mvc的org.springframework.web.filter包下的Java文件如下:
類的結構如下:
AbstractRequestLoggingFilter及其子類
AbstractRequestLoggingFilter類定義了兩個方法beforeRequest和afterRequest分別用於設定過濾前后執行的操作,它有三個子類,分別是CommonsRequestLoggingFilter、ServletContextRequestLoggingFilter和Log4jNestedDiagnosticContextFilter,這三個子類分別實現了各自的beforeRequest和afterRequest。其中,CommonsRequestLoggingFilter在過濾前后分別打印出一段debug的信息;ServletContextRequestLoggingFilter在過濾前后分別向日志文件中寫入一段日志信息,日志文件可由log4j.properties等指定;Log4jNestedDiagnosticContextFilter則將日志信息存儲到NDC中,NDC采用了一個類似棧的機制來push和pot上下文信息,每一個線程都獨立地儲存上下文信息,比如說一個servlet就可以針對 每一個request創建對應的NDC,儲存客戶端地址等信息。
CharacterEncodingFilter
該過濾器是配置編碼格式的,在web.xml中設置如下:
Xml代碼 收藏代碼 <filter> <filter-name>springCharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>springCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
HiddenHttpMethodFilter
html中form表單只支持GET與POST請求,而DELETE、PUT等method並不支持,spring3添加了一個過濾器,可以將這些請求轉換為標准的http方法,使得支持GET、POST、PUT與DELETE請求。可以配置如下: