大家都知道,在jsp裏亂碼是最讓人討厭的東西,有些亂碼出來的莫名其妙,給開發帶來很大困擾,但搞一個亂碼過濾器就一切都解決了,配置好之後,你並不需要在頁面裏進行轉碼之類的。
首先,寫一個過濾器類,如下:
- package filter;
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.http.HttpServletRequest;
- public class PageEncodingFilter implements Filter{
- private String encoding = "UTF-8";
- protected FilterConfig filterConfig;
- public void init(FilterConfig filterConfig) throws ServletException {
- this.filterConfig = filterConfig;
- //本過濾器默認編碼是UTF-8,但也可以在web.xml配置文件裏設置自己需要的編碼
- if(filterConfig.getInitParameter("encoding") != null)
- encoding = filterConfig.getInitParameter("encoding");
- }
- public void doFilter(ServletRequest srequset, ServletResponse sresponse,
- FilterChain filterChain) throws IOException, ServletException {
- HttpServletRequest request = (HttpServletRequest)srequset;
- request.setCharacterEncoding(encoding);
- filterChain.doFilter(srequset, sresponse);
- }
- public void destroy() {
- this.encoding = null;
- }
- }
然後,在web.xml裏配置,如下:
- <filter>
- <filter-name>Encoding</filter-name>
- <filter-class>filter.PageEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>Encoding</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
到這裏,一切就OK了,你可以放心的寫代碼了,而不會擔心出現亂碼了。