用的spring boot项目做的案例
pom文件
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.google.zxing/core 用的google的API,生成二维码 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.google.zxing/javase --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.0</version> </dependency>
控制层代码
package com.qr.controller; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageConfig; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.util.Hashtable; @Controller public class QrController { //返回的html网页 @RequestMapping("/index") public String index(){ return "index"; } //获取二维码的地址,如有需要还可以加个参数,自定义生成二维码的内容 @RequestMapping("/qr") public void qr(HttpServletResponse response){ try { qrCode(response.getOutputStream(),"这是一个二维码",200); } catch (IOException e) { e.printStackTrace(); } } //生成二维码的方法 public static void qrCode(OutputStream stream, String text, int size){ try { BitMatrix matrix = cteateBitMatrix(text, size); MatrixToImageConfig config = new MatrixToImageConfig(0xFF000000, 0xFFFFFFFF); MatrixToImageWriter.writeToStream(matrix, "png", stream, config); } catch (WriterException | IOException e) { } } private static BitMatrix cteateBitMatrix(String text, int size) throws WriterException { Hashtable<EncodeHintType, Object> hints = new Hashtable<>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 内容所使用编码 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 指定纠错等级 hints.put(EncodeHintType.MARGIN, 0); // 白边大小,取值范围0~4 BitMatrix matrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, size, size, hints); return matrix; } }
HTML内容,及项目结构