首页 / JAVA / javaweb 用拦截器实现编码设置
javaweb 用拦截器实现编码设置
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javaweb 用拦截器实现编码设置,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2682字,纯文字阅读大概需要4分钟。
内容图文
使用Filter 设置编码简化Servlet的开发
1. 核心代码
package com.mscncn.jsd1404; import java.io.IOException; import java.io.UnsupportedEncodingException; 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.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; public class EncodingFilter implements Filter { private static String encoding; private static final String DEFAULT_CHARSET="UTF-8"; @Override public void destroy() { System.out.println("--------destroy---------"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("--------doFilter---------"); HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse=(HttpServletResponse)response; if("GET".equals(httpRequest.getMethod())){ EncodingHttpServletRequest wrapper = new EncodingHttpServletRequest(httpRequest, encoding); chain.doFilter(wrapper, response); }else{ httpRequest.setCharacterEncoding(encoding); httpResponse.setContentType("text/html;charset="+encoding); } } private static class EncodingHttpServletRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; public EncodingHttpServletRequest(HttpServletRequest request,String encoding) { super(request); this.request = request; } @Override public String getParameter(String name) { String value = request.getParameter(name); try { value = new String(value.getBytes("iso8859-1"), encoding); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return super.getParameter(name); } } @Override public void init(FilterConfig config) throws ServletException { System.out.println("--------init---------"); encoding = config.getInitParameter("encoding"); if(encoding==null||"".equals(encoding)) encoding=DEFAULT_CHARSET; } }
2. web.xml 中得配置
<!-- 设置全局的编码格式,针对get,post请求,默认编码为UTF-8 --> <filter> <filter-name>characterFilter</filter-name> <filter-class>com.mscncn.jsd1404.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterFilter</filter-name> <!-- 拦截所有的请求,为所有的请求设置编码 --> <url-pattern>/*</url-pattern> </filter-mapping>
原文:http://my.oschina.net/KingPan/blog/293268
内容总结
以上是互联网集市为您收集整理的javaweb 用拦截器实现编码设置全部内容,希望文章能够帮你解决javaweb 用拦截器实现编码设置所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。