您的位置:首页 > 编程语言 > Java开发

基于Spring解决jsp传值乱码问题 get post

2016-07-15 17:08 411 查看
基于Spring的org.springframework.web.filter.CharacterEncodingFilter来解决乱码问题

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 CharacterEncodingFilter extends org.springframework.web.filter.CharacterEncodingFilter {

private String encoding;

@Override
public void setEncoding(String encoding) {
this.encoding = encoding;
super.setEncoding(encoding);
}

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
if ("GET".equals(request.getMethod())) {
super.doFilterInternal(new EncodeRequest(request), response, filterChain);
} else {
super.doFilterInternal(request, response, filterChain);
}
}

class EncodeRequest extends HttpServletRequestWrapper {
private final String[] charsets = { "iso8859-1", "gbk", "gb2312", "utf-8", "ucs" };

@Override
public String getParameter(String param) {
String value = super.getParameter(param);
return convertCharset(value);
}

private String convertCharset(String value) {
String result = value;
try {
if (value != null) {
if (value != null) {
for (String charset : charsets) {
if (value.equals(new String(value.getBytes(charset), charset))) {
value = new String(value.getBytes(charset), encoding);
}
}
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}

public EncodeRequest(HttpServletRequest request) {
super(request);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息