跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

JSP 开发中过滤器filter设置编码格式的实现方法

JSP 开发中过滤器filter设置编码格式的实现方法我们知道为了避免提交数据的乱码问题,需要在每次使用请求之前设置编码格式。在你复制粘贴了无数次request.setCharacterEncoding("gb2312");后,有没有想要一劳永逸的方法呢?能不能一次性修改所有请求的编码呢? 用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;import javax.servlet.http.HttpServletResponse;

public class SetCharacterEncodingFilter implements Filter { //要实现Filter接口//存储编码格式信息private String encode = null;public void destroy(){

}

public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain) throws IOException,ServletException{

//转换HttpServletRequest request = (HttpServletRequest)req;HttpServletResponse response = (HttpServletResponse)resp;

/** 判断在web.xml文件中是否配置了编码格式的信息* 如果为空,则设置编码格式为配置文件中的编码格式* 否则编码格式设置为GBK*/ if(this.encode != null && !this.encode.equals("")){request.setCharacterEncoding(this.encode);response.setCharacterEncoding(this.encode);}else{request.setCharacterEncoding("GBK");response.setCharacterEncoding("GBK");}

/** 使用doFilter方法调用链中的下一个过滤器或目标资源(servlet或JSP页面)。

* chain.doFilter处理过滤器的其余部分(如果有的话),最终处理请求的servlet或JSP页面。

*/ chain.doFilter(request, response);}

public void init(FilterConfig config) throws ServletException{//获取在web.xml文件中配置了的编码格式的信息this.encode = config.getInitParameter("encode");}

}

在web.xml文件中的配置信息如下:

SetCharacterEncodingFilterssh.dlc.chp1.filter.SetCharacterEncodingFilter给参数和值设置名称和编码类型encodeGBKSetCharacterEncodingFilter*.do

以上就是过滤器filter设置编码格式的方法,如有疑问请留言或者到本站社区交流讨论,大家共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:js 数组 find,some,filter,reduce区别详解jsp filter 过滤器功能与简单用法示例angularJs中orderBy筛选以及filter过滤数据的方法angularjs过滤器--filter与ng-repeat配合有奇效JS中filter( )数组过滤器的使用

相关文章