怎么我全部注释我自定义的Filter后,报错的时候还会有
spt.filter.servlet.EncodingFilter.doFilter(EncodingFilter.java:24)
我上一下我自定义的编码处理类吧:
package spt.filter.servlet;import java.io.IOException;
import java.io.UnsupportedEncodingException;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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;//filter all servlets.
@WebFilter("/*")
public class EncodingFilter implements Filter { public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) servletRequest;
//由于HttpServletRequest.setCharacterEncoding()对get方式不起作用,所以要单独编码.
if ("GET".equals(httpReq.getMethod()))
filterChain.doFilter(new HttpServletRequestEncodingWrapper(httpReq), servletResponse);
else {
//use utf encoding for none-get request.
httpReq.setCharacterEncoding("utf-8");
filterChain.doFilter(httpReq, servletResponse);
}
} public void init(FilterConfig filterConfig) throws ServletException { }
/**inner class dealing for 'GET' method.
* @author Administrator
*2015-1-27
*/
private class HttpServletRequestEncodingWrapper extends HttpServletRequestWrapper {
public HttpServletRequestEncodingWrapper(HttpServletRequest request) {
super(request);
} @Override
public String getParameter(String name) {
//encode with 'iso', and than decode with 'utf'.
String val = super.getRequest().getParameter(name);
if (null != val) {
try {
return new String(val.getBytes("iso8859-1"), "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return val;
}
} public void destroy() {
}}我想说的是,以前我也是用这个类,用的很正常,但是现在,物理是get请求,还是POST请求,都是报这样的错.
我开始以为是 Tomcat 7需要jdk7,但是后来我指定jdk为7后,也还是一样.
spt.filter.servlet.EncodingFilter.doFilter(EncodingFilter.java:24)
我上一下我自定义的编码处理类吧:
package spt.filter.servlet;import java.io.IOException;
import java.io.UnsupportedEncodingException;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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;//filter all servlets.
@WebFilter("/*")
public class EncodingFilter implements Filter { public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) servletRequest;
//由于HttpServletRequest.setCharacterEncoding()对get方式不起作用,所以要单独编码.
if ("GET".equals(httpReq.getMethod()))
filterChain.doFilter(new HttpServletRequestEncodingWrapper(httpReq), servletResponse);
else {
//use utf encoding for none-get request.
httpReq.setCharacterEncoding("utf-8");
filterChain.doFilter(httpReq, servletResponse);
}
} public void init(FilterConfig filterConfig) throws ServletException { }
/**inner class dealing for 'GET' method.
* @author Administrator
*2015-1-27
*/
private class HttpServletRequestEncodingWrapper extends HttpServletRequestWrapper {
public HttpServletRequestEncodingWrapper(HttpServletRequest request) {
super(request);
} @Override
public String getParameter(String name) {
//encode with 'iso', and than decode with 'utf'.
String val = super.getRequest().getParameter(name);
if (null != val) {
try {
return new String(val.getBytes("iso8859-1"), "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return val;
}
} public void destroy() {
}}我想说的是,以前我也是用这个类,用的很正常,但是现在,物理是get请求,还是POST请求,都是报这样的错.
我开始以为是 Tomcat 7需要jdk7,但是后来我指定jdk为7后,也还是一样.
http://bbs.csdn.net/topics/390984988 这个帖子能推荐下吗? 全部是我分享的android资源
后来发现第二天重启计算机,运行就正常.
后来发现第二天重启计算机,运行就正常.
原来如此,又学一招了。