过滤器处理编码问题
来源:互联网 发布:手机小视频剪辑软件 编辑:程序博客网 时间:2024/06/04 12:36
过滤器:
/** * 编码处理统一写到这里(servlet中不需要再处理编码) */public class EncodingFilter implements Filter { // 过滤器业务处理方法:处理的公用的业务逻辑操作 @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { // 转型 final HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 一、处理公用业务 request.setCharacterEncoding("UTF-8"); // POST提交有效 response.setContentType("text/html;charset=UTF-8"); /* * 出现GET中文乱码,是因为在request.getParameter方法内部没有进行提交方式判断并处理。 * String name = request.getParameter("userName"); * * 解决:对指定接口的某一个方法进行功能扩展,可以使用代理! * 对request对象(目标对象),创建代理对象! */ HttpServletRequest proxy = (HttpServletRequest) Proxy.newProxyInstance( request.getClass().getClassLoader(), // 指定当前使用的累加载器 new Class[]{HttpServletRequest.class}, // 对目标对象实现的接口类型 new InvocationHandler() { // 事件处理器 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // 定义方法返回值 Object returnValue = null; // 获取方法名 String methodName = method.getName(); // 判断:对getParameter方法进行GET提交中文处理 if ("getParameter".equals(methodName)) { // 获取请求数据值【 <input type="text" name="userName">】 String value = request.getParameter(args[0].toString()); // 调用目标对象的方法 // 获取提交方式 String methodSubmit = request.getMethod(); // 直接调用目标对象的方法 // 判断如果是GET提交,需要对数据进行处理 (POST提交已经处理过了) if ("GET".equals(methodSubmit)) { if (value != null && !"".equals(value.trim())){ // 处理GET中文 value = new String(value.getBytes("ISO8859-1"),"UTF-8");//【如果value中出现dirtyData中数据,用****替换】 for (String data : dirtyData) { // 判断当前输入数据(value), 是否包含无效数据 if (value.contains(data)){ value = value.replace(data, "*****"); } } } } return value; } else { // 执行request对象的其他方法 returnValue = method.invoke(request, args); } return returnValue; } }); // 二、放行 (执行下一个过滤器或者servlet) chain.doFilter(proxy, response); // 传入代理对象 } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { }}
过滤器配置:
<!-- 编码处理过滤器配置 --> <filter> <filter-name>encoding</filter-name> <filter-class>cn.yy.a_loginFilter.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
0 0
- 过滤器处理编码问题
- java中用过滤器处理字符编码问题
- 通过Servlet过滤器处理Web的编码问题
- 过滤器_编码统一处理
- 过滤器解决中文编码问题
- 过滤器解决中文编码问题
- 全局过滤器解决编码问题
- 过滤器案例之编码问题处理、代理对象的使用、过滤器案例之无效数据的过滤
- Filter过滤器的应用--处理字符编码
- 过滤器处理中文乱码问题
- 过滤器处理跨域问题
- Filter过滤器处理乱码问题
- java中用过滤器解决字符编码问题
- 使用filter过滤器解决编码问题
- spring编码过滤器解决乱码问题
- 使用过滤器解决字符编码问题
- filter过滤器解决全局编码问题
- 使用Filter过滤器解决字符编码问题
- android屏幕适配详解
- 4.8日学习记录
- 如何把pdf转换成word文档格式
- poj 3254 Corn Fields【状态压缩dp-入门】
- eclipse安装ndk时,常出现的问题及错误
- 过滤器处理编码问题
- hdoj1241 Oil Deposits
- Android的View生命周期
- 剑指offer:把二叉树打印成多行
- 软键盘遮盖布局的解决方法
- WebService到底是什么?
- mac os终端颜色显示及vi配置 .
- 注册表损坏问题
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别