get与post乱码过滤器
来源:互联网 发布:网络诈骗怎么举报 编辑:程序博客网 时间:2024/05/10 17:36
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;/** * 通用解决 get 和 post乱码过滤器 * * * */public class EncodingFilter implements Filter {@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {// 处理请求乱码HttpServletRequest httpServletRequest = (HttpServletRequest) request;HttpServletRequest myRequest = new MyRequest(httpServletRequest);// 处理响应乱码response.setContentType("text/html;charset=utf-8");chain.doFilter(myRequest, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}}// 自定义request对象class MyRequest extends HttpServletRequestWrapper {private HttpServletRequest request;private boolean hasEncode;public MyRequest(HttpServletRequest request) {super(request);// super必须写this.request = request;}// 对需要增强方法 进行覆盖@Overridepublic Map getParameterMap() {// 先获得请求方式String method = request.getMethod();if (method.equalsIgnoreCase("post")) {// post请求try {// 处理post乱码request.setCharacterEncoding("utf-8");return request.getParameterMap();} catch (UnsupportedEncodingException e) {e.printStackTrace();}} else if (method.equalsIgnoreCase("get")) {// get请求Map<String, String[]> parameterMap = request.getParameterMap();if (!hasEncode) { // 确保get手动编码逻辑只运行一次for (String parameterName : parameterMap.keySet()) {String[] values = parameterMap.get(parameterName);if (values != null) {for (int i = 0; i < values.length; i++) {try {// 处理get乱码values[i] = new String(values[i].getBytes("ISO-8859-1"), "utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}}}}hasEncode = true;}return parameterMap;}return super.getParameterMap();}@Overridepublic String getParameter(String name) {Map<String, String[]> parameterMap = getParameterMap();String[] values = parameterMap.get(name);if (values == null) {return null;}return values[0]; // 取回参数的第一个值}@Overridepublic String[] getParameterValues(String name) {Map<String, String[]> parameterMap = getParameterMap();String[] values = parameterMap.get(name);return values;}}
0 0
- get与post乱码过滤器
- Post与Get提交使用过滤器解决中文乱码问题
- 过滤器的全局get和post乱码
- 解决post和get乱码过滤器
- POST乱码与GET乱码
- post与get乱码问题
- 通过动态代理完全解决GET/POST乱码<java过滤器>
- jsp filter过滤器 解决post 以及get乱码问题
- 过滤器解决get和post方式提交的中文乱码
- 中文乱码问题解决,过滤器配置,get post提交乱码,filter,struts乱码,jsp乱码
- SpringMVC post与get请求乱码问题
- Post与Get方式提交乱码问题解决
- GET与POST的乱码问题解决
- post与get请求中文乱码问题
- springMVC解决GET与POST乱码
- GET与POST的区别,以及GET中文乱码
- get正常,post乱码?
- post/get乱码问题
- android design 新控件
- 好用的文件批量改名工具推荐
- 读取手机短信和自定义消息界面
- NSThread线程的常用属性和生命周期
- Spring(二)
- get与post乱码过滤器
- 【闲谈】应聘时要问HR的7个问题
- uva 12034 比赛排名
- 在类定义时指定泛型的上限
- NYOJ笨小熊问题 62题
- linux关于readlink函数获取运行路径的小程序
- The Skyline Problem
- 元数据(metadata)
- Android简易实战教程--第七话《在内存中存储用户名和密码》