在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); //设定图像颜色:BLACK
gs.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; @Override
protected 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.页面中生成的二维码

  

  

  

在java中生成二维码,并直接输出到jsp页面的更多相关文章

  1. C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求

    C# 动态创建SQL数据库(二) 使用Entity Framework  创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...

  2. java springMVC生成二维码

    Zxing是Google提供的工具,提供了二维码的生成与解析的方法,现在使用Java利用Zxing生成二维码 1),二维码的生成 将Zxing-core.jar 包加入到classpath下. 我的下 ...

  3. .net在网页中生成二维码和条形码

    二维码: 1.下载ThoughtWorks.QRCode.dll文件 2.创建Web项目,添加引用刚才下载的文件 3.在项目中添加aspx窗体,编写代码如下 <%@ Page Language= ...

  4. vue 中生成二维码之爬坑之路

    最近在做vue中项目,有个需求是在你提交信息后把后台返给你的链接生成二维码. 一共使用了两种生成二维码的方法 1.vue-qr 这个是在一进入页面直接生成二维码,具体介绍见文档:https://www ...

  5. java zxing生成二维码

    package zxing.test; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; i ...

  6. JAVA生成二维码并转化为二进制在页面展示

    引用jar包: zxing的core包,下载路径可参考:http://download.csdn.net/detail/sxg0205/9461106 java代码: 引用包: import java ...

  7. 【swift】ios中生成二维码

    ios开发中可以自己代码生成二维码,需要使用到一个框架 CoreImage CoreImage框架可以做滤镜,Gif动图,二维码等 先看效果图 下面直接贴上代码(OC也是下面一样的流程) func c ...

  8. java实现生成二维码

    package com.cn.test; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.a ...

  9. java Springboot 生成 二维码 +logo

    上码,如有问题或者优化,劳请广友下方留言 1.工具类 import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHint ...

随机推荐

  1. DEDE栏目内容调用

    {dede:sql sql='Select content from dede_arctype where id=1'} [field:content/] {/dede:sql},

  2. 仿校内textarea输入框字数限制效果

    这是一个仿校内textarea回复消息输入框限制字数的效果,具体表现如下: 普通状态是一个输入框,当光标获取焦点时,出现字数记录和回复按钮 PS:上边那个小三角可不是用的图片. 普通状态效果如下: 获 ...

  3. 钢管下料问题(钢管用量最少)Lingo求解

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang !钢管下料问题1(钢管用量最少) 题目: 钢管原料   每根19m 客户需求   4m   50根 ...

  4. Java添加自定义注解

    今天在整合MyBatis过程中,我使用扫描的方式去扫描DAO目录下的Java文件,但是在Service层使用Autowired的时候报错,但是工程能正常运行,此处有Bug! 解决方案: 1.创建 an ...

  5. 51单片机引脚ALE/PROG/PSEN/EA/Vpp

    51单片机的4个控制引脚,其中一个引脚是复位引脚(RST/Vpd),RST是复位引脚,当RST输入端保持2个机器周期以上高电平时,就实现复位. ALE/PROG是地址锁存允许信号输出端,在读写外部存储 ...

  6. 单例模式 - OK

    单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点. 一.单例模式 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象.一个最好的办法就是,让 ...

  7. resultMap之collection聚集

    <select id="getCarsWithCollection" resultMap="superCarResult"> select c1.c ...

  8. Sql 高效分页

    http://www.111cn.net/database/mysql/46350.htm http://g.kehou.com/t1032617472.html http://www.cnblogs ...

  9. 一个资深java面试官的“面试心得”

    在公司当技术面试官几年间,从应届生到工作十几年的应聘者都遇到过.先表达一下我自己对面试的观点: 1.笔试.面试去评价一个人肯定是不够准确的,了解一个人最准确的方式就是“路遥知马力,日久见人心”.通过一 ...

  10. spring笔记(一)

    这几日,在看spring框架的知识,了解了一下spring的IoC核心,AOP的概念,然后剩下的其实就是Spring对于其他的java服务的封装:ORM,web, JMS,JMX等. 坦白地说,我并没 ...