Post与Get提交使用过滤器解决中文乱码问题
2012-05-24 18:57
831 查看
public class TomcatFormFilter implements Filter {
/**
* Request.java 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所有的
* HttpServletRequest 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只需要用新的 Request
* 对象替换页面中的 request 对象即可.
*/
FilterConfig filterConfig;
class Request extends HttpServletRequestWrapper {
public Request(HttpServletRequest request) {
super(request);
}
/**
* 转换由表单读取的数据的内码. 从 ISO 字符转到 GBK.
*/
public String toChi(String input) {
try {
byte[] bytes = input.getBytes("ISO8859-1");
return new String(bytes, "GBK");
} catch (Exception ex) {
}
return null;
}
/**
* Return the HttpServletRequest holded by this object.
*/
private HttpServletRequest getHttpServletRequest() {
return (HttpServletRequest) super.getRequest();
}
/**
* 读取参数 -- 修正了中文问题.
*/
public String getParameter(String name) {
return toChi(getHttpServletRequest().getParameter(name));
}
/**
* 读取参数列表 - 修正了中文问题.
*/
public String[] getParameterValues(String name) {
String values[] = getHttpServletRequest().getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = toChi(values[i]);
}
}
return values;
}
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpreq = (HttpServletRequest) request;
if (httpreq.getMethod().equals("POST")) {
request.setCharacterEncoding("GBK");
} else {
request = new Request(httpreq);
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
}
XML中的配置代码
<filter>
<filter-name>charFilter</filter-name>
<filter-class>com.web.filter.TomcatFormFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>charFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
/**
* Request.java 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所有的
* HttpServletRequest 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只需要用新的 Request
* 对象替换页面中的 request 对象即可.
*/
FilterConfig filterConfig;
class Request extends HttpServletRequestWrapper {
public Request(HttpServletRequest request) {
super(request);
}
/**
* 转换由表单读取的数据的内码. 从 ISO 字符转到 GBK.
*/
public String toChi(String input) {
try {
byte[] bytes = input.getBytes("ISO8859-1");
return new String(bytes, "GBK");
} catch (Exception ex) {
}
return null;
}
/**
* Return the HttpServletRequest holded by this object.
*/
private HttpServletRequest getHttpServletRequest() {
return (HttpServletRequest) super.getRequest();
}
/**
* 读取参数 -- 修正了中文问题.
*/
public String getParameter(String name) {
return toChi(getHttpServletRequest().getParameter(name));
}
/**
* 读取参数列表 - 修正了中文问题.
*/
public String[] getParameterValues(String name) {
String values[] = getHttpServletRequest().getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = toChi(values[i]);
}
}
return values;
}
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpreq = (HttpServletRequest) request;
if (httpreq.getMethod().equals("POST")) {
request.setCharacterEncoding("GBK");
} else {
request = new Request(httpreq);
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
}
XML中的配置代码
<filter>
<filter-name>charFilter</filter-name>
<filter-class>com.web.filter.TomcatFormFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>charFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
相关文章推荐
- get/post 提交乱码问题解决(未使用过滤器)——Servlet解决
- 中文乱码问题解决,过滤器配置,get post提交乱码,filter,struts乱码,jsp乱码
- 解决springmvc的get提交和post提交的中文乱码问题
- Spring MVC 3 表单中文提交post请求和get请求乱码问题的解决方法
- JSP解决ajax使用$.get()方式提交中文出现乱码问题
- JSP中,AJAX使用POST方式提交中文乱码问题解决
- 解决问题:在使用springmvc的web.xml配置乱码拦截器之后接收的get或者post请求中文还是乱码
- 过滤器解决get和post方式提交的中文乱码
- JSP表单提交中文乱码解决方法(使用过滤器)(GET方法无效)
- 解决post、get提交中文乱码问题
- 解决servlet中输出中文到浏览器以及post、get两种提交方法乱码问题
- 解决用jquery的get或者post提交方式提交到struts2中的action中文乱码问题
- JSP中,AJAX使用POST方式提交中文乱码问题解决
- Get、Post请求中文乱码问题有效解决方法
- Get与Post提交与中文乱码解决
- 解决页面中文的乱码问题,使用过滤器为所有页面配置编码格式,解决大部分的中文乱码问题
- http协议4---GET方式和POST方式获取表单数据举例3(统一方式获取,解决中文乱码问题)
- GET/POST时中文乱码问题解决方法
- get和post方式提交中文乱码问题解决方案
- Http Post请求提交json格式数据工具类,解决请求参数中文乱码问题