Java通过过滤器统一编码格式
2017-04-26 17:10
295 查看
import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Map; 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; /** * 统一编码(内容大家根据自己的需求更改,这个仅供参考) * @author humf * */ public class EncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { //1.强转 HttpServletRequest request=(HttpServletRequest) req; HttpServletResponse response=(HttpServletResponse) resp; //2.放行 chain.doFilter(new MyRequest(request), response); } @Override public void destroy() { // TODO Auto-generated method stub } } class MyRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; private boolean flag=true; public MyRequest(HttpServletRequest request) { super(request); this.request=request; } @Override public String getParameter(String name) { if(name==null || name.trim().length()==0){ return null; } String[] values = getParameterValues(name); if(values==null || values.length==0){ return null; } return values[0]; } @Override /** * hobby=[eat,drink] */ public String[] getParameterValues(String name) { if(name==null || name.trim().length()==0){ return null; } Map<String, String[]> map = getParameterMap(); if(map==null || map.size()==0){ return null; } return map.get(name); } @Override /** * map{ username=[tom],password=[123],hobby=[eat,drink]} */ public Map<String,String[]> getParameterMap() { /** * 首先判断请求方式 * 若为post request.setchar...(utf-8) * 若为get 将map中的值遍历编码就可以了 */ String method = request.getMethod(); if("post".equalsIgnoreCase(method)){ try { request.setCharacterEncoding("utf-8"); return request.getParameterMap(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else if("get".equalsIgnoreCase(method)){ Map<String,String[]> map = request.getParameterMap(); if(flag){ for (String key:map.keySet()) { String[] arr = map.get(key); //继续遍历数组 for(int i=0;i<arr.length;i++){ //编码 try { arr[i]=new String(arr[i].getBytes("iso8859-1"),"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } flag=false; } //需要遍历map 修改value的每一个数据的编码 return map; } return super.getParameterMap(); } }
相关文章推荐
- java网络编程--解析通过web.xml文件控制利用过滤器实现编码格式步骤
- Servlet中通过过滤器实现统一的手动编码(解决中文乱码)
- java web项目js文件始终是乱码(剪切到记事本更改格式另存为也没用)关于编码过滤器的一种情况及解决方案
- 解析通过web.xml文件控制利用过滤器实现编码格式步骤
- 统一修改 java 文件编码格式
- 编写一个过滤器用于统一编码格式
- Servlet中通过过滤器实现统一的手动编码(解决中文乱码)
- JavaWeb之过滤器实现统一编码案例
- Servlet中通过过滤器实现统一的手动编码(解决中文乱码)
- eclipse 统一修改 java 文件编码格式
- 为了防止乱码,可以通过过滤器将整个应用编码统一
- Java支持的编码格式
- 建议SRT字幕编码统一为Unicode格式(附UTF-8编码区别)
- 用过滤器filter设置编码格式
- java 操作MySQL数据库的一个例子,包括表字段,类型,编码格式,表的所有值读取
- java实现获取文本文件的编码格式
- 用java程序将GBK字符转成UTF-8编码格式
- myeclipse 如何统一修改全部的java、jsp、js 等文件的编码
- 编码格式要统一,Asp.net把UTF-8编码转换为GB2312编码
- Java对日期格式的统一转换