@JFinal 你好,想跟你请教个问题:
在jfinal之前放置servlet会报java.lang.IllegalStateException: Committed,页面显示正常,只是会报错,请问怎么解决呢
java.lang.IllegalStateException: Committed
at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1136)
at org.eclipse.jetty.server.Response.sendError(Response.java:314)
at org.eclipse.jetty.server.Response.sendError(Response.java:416)
at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:486)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336)
at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:82)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:662)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
使用Handler处理一下此请求,直接过滤掉,不走jfinal内部。可能的原因是servlet中关闭了HttpServletResponse获得的writer,而jfinal中又再次使用该writer如果想走jfinal中转下呢,主要处理路径<divclass="ref">
<atarget="_blank"rel="nofollow"><aclass='referer'target='_blank'>@JFinal 我把jfinal的JFinalFilter这个类的最后改掉就好了
StringreqUrl=request.getRequestURI();
intindex=reqUrl.indexOf("servlet");
intindex2=reqUrl.indexOf("services");
if(isHandled[0]==false&&(index!=-1||index2!=-1))
chain.doFilter(request,response);
凡是servlet的,这个chain继续,走jfinal的,chain就断掉,这样改会有别的问题么?
<atarget="_blank"rel="nofollow"><aclass='referer'target='_blank'>@JFinal 我把jfinal的JFinalFilter这个类的最后改掉就好了
StringreqUrl=request.getRequestURI();
intindex=reqUrl.indexOf("servlet");
intindex2=reqUrl.indexOf("services");
if(isHandled[0]==false&&(index!=-1||index2!=-1))
chain.doFilter(request,response);
凡是servlet的,这个chain继续,走jfinal的,chain就断掉,这样改会有别的问题么?
@<atarget="_blank"rel="nofollow">pandyyan 处理过了,亲,现在不是那个层面的问题
publicclassSkipHandlerUseServletextendsHandler{
/**
过滤掉servlet和webservice的请求
/
publicvoidhandle(Stringtarget,HttpServletRequestrequest,
HttpServletResponseresponse,boolean[]isHandled){
intindex=target.indexOf("servlet");
intindex2=target.indexOf("services");
if(index==-1&&index2==-1){
nextHandler.handle(target,request,response,newboolean[]{true});
}
}
}
是集成axis时候的问题,servlet的不报这个错,走jfinal的都报这个错
上边的还有外加jfinal源码中的JfinalFilter中
StringreqestUrl=request.getRequestURI();
intindex=reqestUrl.indexOf("servlet");
intindex1=reqestUrl.indexOf("services");
intindex2=reqestUrl.indexOf("druid");
//还有通过css,和js等静态请求
booleanisStaticResource=isStatic(target);
if(isHandled[0]==false&&(index+index1+index2>-3)||isStaticResource)
chain.doFilter(request,response);