编写一个过滤器用于统一编码格式
2017-07-09 21:40
218 查看
package com.itheima.c_proxy.encoding; import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; 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 EncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { //1.强转 final HttpServletRequest request=(HttpServletRequest) req; HttpServletResponse response=(HttpServletResponse) resp; //创建代理对象 HttpServletRequest requestProxy=(HttpServletRequest) Proxy.newProxyInstance(HttpServletRequest.class.getClassLoader(), request.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if("getParameter".equals(method.getName())){ //获取请求方式 String m = request.getMethod(); if("get".equalsIgnoreCase(m)){ String s = (String) method.invoke(request, args);//相当于 request.getParameter(args); return new String(s.getBytes("iso8859-1"),"utf-8"); }else if("post".equalsIgnoreCase(m)){ request.setCharacterEncoding("utf-8"); return method.invoke(request, args); } } //不需要加强的方法 return method.invoke(request, args); } }); //2.放行 chain.doFilter(requestProxy, response); } @Override public void destroy() { } }
相关文章推荐
- Java通过过滤器统一编码格式
- servlet从服务器磁盘文件读出到浏览器显示,中文乱码问题,不要忘记在输入流和输出流都要设置编码格式,否则一个地方没设置不统一就会各种乱码
- 一个好用的中文编码过滤器的代码
- 题目:使用命令行参数编写一个程序,其功能是将任意一个正整数m变换为指定的n 进制数串输出。命令行的格式为:
- 3006.脚本作业―l201.4.0编写一个脚本用于检测IP地址(递进版4)
- WebM影片格式 一个开放、免费的媒体文件格式用于网页
- 3008.脚本作业―l201.6.0编写一个脚本用于检测IP地址(递进版6)
- Servlet中通过过滤器实现统一的手动编码(解决中文乱码)
- java 操作MySQL数据库的一个例子,包括表字段,类型,编码格式,表的所有值读取
- 建议SRT字幕编码统一为Unicode格式(附UTF-8编码区别)
- 3004.脚本作业―l201.2.0编写一个脚本用于检测IP地址(递进版2)
- 编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名及8个字符的电话号码,并以一定的格式显示出来
- 网页编码统一为utf-8格式
- SQL : 一个存储过程,用于向指定的MS SQL Table中导入CSV 格式的文件数据
- 解析通过web.xml文件控制利用过滤器实现编码格式步骤
- 用BCB编写一个改写oracle日期显示格式的程序
- web编码问题 有乱码 应统一编码 设置一个filter
- 使用C#编写一个用于客户端打印的ActiveX控件(1)
- 判断一个文本文件的编码格式
- 3007.脚本作业―l201.5.0编写一个脚本用于检测IP地址(递进版5)