解析通过web.xml文件控制利用过滤器实现编码格式步骤
过滤类篇:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.ServletRequest;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
//实现javax.servlet.Filter类,强制实现3个方法
public class SetCharacterEncodingFilter implements Filter
{
String encoding = "";
//初始化方法
public void init(FilterConfig filterConfig) throws ServletException
{
//从web.xml 文件中获取编码格式,参数名为’encoding’
encoding = filterConfig.getInitParameter("encoding");
if(encoding==null){//判断,若编码格式为空,赋默认值为GBK
encoding = "GBK";
}
}
//执行操作方法
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException
{
//判断,若项目中没有设置编码格式时,给予设置
if (request.getCharacterEncoding() == null)
{
//将编码格式设置成获取的参数值
request.setCharacterEncoding(encoding);
}
//设置response的编码格式,
response.setContentType("text/html; charset="+encoding);
//将程序继续运行下去
chain.doFilter(request, response);
}
//销毁方法
public void destroy()
//将编码格式变量清空
{ this.encoding = null; }
}
Web.xml文件篇:
<filter>
<filter-name>aa</filter-name>
//filter.SetCharacterEncodingFilter为过滤器类路径
<filter-class>filter.SetCharacterEncodingFilter</filter-class>
<init-param>//配置过滤器参数
<param-name>encoding</param-name>//参数名
<param-value>GBK</param-value>//参数值
</init-param>
</filter>
<filter-mapping>
<filter-name>aa</filter-name>
<url-pattern>/*</url-pattern>//过滤器匹配的范围
</filter-mapping>