qr 码

qr 码最常见的应用便是为网站中一个特定的网页或下载页带来流量。因此,qr码常常会编码url或网站地址,用户可以通过手机摄像头扫描,并在其浏览器中打开。url可以直接编码在qr码中。

qr(quick-response) code是被广泛使用的一种二维码,解码速度快。

它可以存储多用类型

如上图时一个qrcode的基本结构,其中:

位置探测图形、位置探测图形分隔符、定位图形:用于对二维码的定位,对每个qr码来说,位置都是固定存在的,只是大小规格会有所差异;

校正图形:规格确定,校正图形的数量和位置也就确定了;

格式信息:表示改二维码的纠错级别,分为l、m、q、h;

版本信息:即二维码的规格,qr码符号共有40种规格的矩阵(一般为黑白色),从21×21(版本1),到177×177(版本40),每一版本符号比前一版本 每边增加4个模块。

数据和纠错码字:实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误)。

java生成带url的二维码

下面是使用qrgen和zxing库来创建qr码的一个简单的http servlet的。qr码的内容可以由用户提供。

maven依赖配置

 <!-- https://mvnrepository.com/artifact/net.glxn.qrgen/javase -->
	<dependency>
	    <groupid>net.glxn.qrgen</groupid>
	    <artifactid>javase</artifactid>
	    <version>2.0</version>
	</dependency>

该index.jsp文件包含一个简单的html表单,其中有输入框和一个提交按钮。用户可以输入他希望用于编码的的文本并提交。

index.jsp

<html>
<body>
<h2>hello world!</h2>
<form action="qrservlet" method="get">
 <p>enter text to create qr code</p>
 <input name="qrtext" type="text">
 <input value="generate qr code" type="submit">
</form>
</body>
</html>

秘密就在qrcodeservlet.java里。在这里,我们使用qrgen和zxing从request.getparameter得到的文本生成qr码。一旦生成qr码流,我们就写入response中并设置适当的content-type

package net.viralpatel.qrcode;
 
import java.io.bytearrayoutputstream;
import java.io.ioexception;
import java.io.outputstream;
 
import javax.servlet.servletexception;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
 
import net.glxn.qrgen.core.image.imagetype;
import net.glxn.qrgen.javase.qrcode;
 
 
public class qrcodeservlet extends httpservlet {
	
	private static final long serialversionuid = 1357779219336485986l;
 
	@override
    protected void doget(httpservletrequest request,
        httpservletresponse response) throws servletexception, ioexception {
 
        string qrtext = request.getparameter("qrtext");
 
        bytearrayoutputstream out = qrcode.from(qrtext).to(imagetype.png).stream();
 
        response.setcontenttype("image/png");
        response.setcontentlength(out.size());
 
        outputstream outstream = response.getoutputstream();
 
        outstream.write(out.tobytearray());
 
        outstream.flush();
        outstream.close();
    }
}

使用web.xml将/qrservlet请求映射到qrcodeservlet.java。

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">
  <display-name>archetype created web application</display-name>
  
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
 
    <servlet>
        <servlet-name>qrcodeservlet</servlet-name>
        <servlet-class>net.viralpatel.qrcode.qrcodeservlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>qrcodeservlet</servlet-name>
        <url-pattern>/qrservlet</url-pattern>
    </servlet-mapping>
 
</web-app>

输出

完成!

总结

到此这篇关于java如何生成带网站链接(url)的二维码的文章就介绍到这了,更多相关java生成带url的二维码内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!