Posted on 2007-12-05 09:22
陜西BOY 閱讀(1186)
評論(1) 編輯 收藏
前段時間很忙,項目比較緊,都沒有時間寫這個了,今天就寫個我在項目中應用的一個Filter,這個過濾器負責把定義的文件夾下的所有頁面采用gbk編碼格式,并且每個頁面都不保留緩存。如此的話就不用在所有的業務類里面處理中文問題,降低了代碼冗余,節約了開發時間。下面的這個類就負責這個功能。
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;
import javax.servlet.http.HttpServletResponse;/**
*@author 郝學武
*設置字符過濾
*/
public class ActionFilter implements Filter
{
private String encoding = null; //定義字符編碼,緩存,和Local
private String cache = null;
private String forceLocal;
public void init(FilterConfig filterconfig) throws ServletException //初始化上面的3個變量,分別從web.xml取得值
{
this.encoding = filterconfig.getInitParameter("encoding");
this.cache = filterconfig.getInitParameter("cache");
this.forceLocal = filterconfig.getInitParameter("forceLocal");
}
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException //實現緩存存留,字符過濾---
{
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
if (this.cache != null && "false".equals(this.cache.toLowerCase()))
{
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragrma","no-cache");
response.setDateHeader("Expires",0);
}
if ((forceLocal == null) || (forceLocal.length() <=0) || (forceLocal.equalsIgnoreCase("no"))) {}
else {
}
request.setCharacterEncoding(this.encoding);
filterChain.doFilter(servletRequest, servletResponse);
return;
}
/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#destroy()
*/
public void destroy() //銷毀過濾
{
// TODO Auto-generated method stub
}
}
在web.xml中添加filter
<filter>
<filter-name>WebFilter</filter-name>
<filter-class>
com.cnc.yellow.struts.advertisement.ActionFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
<init-param>
<param-name>cache</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>forceLocal</param-name>
<param-value>no</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>WebFilter</filter-name>
<url-pattern>/aaa/*</url-pattern> //設置作用域為webroot下aaa文件夾下所有頁面
</filter-mapping>
好了,大家把上面的代碼拷貝到你的項目中,試一下就可以,應該沒什么問題,得工作了,今天就到這