在java中生成的二维码不存到磁盘里要直接输出到页面上,这就需要把生成的二维码直接以流的形式输出到页面上,我用的是myeclipse 和 tomcat

它的原理是:在加载页面时,根据img的src(code.jspx)找到对应的servlet(CodeServlet),在servlet中编辑二维码中的内容,调用生成二维码的类EncoderHandler中的encoderQRcoder方法

1.首先要导入jar包(将jar包放到lib目录下)

导入jar包的名称为:Qrcode_swetake

下载jar包的连接http://download.csdn.net/detail/huakaihualuo1223/4527504

2.在java中生成二维码并以流的形式输出

package com.kaishengit.util;import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;import com.swetake.util.Qrcode;public class EncoderHandler {public void encoderQRCoder(String content, HttpServletResponse response) {try {Qrcode handler = new Qrcode();handler.setQrcodeErrorCorrect('M');handler.setQrcodeEncodeMode('B');handler.setQrcodeVersion(7);System.out.println(content);byte[] contentBytes = content.getBytes("UTF-8");BufferedImage bufImg = new BufferedImage(80, 80, BufferedImage.TYPE_INT_RGB);Graphics2D gs = bufImg.createGraphics();gs.setBackground(Color.WHITE);gs.clearRect(0, 0, 140, 140);//设定图像颜色:BLACKgs.setColor(Color.BLACK);//设置偏移量  不设置肯能导致解析出错int pixoff = 2;//输出内容:二维码if(contentBytes.length > 0 && contentBytes.length < 124) {boolean[][] codeOut = handler.calQrcode(contentBytes);for(int i = 0; i < codeOut.length; i++) {for(int j = 0; j < codeOut.length; j++) {if(codeOut[j][i]) {gs.fillRect(j * 3 + pixoff, i * 3 + pixoff,3, 3);}}}} else {System.err.println("QRCode content bytes length = " + contentBytes.length + " not in [ 0,120 ]. ");}gs.dispose();bufImg.flush();//生成二维码QRCode图片ImageIO.write(bufImg, "jpg", response.getOutputStream());} catch (Exception e) {e.printStackTrace();}}
}

  3.建立一个servlet

package com.kaishengit.web;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.kaishengit.util.EncoderHandler;public class CodeServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest requset, HttpServletResponse response)throws ServletException, IOException {String content = "姓名:maysnow 电话:123687495";EncoderHandler encoder = new EncoderHandler();encoder.encoderQRCoder(content, response);}}

4在web.xml中的配置

<servlet><servlet-name>CodeService</servlet-name><servlet-class>com.kaishengit.web.CodeServlet</servlet-class></servlet><servlet-mapping><servlet-name>CodeService</servlet-name><url-pattern>/code.jspx</url-pattern></servlet-mapping>

5.jsp中的img(其中img的src为对应的CodeServlet的url)

<img  style="height:80px;width:80px" src="code.jspx" />

6.页面中生成的二维码

  

  

  

转载于:https://www.cnblogs.com/lixiaozhe/p/3176574.html

在java中生成二维码,并直接输出到jsp页面相关推荐

  1. 在Vue中生成二维码扫描在手机上跳转页面

    使用方法: 安装vue-qr npm install vue-qr --save 在components新建一个vue组件,eg:vueQr.vue (以下为组件完整代码) <template& ...

  2. Vue中生成二维码的一种方式—vue-qr

    Vue中生成二维码的一种方式-vue-qr vue实现二维码生成(vue + vue-qr)

  3. java实现生成二维码及扫码登录

    java实现生成二维码及扫码登录 1. 场景描述 2. 实现思路 3. 代码实现过程 3.1 pom.xml 3.2 二维码工具类 3.3 生成二维码并下载为图片 3.4 扫码登录 1. 场景描述   ...

  4. Java解析生成二维码-log

    Java解析生成二维码 1.pom.xml依赖 <!-- 引入二维码相关的依赖--><dependency><groupId>com.google.zxing< ...

  5. 转载:在微信小程序中 生成二维码

    目录 转载: weapp-qrcode-canvas-2d 仓库地址 测试环境 使用 安装方法1:直接引入 js 文件 安装方法2:npm安装 安装完成后调用 例子1:没有使用叠加图片 例子2:使用叠 ...

  6. C#中生成二维码(QR码)与读取二维码内容

    使用开源类库ZXing.dll可以在C#中生成二维码和解析二维码为指定的字符串(含url) 新建windows窗体应用程序QRCodeDemo,.net 4.5,将默认的Form1重命名为FormQu ...

  7. Andoid开发中生成二维码

    2019独角兽企业重金招聘Python工程师标准>>> 第一步: 确定我们二维码的位置,即是在我们应用的哪个页面的哪个位置,简单讲就是用一个ImageView把二维码展示出来,我们就 ...

  8. Java中识别二维码并且提高二维码的识别率

    我们在Java开发的时候,发现对二维码的识别是不足的.所以我们需要提高识别率. 第一步.识别图片二维码.准备相应的jar包.我们在gradle+idea中开发. compile group: 'com ...

  9. Java端生成二维码

    项目中功能要求生成一个二维码来访问某地址,特封装一个二维码生成工具类 使用开源的一维/二维码图形处理库zxing GayHub地址:https://github.com/zxing/zxing 1.引 ...

最新文章

  1. TLS1.3 协议的Golang 实现——ClientHello
  2. [C#]打包项目[转]
  3. 一起手写Vue3核心模块源码,掌握阅读源码的正确方法
  4. 亿些模板【数据结构】
  5. 泽西岛的JSON模式生成
  6. 真格量化-隐含波动率购买
  7. php开源mvccms_轻松理解MYSQL MVCC 实现机制
  8. mysql 1524_MySQL不允许用户登录:错误1524
  9. 优先队列实现原理分析
  10. 同一个事务里面对同一条数据做2次修改_[玩转MySQL之九]MySQL事务ACID[2-1]ACID详解...
  11. Redis多线程执行 -- 过程分析
  12. 系统工程利用python求解可达矩阵
  13. SwiftUI4 iOS16 新特性之 WeatherKit免费天气API使用教程(WWDC 2022教程含源码)
  14. 微信公众平台、微信公众平台.小程序、微信.开放平台
  15. 笔记本win10开启wifi共享wifi
  16. 长沙.NET技术社区正式成立
  17. Mac运行ftp报错Error: JAVA_HOME is not defined correctly.
  18. GIS空间分析(二)—— 空间分析的历史与发展
  19. css控制文本超出省略(单行、两行、多行)
  20. 投影仪硬件边缘融合服务器,带你了解投影融合的边缘融合显示技术

热门文章

  1. 从零开始刷Leetcode——数组(941.977)
  2. java static是单例_JAVA基础-static关键字及单例设计模式
  3. 艺术字计算机学院,最新职称计算机考试Word2003操作题:艺术字
  4. http请求头获取 -python
  5. python按照多个key排序
  6. 组合范畴语法 CCG
  7. linux 网卡无效 设置_Linux系统的双网卡设置
  8. 西门子g120c面板参数设定_西门子PCS7模拟量单位设置
  9. 中台之上(十三):探讨支持组装式开发的业务架构设计方法
  10. CAJ如何转成PDF