今天在使用SSH框架下使用osCache,結果配置好了,出現了中文亂碼,我認爲我寫的SSH框架應該不會出現亂碼的低級出錯吧!經過一番調試之後終於發現了問題。原來是web.xml中配置出現了問題。
oscache配置如下:
首先下載oscache的jar包,我使用的是2.3的版本,解壓壓縮文件,並且把jar包配置到項目的lib目錄下。
然後在解壓後的文件中找到、etc/oscache.properties文件,然後把它放在項目的src目錄下面,使用默認內容就行,(如果你想要其他配置可以查看官方文檔,本文在此不做詳細介紹)。
再次,配置項目的web.xml文件,加入
- <filter>
- <filter-name>CacheFilter</filter-name>
- <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
- <init-param>
- <param-name>time</param-name>
- <param-value>60</param-value>
- </init-param>
- <init-param>
- <param-name>scope</param-name>
- <param-value>application</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>CacheFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
注意在配置中我使用的是application級別的緩存,在配置中請注意,如果你在xml文件中設置spring CharacterEncodingFilter,你必須把這個filter放在oscache filter的前面,否則會產生中文亂碼問題,
- <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>
再次在spring中配置使用oscache.(因爲我的hibernate配置上是集成到spring的applicationContext.xml中,如果你的是分開寫的可以直接在hibernate 中配置)。
oscache在SSH框架下配置成功。
然後就ok了!!!!