错误代码:
Error 500--Internal Server Error
java.lang.NoSuchMethodError: javax.servlet.ServletResponse.setCharacterEncoding(Ljava/lang/String;)V
at com.ltd.blog.filter.CharEncoding.doFilter(CharEncoding.java:21)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6316)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
对应的过滤器代码:
public class CharEncoding extends HttpServlet implements Filter {
private FilterConfig filterConfig;
//Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
//Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
request.setCharacterEncoding("GBK");
filterChain.doFilter(request, response);
response.setCharacterEncoding("GBK");//这是第二十一行
} catch (Exception ex) {
ex.printStackTrace();
}
}
//Clean up resources
public void destroy() {
}
}
我用weblogic部署的,当把第二十一行给取消了的时候就没错了,当把第二十一行加进去的时候就出现了上面的错。。。估计是编码转换的时候出了问题,但是我不知道原因在哪儿,高手指点下。。。