java生成二维码在jsp中显示

我写了一个生成二维码程序,然后在jsp页面调用方法,生成一个二维码图片放在项目中的images文件夹,然后在jsp把图片显示出来,<img src="XX">这样可以显示,二维码的内容应该是不一样的,因为会根据不同的编号生成一个二维码,每次运行完之后扫描images文件下的二维码图片内容都不一样,可是扫描jsp页面上的二维码内容都一样,这是怎么回事啊?
BarcodeFactory.encode(str,120, 120, "images/back3.jpg", "images/1.jpg");这是在jsp调用二维码方法生成图片,路径不对吗,为什么总报错Can't read input file!(images文件夹在webroot下),图片路径应该怎么写

第1个回答  推荐于2017-08-23
写一个servlet,,输出就是图片的二进制内容 ,<img src="barcode.servlet">本回答被网友采纳
第2个回答  2017-08-18
邮件已经发出,过几分钟后记得查收(可能在垃圾箱里边),收到后觉得还算满意请点下边的采纳通知我。如果10分钟后还没收到,请直接在本问题里追问我,我会再次发送。最后如果在采纳之余能加点分数,那就OK!
第3个回答  2014-09-24
难不成你每次都是去生成?

为什么不直接在java中以流的形式输出二维码?

没贴出代码来,没办法告诉你哪里有问题。追问

对,每次根据所选不同的编号生成二维码图片,显示就是用的img标签,流输出的方式是?

追答

验证码写过吗?一样的道理。都是以流的形式,输出类型为image

追问

没写过,能给个基本的格式吗,谢谢

追答response.setContentType("image/jpeg");//设置相应类型,告诉浏览器输出的内容为图片
response.setHeader("Pragma", "No-cache");//设置响应头信息,告诉浏览器不要缓存此内容
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expire", 0);

try {
        ImageIO.write(image, "JPEG", response.getOutputStream());//将内存中的图片通过流动形式输出到客户端,image是你的数据流,BufferedImage
  } catch (Exception e) {
            e.printStackTrace();
 }

追问

BarcodeFactory.encode(str,120, 120, "images/back3.jpg", "images/1.jpg");这是在jsp调用二维码方法生成图片,路径不对吗,为什么总报错Can't read input file!(images文件夹在webroot下),图片路径应该怎么写

追答

需要转成绝对路径.而不是相对路径.File加载文件必须使用绝对路径.

追问

不好意思,真的感谢你的回答,设置成绝对路径可以了,显示的时候应该怎么写路径呢,因为二维码内容每次都不一样,我这样写可以显示但扫描后内容都一样,tomcat中扫描出内容是正确的,应该怎么写才能使每次扫出来的内容不一样呢

追答

问得越来越不像是在说同一个问题了。
如果是在Servlet中,直接传入ID就行了。生成的内容,你根据ID来生成不就可以了?

本回答被网友采纳
相似回答