java全站_javaweb开发之解决全站乱码

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.util.Map;

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;public classEncodingFilter implements Filter {

FilterConfig config= null;

String encode= "utf-8";

@Overridepublic voiddestroy() {

}

@Overridepublic voiddoFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

response.setContentType("text/html;charset="+encode); //--解决响应乱码

chain.doFilter(new MyHttpServletRequest((HttpServletRequest) request), response);//--包装改造request中和获取请求参数相关的方法解决请求参数乱码

}

@Overridepublic voidinit(FilterConfig filterConfig) throws ServletException {this.config =filterConfig;

encode= config.getInitParameter("encode");

}classMyHttpServletRequest extends HttpServletRequestWrapper {

HttpServletRequest request;publicMyHttpServletRequest(HttpServletRequest request) {

super(request);this.request =request;

}

@Overridepublic MapgetParameterMap() {

Map map =request.getParameterMap();try{for (Map.Entryentity : map.entrySet()) {

String[] value=entity.getValue();for (int i = 0; i < value.length; i++) {

value[i]= new String(value[i].getBytes("iso8859-1"),

encode);

}

}returnsuper.getParameterMap();

}catch(Exception e) {

e.printStackTrace();throw newRuntimeException(e);

}

}

@OverridepublicString[] getParameterValues(String name) {return (String[]) getParameterMap().get(name);

}

@OverridepublicString getParameter(String name) {return getParameterValues(name)[0]==null?null:getParameterValues(name)[0];

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值