一、目标

输入网址,生成网址的二维码

二、概况

1.效果:UI丑,但功能实现了

2.项目目录

三、用到的第三方资源

1.google的扫码包zxing

2.JQuery

四、步骤(用myEclipse)

1.新建工程,选择web project

2.加入第三方资源(zxing包和jQuery)

2.1

2.1.1复制,粘贴,加入zxing的jar包(所有文件在附件中下载)

2.2.2右键jar包加入buildpath

2.2加入jQuery文件

2.2.1在WebRoot下新建文件夹js

复制粘贴jQuery文件到此文件夹

3.按需求修改webroot下的index.jsp页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>二维码</title>
<script src="js/jquery.min.js"></script>
<script>
$(function(){
$("input[type=submit]").click(function(e){
e.preventDefault();
$("#qrcode_div").empty().append("<img id='qrImg' />");
$("#qrImg").attr("src", "qrcode?website="+$("input[type=text][name=website]").val());//此处会访问servlet
});
});
</script>
</head> <body>
<form>
网址<input type="text" name="website" />
<input type="submit" value="生成二维码" />
<div id="qrcode_div"></div>
</form>
</body>
</html>

4.新建servlet文件

4.1右键工程文件夹--》new ---->servlet(myEclipse会自动配置servlet到web.xml文件)

QRCode.java servlet文件的代码如下:

package servlet;
import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import util.QRCodeUtil; import com.google.zxing.WriterException; public class QRCode extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String website = request.getParameter("website");
try {
QRCodeUtil.genGR(website, response.getOutputStream());
} catch (WriterException e) {
e.printStackTrace();
}
//String website = request.getAttribute("website").toString();
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} }

5.新建辅助类文件,作用是生成二维码(QRCodeUtil.java)

5.1右键工程文件夹--》new--->class,如下图

QRCodeUtil.java的代码如下:

package util2;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Hashtable; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix; public class QRCodeUtil { private static final int BLACK = 0xFF000000;
private static final int WHITE = 0xFFFFFFFF; public static void genGR(String website, OutputStream output) throws WriterException, IOException {
int width = 300;
int height = 300;
String format = "jpg";
Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
//Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bm = new MultiFormatWriter().encode(website, BarcodeFormat.QR_CODE, width, height, hints); BufferedImage image = toImage(bm);
ImageIO.write(image, format, output); //把二维码写到response的输出流
} private static BufferedImage toImage(BitMatrix bm) {
int width = bm.getWidth();
int height = bm.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for(int x = 0;x < width; x++){
for(int y = 0; y < height; y++ ){
image.setRGB(x, y, bm.get(x, y) ? BLACK : WHITE);
}
}
return image;
} }

6.至此,所有文件已完成,接下来布置项目,启动tomcat,访问文件,如下图

布置完成后,点击debug启动项目

启动成功后,在浏览器中访问文件

PS:

可以修改QRCodeUtil.java文件中的颜色配置,以生成彩色的二维码,例如:

private static final int BLACK = 0xff0000ff;//0xFF000000;
private static final int WHITE = 0xffffff00;//0xFFFFFFFF;

常见颜色代码如下:

这些颜色常数是定义在android.graphics.Color里的:

类型

常数

色码

int

BLACK

-16777216

0xff000000

int

BLUE

-16776961

0xff0000ff

int

CYAN

-16711681

0xff00ffff

int

DKGRAY

-12303292

0xff444444

int

GRAY

-7829368

0xff888888

int

GREEN

-16711936

0xff00ff00

int

LTGRAY

-3355444

0xffcccccc

int

MAGENTA

-65281

0xffff00ff

int

RED

-65536

0xffff0000

int

TRANSPARENT

0

0x00000000

int

WHITE

-1

0xffffffff

int

YELLOW

-256

0xffffff00

项目附件:

http://files.cnblogs.com/files/shamgod/QRCode.zip

手把手教你生成二维码-google.zxing的更多相关文章

  1. Java生成带小图标的二维码-google zxing 工具类

    近期一直忙于开发微信商城项目,应客户要求,要开发个有图标的二维码.经过两次改版,终于实现了该功能(第一次没有小图标,这次才整合好的),如下是完整代码 . 该代码使用Java7开发,另外使用 core- ...

  2. 使用PHP生成二维码的两种方法(带logo图像)

    一.利用Google API生成二维码 Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  3. 简单的 自动生成 二维码 PHP 方法

    方法一:<style type="text/css">.eweima{    width:200px; height:200px; margin:auto;}</ ...

  4. Android利用zxing生成二维码

    感谢大佬:https://blog.csdn.net/mountain_hua/article/details/80646089 **gayhub上的zxing可用于生成二维码,识别二维码 gayhu ...

  5. Google API在线生成二维码的方法

    1.先看一个实例,是用Google API生成西部e网的网站地址www.weste.net二维码的方法: http://chart.apis.google.com/chart?cht=qr&c ...

  6. 利用google api生成二维码名片例子

    二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码.堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成:矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1” ...

  7. 谷歌制图服务(Google Chart)接口生成二维码

    Google公布了制图服务(Google Chart)的接口,这项服务用起来相当简单,只使用浏览器就可以用来为统计数据自动生成图片. 目前谷歌制图服务提供折线图.条状图.饼图.Venn图.散点图.二维 ...

  8. PHP使用google api生成二维码

    代码如下: <?php $urlToEncode="nickname:Feanmy,email:feanmy@qq.com"; generateQRfromGoogle($u ...

  9. Java中使用google.zxing快捷生成二维码(附工具类源码)

    移动互联网时代,基于手机端的各种活动扫码和收付款码层出不穷:那我们如何在Java中生成自己想要的二维码呢?下面就来讲讲在Java开发中使用 google.zxing 生成二维码. 一般情况下,Java ...

随机推荐

  1. centos65安装docker遇到的问题

    1.安装docker后启动显示内核太低(升级内核): 网上太多方案 2.升级内核后还是启动不了docker:执行下面语句 yum install device-mapper-event-libs 步骤 ...

  2. STM32启动过程解读与跟踪验证

    经过查阅各种官方文献和对代码进行单步跟踪,详细地叙述了STM32加电启动的具体过程.对于关键性的语句都指明了出处.下面将学习成果分享给大家,由于笔者知识有限,不当之处敬请指出. 为了更好的说明问题,先 ...

  3. Spring链接汇总

    Spring Boot专题 基础入门内容 SpringBoot快速入门 Why Spring Boot 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cl ...

  4. vim 编辑技巧

    vi是linux下最常用的编辑器,vim是vi的加强版,本篇将介绍vim的一些快捷键和使用技巧,借鉴网上其他文章表示

  5. Java-Runoob-高级教程:Java 文档注释

    ylbtech-Java-Runoob-高级教程:Java 文档注释 1.返回顶部 1. Java 文档注释 Java 支持三种注释方式.前两种分别是 // 和 /* */,第三种被称作说明注释,它以 ...

  6. Web应用层协议---HTTP

    处于协议栈顶层的应用层协议定义了运行在不同端系统的应用程序进程如何相互传递报文.定义内容如下: 1.交换的报文类型.请求报文和响应报文. 2.各种报文类型的语法,如报文中的各个字段及这这些字段是如何描 ...

  7. EF中创建、使用Oracle数据库的Sequence(序列)功能

    ** 背景 ** 项目中订单号原来的生成规则由日期加随机数组成,后期需求决定将订单号生成规则更改为生成日期加当天当前订单数. 每天的订单数都是从0开始的,每生成一个订单,订单数就应该加1.订单数应该是 ...

  8. Spring的常用下载地址

    第一种,简单粗暴直接 1 http://repo.springsource.org/libs-release-local/org/springframework/spring/3.2.4.RELEAS ...

  9. zookeeper基本讲解(Java版,真心不错)

    1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务.名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的核 ...

  10. 013:Rank、视图、触发器、MySQL内建函数

    一. Rank 给出不同的用户的分数,然后根据分数计算排名 (gcdb@localhost) 09:34:47 [mytest]> create table t_rank(id int,scor ...