这是异常
15:42:12,297 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to javax.servlet.http.HttpServletRequest
at com.sunnysoft.sehrs.common.filter.EncodingFilter.doFilter(EncodingFilter.java:26)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
这是filterpackage com.sunnysoft.sehrs.common.filter;import java.io.IOException;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.HttpServletResponse;import com.sunnysoft.sehrs.common.Constants;public class EncodingFilter implements Filter { public void destroy() {
// TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// System.out.println("start encoding...");
HttpServletRequest request = (HttpServletRequest) arg0;//这里是异常所说的第26行
HttpServletResponse response = (HttpServletResponse) arg1;
String currentURL = request.getRequestURI();
String targetURL = currentURL.substring(currentURL.indexOf("/", 1),
currentURL.length());
if (!"/".equals(targetURL) && !"/login.do".equals(targetURL)&& !"/user.do".equals(targetURL)
&& !"/SEHRS/common/jsp/sehrs_login.jsp".equals(targetURL)) { if (request.getSession().getAttribute(Constants.LOGIN_USER) == null) {
response
.sendRedirect("/SEHRS/SEHRS/common/jsp/sehrs_login.jsp");
return;
} } ((HttpServletRequest) arg0).setCharacterEncoding("GBK");
((HttpServletResponse) arg1).setCharacterEncoding("GBK");
// System.out.println("end encoding...");
arg2.doFilter(arg0, arg1);
} public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub }}
说个实话,这个异常来的有点莫名其妙,我都不知道这是怎么来的
15:42:12,297 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to javax.servlet.http.HttpServletRequest
at com.sunnysoft.sehrs.common.filter.EncodingFilter.doFilter(EncodingFilter.java:26)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
这是filterpackage com.sunnysoft.sehrs.common.filter;import java.io.IOException;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.HttpServletResponse;import com.sunnysoft.sehrs.common.Constants;public class EncodingFilter implements Filter { public void destroy() {
// TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// System.out.println("start encoding...");
HttpServletRequest request = (HttpServletRequest) arg0;//这里是异常所说的第26行
HttpServletResponse response = (HttpServletResponse) arg1;
String currentURL = request.getRequestURI();
String targetURL = currentURL.substring(currentURL.indexOf("/", 1),
currentURL.length());
if (!"/".equals(targetURL) && !"/login.do".equals(targetURL)&& !"/user.do".equals(targetURL)
&& !"/SEHRS/common/jsp/sehrs_login.jsp".equals(targetURL)) { if (request.getSession().getAttribute(Constants.LOGIN_USER) == null) {
response
.sendRedirect("/SEHRS/SEHRS/common/jsp/sehrs_login.jsp");
return;
} } ((HttpServletRequest) arg0).setCharacterEncoding("GBK");
((HttpServletResponse) arg1).setCharacterEncoding("GBK");
// System.out.println("end encoding...");
arg2.doFilter(arg0, arg1);
} public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub }}
说个实话,这个异常来的有点莫名其妙,我都不知道这是怎么来的
估计是类型转换问题吧,多改几次看下
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
时,
arg0 类型变为RequestFacade
arg1 类型变为 ResponseFacade
arg2 类型变为 ApplicationFilterChain
所以才有转换异常出现,有没有解决方法?
建议不要将其转换因为RequestFacade它既实现了HttpServletRequest也实现了ServletRequest
你直接用arg0不就OK了!想不通你为什么要去转换一下!!
FilterChain arg2) throws IOException, ServletException {
直接用HttpServletRequest 和HttpServletResponse 不行么?
Servlet.service() for servlet jsp threw exception
Getting java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to javax.servlet.http.HttpServletRequest