根据网上的资料,我写了一个jsp用来产生验证码图片,web server为tomcat5,
<%@ page contentType="image/jpeg" import="javax.imageio.*,com.netstar.util.CheckCodeImage" pageEncoding="GBK"%>
<%CheckCodeImage image=new CheckCodeImage();
//设置页面不缓存
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
response.setDateHeader("expires", 0);
// 将认证码存入session
session.setAttribute("checkCode",image.srand);
// 输出图象到页面
ImageIO.write(image.creatImage(), "jpeg", response.getOutputStream());
%>
结果运行以后filter中如下这行报错: chain.doFilter(request, response);
错误信息为 getOutputStream() has already been called for this response
在网上搜索原因如下:
//关于采用文件流输出的方式处理:
//所有的%>后面不要换行,包括最后一个;
//因为Application Server在处理编译jsp时对于%>和<%之间的内容一般是原样输出,而且默认是PrintWriter,
//而你却要进行流输出:ServletOutputStream,这样做相当于试图在Servlet中使用两种输出机制,
//就会发生:getOutputStream() has already been called for this response的错误
//详细请见《More Java Pitfill》一书的第二部分 Web层Item 33:试图在Servlet中使用两种输出机制 270
//而且如果有换行,对于文本文件没有什么问题,但是对于其它格式,比如AutoCAD、Word、Excel等文件
//下载下来的文件中就会多出一些换行符0x0d和0x0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。
最后修改jsp文件,去掉多余的空格解决了问题。当然,通过jsp处理这些问题还是不太好,还是通过servlet来输出图片是最好的解决方法。
分享到:
相关推荐
生成验证码图片的jsp代码生成验证码图片的jsp代码
生成验证码 jsp 图片验证码 生成验证码 jsp 图片验证码
利用jsp生成图片验证码,没有用到servlet
JSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txt
网站登录或者注册时生成的验证码图片,很好用。
JSP 生成随机验证码图片(经典老代码)
使用Servlet生成验证码图片。 一个生成验证码图片的工具类。
最新JSP生成验证码最新JSP生成验证码最新JSP生成验证码最新JSP生成验证码最新JSP生成验证码最新JSP生成验证码
jsp生成动态验证码,jsp生成动态验证码。
在jsp登录页面生成验证码,并在登录的时候在后台进行验证码是否一致的比较。
一个可以生成验证码图片的jsp。
JSP中彩色验证码 注册验证码 中文验证码 图片验证码的生成
jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码jsp验证码代码
做好 备份 为以后 唤起 jsp随机生成验证码 记忆
随机生成验证码(JSP、Servlet)
生成验证码,生成验证码生成验证码,生成验证码
(jsp)动态生成验证码(jsp)动态生成验证码(jsp)动态生成验证码
使用Jsp生成图片验证码,并且验证用户输入的验证码是否正确
jsp生成中文字符的验证码 中文字符 中文验证码
jsp验证码图片例子jsp验证码图片例子jsp验证码图片例子