概述
在jsp页面编写中,在页面的跳转时必须设置编码属性,如request.setCharacterEncoding("GBK"),如果不设置页面编码,很可能会出现乱码。但是这种设置方法显然是不可取的,因为一个项目中jsp页面会有很多,每个页面都这样编写,会造成代码过多重复。那么,有什么的方法解决此问题呢?答案是利用servlet实现过滤功能。Servlet中,有一个接口javax.servlet.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;
public class EncodingFilter implements Filter{
private String charset;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding(this.charset);
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
this.charset=arg0.getInitParameter("charset");
}
}
以上代码,首先实现了Filter接口,并重写了doFilter()实现编码设置,重写init()方法实现编码参数的接收,然后在web.xml文件中配置Servlet路径,并设置初始参数:
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>filter.EncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
重新启动下Tomcat服务器,文件编码的过滤就配置成功了,在以后的jsp代码中,就不需要再去设置编码属性了。
最后
以上就是无私毛衣为你收集整理的servlet中,利用过滤器编码设置的全部内容,希望文章能够帮你解决servlet中,利用过滤器编码设置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复