ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring QR코드 생성하기
    SpringFrameWork/Spring 프로젝트 할때 참고 하면 좋은것들 2022. 10. 7. 16:32
    728x90

    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=""/> &nbsp;
    	    <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

    댓글

Designed by Tistory.