在java中生成二维码,并直接输出到jsp页面
在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页面相关推荐
- 在Vue中生成二维码扫描在手机上跳转页面
使用方法: 安装vue-qr npm install vue-qr --save 在components新建一个vue组件,eg:vueQr.vue (以下为组件完整代码) <template& ...
- Vue中生成二维码的一种方式—vue-qr
Vue中生成二维码的一种方式-vue-qr vue实现二维码生成(vue + vue-qr)
- java实现生成二维码及扫码登录
java实现生成二维码及扫码登录 1. 场景描述 2. 实现思路 3. 代码实现过程 3.1 pom.xml 3.2 二维码工具类 3.3 生成二维码并下载为图片 3.4 扫码登录 1. 场景描述 ...
- Java解析生成二维码-log
Java解析生成二维码 1.pom.xml依赖 <!-- 引入二维码相关的依赖--><dependency><groupId>com.google.zxing< ...
- 转载:在微信小程序中 生成二维码
目录 转载: weapp-qrcode-canvas-2d 仓库地址 测试环境 使用 安装方法1:直接引入 js 文件 安装方法2:npm安装 安装完成后调用 例子1:没有使用叠加图片 例子2:使用叠 ...
- C#中生成二维码(QR码)与读取二维码内容
使用开源类库ZXing.dll可以在C#中生成二维码和解析二维码为指定的字符串(含url) 新建windows窗体应用程序QRCodeDemo,.net 4.5,将默认的Form1重命名为FormQu ...
- Andoid开发中生成二维码
2019独角兽企业重金招聘Python工程师标准>>> 第一步: 确定我们二维码的位置,即是在我们应用的哪个页面的哪个位置,简单讲就是用一个ImageView把二维码展示出来,我们就 ...
- Java中识别二维码并且提高二维码的识别率
我们在Java开发的时候,发现对二维码的识别是不足的.所以我们需要提高识别率. 第一步.识别图片二维码.准备相应的jar包.我们在gradle+idea中开发. compile group: 'com ...
- Java端生成二维码
项目中功能要求生成一个二维码来访问某地址,特封装一个二维码生成工具类 使用开源的一维/二维码图形处理库zxing GayHub地址:https://github.com/zxing/zxing 1.引 ...
最新文章
- TLS1.3 协议的Golang 实现——ClientHello
- [C#]打包项目[转]
- 一起手写Vue3核心模块源码,掌握阅读源码的正确方法
- 亿些模板【数据结构】
- 泽西岛的JSON模式生成
- 真格量化-隐含波动率购买
- php开源mvccms_轻松理解MYSQL MVCC 实现机制
- mysql 1524_MySQL不允许用户登录:错误1524
- 优先队列实现原理分析
- 同一个事务里面对同一条数据做2次修改_[玩转MySQL之九]MySQL事务ACID[2-1]ACID详解...
- Redis多线程执行 -- 过程分析
- 系统工程利用python求解可达矩阵
- SwiftUI4 iOS16 新特性之 WeatherKit免费天气API使用教程(WWDC 2022教程含源码)
- 微信公众平台、微信公众平台.小程序、微信.开放平台
- 笔记本win10开启wifi共享wifi
- 长沙.NET技术社区正式成立
- Mac运行ftp报错Error: JAVA_HOME is not defined correctly.
- GIS空间分析(二)—— 空间分析的历史与发展
- css控制文本超出省略(单行、两行、多行)
- 投影仪硬件边缘融合服务器,带你了解投影融合的边缘融合显示技术