过滤器--------解决乱码问题
package com.lovo.util;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;
/**
* 字符集转换过滤器
*
* 过滤器类实现Filter接口
*
*/
public class CharSetFilter implements Filter{
/**
* 转换包装请求资源编码集,
* 包装器的内部类,重写getParameter方法 */
public class StrPackage extends HttpServletRequestWrapper {
//私有的HttpServlet 对象
private HttpServletRequest request = null;
//构造方法
public StrPackage(HttpServletRequest request) {
super(request);
this.request = request;
}
/**
* 请求字符集转换,
*/
public String getParameter(String str) {
//界面输入的字符串
String changeStr = this.request.getParameter(str);
//如果为空的话,返回一个空
if(changeStr==null){
return null;
}
//不为空的话做字符串转换
//定义一个字节数组
byte[] by;
try {
//得到当前字符串的编码集
by = changeStr.getBytes("ISO8859-1");
//将界面上的字符串的编码集转化为utf-8
changeStr = new String(by,"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return changeStr;
}
}
//销毁时触发
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
//封装设置响应编码字符集
arg1.setContentType("text/html;charset=utf-8");
/**
* 封装请求编码集
*/
HttpServletRequest request = (HttpServletRequest)arg0;
//得到一个请求编码包装对象(转换请求编码集)
StrPackage newRequest = new StrPackage(request);
//继续向下运行,(新的包装过的请求对象)
arg2.doFilter(newRequest, arg1);
}
//初始化时触发
public void init(FilterConfig arg0) throws ServletException {
}
}
页:
[1]