在 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
,这样在访问该图片时,控制器方法会生成一个二维码并返回给前端页面。