在 Java 中,我们可以使用第三方库 zxing
(Zebra Crossing)来生成二维码。zxing
是一个开源的、功能丰富的条形码和二维码处理库,支持多种编程语言。
以下是一个示例代码,展示如何使用 zxing
库在 Web 应用中生成二维码并返回给前端页面:
1.添加 zxing
依赖
Maven 依赖配置如下:
<!-- zxing 依赖 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.4.1</version> </dependency>
2.编写控制器方法
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
@Controller public class QRCodeController { @GetMapping("/qrcode") public void generateQRCode(HttpServletRequest request, HttpServletResponse response) throws IOException, WriterException { String content = "https://www.example.com"; // 二维码扫描后跳转的链接 int width = 300; // 二维码宽度 int height = 300; // 二维码高度 String format = "png"; // 二维码格式 // 设置响应头信息 response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/" + format); // 生成二维码并输出到 Servlet 输出流 QRCodeWriter writer = new QRCodeWriter(); BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); MatrixToImageWriter.writeToStream(bitMatrix, format, outStream); byte[] data = outStream.toByteArray(); ServletOutputStream stream = response.getOutputStream(); stream.write(data); stream.flush(); stream.close(); } }
3.在前端页面使用二维码
在前端页面中,我们可以使用 <img>
标签引用生成的二维码图片。
<img src="/qrcode" alt="QR Code">
在以上示例代码中,我们设置 src
属性值为控制器中的路径 /qrcode
,这样在访问该图片时,控制器方法会生成一个二维码并返回给前端页面。