java乱码过滤器

1.先写一个HttpFillter类实现Fillter接口

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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public abstract class HttpFilter implements Filter {
private FilterConfig filterConfig;
public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
// 将 request 和 response 强转为子类
HttpServletRequest request=(HttpServletRequest) req;
HttpServletResponse response=(HttpServletResponse) res;
doFilter(request, response, chain);
}
public abstract void doFilter(HttpServletRequest request, HttpServletResponse response,
FilterChain chain) throws IOException, ServletException;
public void init(FilterConfig filterConfig) throws ServletException {
init();
this.filterConfig=filterConfig;


}
private void init() {
//让子类去实现

}
public void destroy() {
}


public FilterConfig getFilterConfig() {
return this.filterConfig;
}
}

2.再写一个类CharacterFilter,继承HttpFillter类

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
public class CharacterFilter extends HttpFilter {
@Override
public void doFilter(HttpServletRequest request,
HttpServletResponse response, FilterChain chain)
throws IOException, ServletException {
/* String requestedWith = request.getHeader("x-requested-with");     
     String type = request.getContentType();     
     if (requestedWith != null && "XMLHttpRequest".equals(requestedWith)     
     && null != type     
     && ("application/x-www-form-urlencoded".equals(type)||"application/x-www-form-urlencoded; charset=UTF-8".equals(type))) {           
     request.setCharacterEncoding("UTF-8");     
     response.setCharacterEncoding("UTF-8");     
     request.getParameterMap();     
     }  
                
*/

// 解决全站response乱码问题
response.setContentType("text/html;charset=utf-8");
//解决全站request中文参数乱码问题
request.setCharacterEncoding("utf-8");//只能解决post方式下的乱码
//对request进行包装,包装getParameter方法
Myrequest myrequest=new Myrequest(request);
chain.doFilter(myrequest, response);


}
}
class Myrequest extends HttpServletRequestWrapper{
public Myrequest(HttpServletRequest request) {
super(request);
// 将被包装对象给父类用
}
// 覆写 getParameter
@Override
public String getParameter(String name) {
//  调用被包装对象的方法获得表单参数
String value=super.getParameter(name);
if(value==null)
return null;
//通过父类调用被包装的对象的方法 获得请求方式
String method=super.getMethod();
if(!"get".equalsIgnoreCase(method)){
return value;
}
//是get方式
try {
value=new String(value.getBytes("iso-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
return Message(value);
}
public String Message(String message){
if(message==null){
return null;
}
char content[] = new char[message.length()];
    message.getChars(0, message.length(), content, 0);
    StringBuffer result = new StringBuffer(content.length + 50);
    for (int i = 0; i < content.length; i++) {
        switch (content[i]) {
        case '<':
            result.append("&lt;");
            break;
        case '>':
            result.append("&gt;");
            break;
        case '&':
            result.append("&amp;");
            break;
        case '"':
            result.append("&quot;");
            break;
        default:
            result.append(content[i]);
        }
    }
    return (result.toString());
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值