`
zengjinliang
  • 浏览: 307529 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JSP验证码出现异常的解决方法

阅读更多

在做图形验证码的时候随便从网上找了段代码,结果出现了这个异常,详细内容如下:

 

(4361578 ms) [http-8080-Processor25] ERROR: org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/xixibar].[jsp]#invoke : Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called 
for this response
    at org.apache.catalina.connector.Response.getWriter(Response.java:
599)
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:
195)
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:
124)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:
117)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:
182)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:
115)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:
75)
    at org.apache.jsp.image_jsp._jspService(image_jsp.java:
105)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:
97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
334)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:
264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:
527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:
80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:
684)
    at java.lang.Thread.run(Thread.java:
595)

 刚开始都没看明白怎么回事,后来找Google帮忙,找到如下解释:

 

在tomcat5下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),
没有妥善处理好的原因。
具体的原因就是
在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后
有一段这样的代码
finally ...{
      
if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
    }

这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和
response.getOutputStream()相冲突的!所以会出现以上这个异常。

然后当然是要提出解决的办法,其实挺简单的(并不是和某些朋友说的那样
--
将jsp内的所有空格和回车符号所有都删除掉),

在使用完输出流以后调用以下两行代码即可:
out.clear();
out 
= pageContext.pushBody();

 

照这个方法添加了两行代码,果然OK了!

分享到:
评论

相关推荐

    JSP验证码+自动刷新功能(推荐)

    JSP验证码+自动刷新功能,文件的image.jsp是负责生成验证码的,而display.jsp是负责显示效果.简单易用,平时会出现的异常都已经全部解决.

    jsp写的一个随机验证码

    在描述中提到,建议将验证码的生成逻辑放到Servlet中,因为Servlet可以更好地捕获和处理可能出现的异常,提供更健壮的错误处理。 4. **在JSP中调用Servlet**: 在JSP页面上,可以通过URL来引用Servlet。在本例中,`...

    验证通语音验证码接口JSP版+v3

    【验证通语音验证码接口JSP版+v3】是一款基于Java技术实现的语音验证码服务,它为Web应用提供了安全可靠的用户身份验证方式。在网络安全日益重要的今天,语音验证码接口扮演着关键角色,它能够防止恶意自动化的...

    Jsp生成页面验证码的方法[附代码]

    以上三个JSP页面放在和WEB-INF同级目录下,如果你放在不同的文件夹下,那么里面相关页面的路径自己稍作更改就可以了。...友情提示:Tomcat5以下版本会出现异常 详细出处参考:http://www.jb51.net/article/16168.htm

    Java使用SSM框架实现登录页面的验证码功能

    出现异常-->"); e.printStackTrace(); } } private String drawImg(ByteArrayOutputStream output) { String code = ""; // 随机产生4个字符 for (int i = 0; i ; i++) { code += randomChar(); } int ...

    tomcat6下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法

    1.在tomcat6.0下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法  在tomcat6.0下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有...

    jsp功能简单留言板

    这可以通过在JSP中使用条件语句和异常处理来实现,向用户返回适当的错误信息。 7. **安全性考虑**:尽管这是一个简单的示例,但安全问题不容忽视。例如,应防止SQL注入攻击,对用户输入进行适当的清理和验证,以及...

    java 用户注册登录验证码

    在Java编程语言中,用户注册和登录功能是任何应用程序的核心组成部分,而验证码的引入则可以增强系统的安全性,防止恶意的自动脚本或机器人进行非法操作。在这个项目中,"java 用户注册登录验证码"可能涉及以下几个...

    jsp登录系统(jsp)

    4. **异常处理**:正确处理可能出现的异常,如数据库连接问题、空指针异常等,确保系统稳定运行。 四、优化与扩展 1. **AJAX异步登录**:使用JavaScript和jQuery等技术,可以实现无刷新的登录验证,提高用户体验。...

    JSP实验二代码

    8. **错误处理和异常处理**:通过使用`<error-page>`指令和`try-catch`块来捕获和处理可能出现的错误和异常。 9. **部署与运行**:JSP应用需要部署到Web服务器(如Tomcat)上才能运行,通过修改服务器的配置文件...

    留言板系统jsp

    8. **异常处理**:使用try-catch块来捕获可能出现的异常,确保即使在出错时也能优雅地处理。 9. **页面跳转**:当用户登录成功后,通常会使用`response.sendRedirect()`方法将用户重定向到其他页面,如主留言板页面...

    [电子商务]JSP网上交易平台_jsp_shop

    【电子商务】JSP网上交易平台_jsp_shop 是一个基于JavaServer Pages(JSP)技术构建的电子商务解决方案。这个项目旨在提供一个完整的在线购物平台,让用户能够浏览商品、添加到购物车、进行结算,并实现后台管理功能...

    JSP+Servlet+JavaBean__数据库登录验证

    6. 错误处理:确保处理可能出现的异常,如网络问题、数据库连接错误等。 总的来说,这个项目提供了从客户端到服务器端的完整流程,涉及到了前端展示、后端处理和数据库操作,对于学习和理解JSP、Servlet和JavaBean...

    JSP网站投票系统 JSP网站投票系统

    - 对可能出现的异常进行捕获并处理,避免系统崩溃。同时,记录日志便于排查问题和监控系统运行状态。 10. **部署与维护**: - JSP应用通常部署在Tomcat、Jetty等Servlet容器上。定期备份数据库,更新系统以修复...

    JSP实现BBS论坛

    JSP中的`<form>`标签和动作方法(GET或POST)用于收集用户输入,并通过Servlet进行处理。 7. **AJAX异步通信**: 为了提升用户体验,论坛可能采用AJAX实现无刷新加载,如实时显示新帖、回帖等。这需要了解...

    jsp+Dreamweaver留言板系统

    JSP可以通过异常处理来捕获并显示错误信息,确保系统在出现问题时能够给出友好的提示。 总的来说,这个【jsp+Dreamweaver留言板系统】实例涵盖了Web开发中的基础概念和技术,包括前后端交互、数据库操作、表单处理...

    jsp数据库项目案例导航上

    9. 错误处理和异常捕获:在开发过程中,必须考虑程序可能出现的错误和异常,使用try-catch-finally语句块进行处理,确保程序的健壮性。 10. 安全性:JSP项目需要关注安全性问题,如SQL注入、XSS攻击、CSRF等,采取...

    jsp admin用户管理

    在这个"jsp admin用户管理"模块中,开发者已经创建了一个通用的解决方案,经过测试并证明是可行的。这个模块使用JavaServer Pages(JSP)技术,它是一种基于Java的服务器端脚本语言,用于生成动态网页内容。 **JSP...

    vote选票系统 JSP

    6. **错误处理与日志记录**:为了保证系统的稳定运行,需要对可能出现的异常进行捕获和处理,同时记录详细的日志信息,便于问题排查。 综上所述,"vote选票系统 JSP"结合了JAVA的强后端能力和JSP的动态网页特性,...

Global site tag (gtag.js) - Google Analytics