-
Spring QR코드 생성하기SpringFrameWork/Spring 프로젝트 할때 참고 하면 좋은것들 2022. 10. 7. 16:32728x90
QR코드 생성해보기
pom.xml
먼저 qr코드를 생성하기 위해 pom.xml에 라이브러리 삽입 해주고 Maven 업데이트 눌러주세요.
<!-- bar/QR코드 생성을 위한 라이브러리(Zxing) / 구글에서 제공하는 라이브러리 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.5.0</version> </dependency>
JSP
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <% pageContext.setAttribute("newLine", "\n"); %> <c:set var="ctp" value="${pageContext.request.contextPath}"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>qrcode.jsp</title> <script> 'use strict'; function qrCreate(no) { let moveUrl = ''; if(no == 1) moveUrl = myForm.moveUrl.value; else moveUrl = myForm.email.value; $.ajax({ url : "${ctp}/study/qrCreate", type : "post", data : {moveUrl : moveUrl}, success : function(data) { alert("qr코드 생성완료 : "+data); $("#qrCodeView").show(); $("#qrView").html(data); var qrImage = '<img src="${ctp}/data/qrCode/'+data+'.png"/>'; $("#qrImage").html(qrImage); } }); } </script> </head> <body> <form name="myForm"> <h2>QR코드 생성하기</h2> <div> <h4>QR코드 체크시 이동할 주소를 입력후 QR코드를 생성해 주세요.</h4> <p>(소개하고 싶은 지역의 홈페이지 주소를 입력하세요.)</p> </div> <p> 이동할 주소1 : <input type="text" name="moveUrl" value="https://seongjaepark12.github.io/My-introduction" size="30"/> <input type="button" value="qr코드 생성1" onclick="qrCreate(1)" class="btn btn-primary btn-sm"/> </p> <div> <h4>자신의 정보(email)를 입력후 QR코드를 생성해 주세요.</h4> <p>티켓예매 : 생성된 이메일주소를 사진촬영후 매표소에 제시해주세요.</p> </div> <p> <b>개인정보입력</b> :<br/> 이메일 : <input type="text" name="email" value=""/> <input type="button" value="qr코드 생성2" onclick="qrCreate(2)" class="btn btn-success btn-sm"/> </p> <hr/> <div id="qrCodeView" style="display:none"> <h3>생성된 QR코드 확인하기</h3> <div> - 생성된 qr코드명 : <span id="qrView"></span><br/> <span id="qrImage"></span> </div> </div> </form> </body> </html>
Controller
// QR코드 생성하기 폼(URL 등록폼) @RequestMapping(value="/qrCode", method=RequestMethod.GET) public String qrCodeGet() { return "study/qrCode/qrCode"; } // QR코드 생성하기 처리부분 @SuppressWarnings("deprecation") @ResponseBody @RequestMapping(value="/qrCreate", method=RequestMethod.POST) public String barCreatePost(HttpServletRequest request, HttpSession session, String moveUrl) { String mid = (String) session.getAttribute("sMid"); String uploadPath = request.getRealPath("/resources/data/qrCode/"); String qrCodeName = studyService.qrCreate(mid, uploadPath, moveUrl); // qr코드가 저장될 서버경로와 qr코드 찍었을때 이동할 url을 서비스객체로 넘겨서 qr코드를 생성하게 한다. return qrCodeName; }
Service
public String qrCreate(String mid, String uploadPath, String moveUrl);
ServiceImpl
@Override public String qrCreate(String mid, String uploadPath, String moveUrl) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmm"); UUID uid = UUID.randomUUID(); String strUid = uid.toString().substring(0,4); String qrCodeName = ""; if(moveUrl.indexOf("@") == -1) { // 이동할 주소로 넘어올때의 처리 qrCodeName = sdf.format(new Date()) + "_" + mid + "_" + strUid; } else { // 개인정보(이메일주소)로 넘어올때의 처리 qrCodeName = sdf.format(new Date()) + "_" + mid + "_" + moveUrl + "_" + strUid; } try { File file = new File(uploadPath); // qr코드 이미지를 저장할 디렉토리 지정 if(!file.exists()) { file.mkdirs(); } String codeurl = new String(moveUrl.getBytes("UTF-8"), "ISO-8859-1"); // qr코드 인식시 이동할 url 주소 //int qrcodeColor = 0xFF2e4e96; // qr코드 바코드 생성값(전경색) int qrcodeColor = 0xFF000000; // qr코드 바코드 생성값(전경색) - 뒤의 6자리가 색상코드임 int backgroundColor = 0xFFFFFFFF; // qr코드 배경색상값 QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(codeurl, BarcodeFormat.QR_CODE,200, 200); MatrixToImageConfig matrixToImageConfig = new MatrixToImageConfig(qrcodeColor,backgroundColor); BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix,matrixToImageConfig); ImageIO.write(bufferedImage, "png", new File(uploadPath + qrCodeName + ".png")); // ImageIO를 사용한 바코드 파일쓰기 // qr코드 생성후 정보를 DB에 저장하기(신상내역으로 보낸것들만 저장하려함 - 나중에 본인이 생성된 qr코드 가져왔을때 DB에 있는 정보와 일치하는지 알아보기 위함) if(qrCodeName.indexOf("@") != -1) studyDAO.setQrCreate(qrCodeName); } catch (Exception e) { e.printStackTrace(); } return qrCodeName; }
DAO
public void setQrCreate(@Param("qrCodeName") String qrCodeName);
DB
<insert id="setQrCreate"> insert into qrCode values (default,#{qrCodeName}); </insert>
728x90'SpringFrameWork > Spring 프로젝트 할때 참고 하면 좋은것들' 카테고리의 다른 글
Iamport 결제 시스템 API 사용해보기 (0) 2022.10.09 달력 만들기 (1) 2022.10.08 UUID란? 사용법까지 (0) 2022.10.06 Spring 메일 보내는 법 (0) 2022.10.05 비밀번호 암호화 방식 (1) 2022.10.01