过滤器解决中文乱码问题

package cn.itcast.demo1;

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;

/**

* Servlet Filter implementation class EncodingFilter

*/

public class EncodingFilter implements Filter {

/**

* Default constructor.

*/

public EncodingFilter() {

// TODO Auto-generated constructor stub

}

/**

* @see Filter#destroy()

*/

public void destroy() {

// TODO Auto-generated method stub

}

/**

* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)

*/

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

//1、创建被代理对象

//强转

final HttpServletRequest hsr = (HttpServletRequest) request;

//2、创建代理对象

HttpServletRequest proxyhsr = (HttpServletRequest) Proxy.newProxyInstance(hsr.getClass().getClassLoader(), hsr.getClass().getInterfaces(),new InvocationHandler() {

/**

* 处理程序

*

* 只需要增强getParameter方法

*/

@Override

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

if("getParameter".equals(method.getName())){

//增强

//分开解决乱码

//判断  请求方式

String m = hsr.getMethod();

if("GET".equalsIgnoreCase(m)){

//1、获取之前乱码值

String temp = (String) method.invoke(hsr, args);

//2、处理乱码

temp = new String(temp.getBytes("iso8859-1"),"utf-8");

return temp;

}else if("POST".equalsIgnoreCase(m)){

hsr.setCharacterEncoding("utf-8");

return method.invoke(hsr, args);

}else{

//如果是其他提交方式,不处理乱码,直接运行

return method.invoke(hsr, args);

}

}else{

//如果是其他方法,直接运行,不增强

return method.invoke(hsr, args);

}

}

});

chain.doFilter(proxyhsr, response);

}

/**

* @see Filter#init(FilterConfig)

*/

public void init(FilterConfig fConfig) throws ServletException {

// TODO Auto-generated method stub

}

}

时间: 2024-08-27 21:45:01

过滤器解决中文乱码问题的相关文章

Struts用Filter过滤器解决中文乱码

(1)首先看一下项目的结构:(就是com.lc.filter下的MyFilter.java) (2)其中MyFilter.java的代码如下: package com.lc.filter; //ctrl+shift+o 导入各种包 即可 /** * 过滤器的使用方法 * 在创建类的时候 要用到接口Filter * 要自己在web.xml文件中配置过滤器 * @author xuliugen * */ public class MyFilter extends HttpServlet implem

配置过滤器解决中文乱码问题

<!-- 字符集过滤器 -->      <filter>          <filter-name>Charset</filter-name>          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>            <init-param>              <param

使用过滤器解决中文乱码

知识点回顾 (1)request.setCharacterEncoding() 这个方法是设置请求体的字符编码,它告诉java应该用什么格式解码. 这种方式只对POST请求有效,因为POST请求的参数在请求体中. (2)response.setCharacterEncoding()  设置响应的字符编码 (3)URIEncoding     server.xml文件中Connector元素的URIEncoding属性指定解码URI的字符编码,默认是ISO-8859-1 GET请求的时候,请求参数

过滤器解决中文乱码

@WebServlet(urlPatterns = "/form") public class FormServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("

解决中文乱码过滤器

解决中文乱码过滤器 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;

SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】

配置web.xml(struts2的过滤器.spring监听器.解决Hibernate延迟加载问题的过滤器.解决中文乱码的过滤器) <!-- 解决中文乱码问题 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-c

java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)

转载地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可以使用Decorator(装饰器)模式对request.response对象进行包装,再把包装对象传给目标资源,从而实现一些特殊需求. 一.Decorator设计模式 1.1.Decorator设计模式介绍 当某个对象的方法不适应业务需求时,通常有2种方式可以对方法进行增强: 编写子类,覆盖需增强的

springmvc:配置解决中文乱码的过滤器

在web.xml中配置以下内容: <!--配置解决中文乱码过滤器--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--初始化参数--> <init-param> &

Web---演示servlet技术(servlet生命周期),解决中文乱码问题

本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼?(^?^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Tra