>  기사  >  Java  >  Java와 서블릿을 사용하여 QR 코드를 만드는 방법

Java와 서블릿을 사용하여 QR 코드를 만드는 방법

伊谢尔伦
伊谢尔伦원래의
2016-11-26 12:01:101048검색

스마트폰 덕분에 QR코드가 점점 주류로 자리 잡으며 그 유용성이 더욱 높아지고 있습니다. 버스 정류소, 제품 포장, 주택 개조 매장, 자동차부터 다양한 웹사이트까지 모두 웹페이지에 QR 코드를 통합하여 사람들이 빠르게 찾을 수 있도록 합니다. 스마트폰 사용자가 늘어나면서 QR코드의 활용도가 기하급수적으로 늘어나고 있다.

QR 코드에 대한 간략한 개요와 Java에서 QR 코드를 생성하는 방법을 살펴보겠습니다.

QR코드 소개

QR코드(Quick Response code)는 매트릭스 바코드(또는 QR코드)의 일종으로 자동차 산업을 위해 최초로 고안됐다. 빠른 가독성과 대용량 저장 용량 덕분에 QR 코드는 자동차 산업 외부에서도 인기를 얻고 있습니다. 흰색 바탕에 검은색 사각형이 질서정연하게 배열된 패턴입니다. 인코딩되는 데이터는 4가지 표준 데이터(숫자, 영숫자, 바이트/이진수, 한자) 중 하나일 수 있지만 더 많은 데이터를 구현하도록 확장될 수도 있습니다.

Toyota 자회사 Denso Wave는 생산 라인에서 차량을 추적하기 위해 1994년에 QR 코드를 발명했습니다. 그 이후로 QR 코드는 2D 바코드를 문자 그대로 번역하는 데 가장 널리 사용되었습니다. QR 코드는 콘텐츠의 고속 디코딩을 지원하도록 설계되었습니다.

Java로 QR 코드를 구현하는 Hello World

Zebra Crossing(ZXing)은 거의 모든 플랫폼(Android, JavaSE, iPhone, RIM, Symbian)에서 작동하는 훌륭한 라이브러리입니다. QR 코드 생성 및 파싱. 하지만 단순한 QR코드만 생성하려는 경우에는 사용하기가 쉽지 않습니다.

QRGen은 ZXing을 기반으로 개발되었습니다. 이 라이브러리는 Java를 사용하여 QR 코드를 생성하는 것을 매우 쉽게 만듭니다. ZXing에 따라 다르므로 패턴을 생성할 때 ZXing과 QRGen의 jar 패키지가 모두 필요합니다.

ZXing 다운로드 페이지에서는 jar 파일을 찾을 수 없습니다. 소스 코드에서 직접 컴파일해야 합니다. 링크는 여기에 있습니다.

zxing-core-1.7.jar(346KB)

zxing-javase-1.7.jar(21KB)

QRGen의 jar 패키지는 공식 웹사이트에서 다운로드할 수 있습니다. .

클래스 경로로 가져온 후 다음 Java 코드를 실행합니다.

package net.viralpatel.qrcode;
 
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
import net.glxn.qrgen.QRCode;
import net.glxn.qrgen.image.ImageType;
 
public class Main {
    public static void main(String[] args) {
        ByteArrayOutputStream out = QRCode.from("Hello World").to(ImageType.PNG).stream();
 
        try {
            FileOutputStream fout = new FileOutputStream(new File(
                    "C:QR_Code.JPG"));
 
            fout.write(out.toByteArray());
 
            fout.flush();
            fout.close();
 
        } catch (FileNotFoundException e) {
            // Do Logging
        } catch (IOException e) {
            // Do Logging
        }
    }
}

이 코드는 매우 직관적입니다. QRCode 클래스를 사용하여 QR 코드 스트림을 생성하고 이를 바이트 스트림을 통해 C:QR_Code.jpg 파일에 씁니다.

QR_Code_Java.zip(339KB)

이 JPEG 파일을 열고 iPhone 또는 Android QR 코드 도구로 스캔하면 멋진 "Hello World"가 표시됩니다

QRGen의 API를 사용하여 데이터 스트림을 생성하는 것 외에도 다음 API를 사용하여 QR 코드를 생성할 수도 있습니다.

// get QR file from text using defaults
File file = QRCode.from("Hello World").file();
// get QR stream from text using defaults
ByteArrayOutputStream stream = QRCode.from("Hello World").stream();
 
// override the image type to be JPG
QRCode.from("Hello World").to(ImageType.JPG).file();
QRCode.from("Hello World").to(ImageType.JPG).stream();
 
// override image size to be 250x250
QRCode.from("Hello World").withSize(250, 250).file();
QRCode.from("Hello World").withSize(250, 250).stream();
 
// override size and image type
QRCode.from("Hello World").to(ImageType.GIF).withSize(250, 250).file();
QRCode.from("Hello World").to(ImageType.GIF).withSize(250, 250).stream();

Java QR 코드에서 웹사이트 링크(URL) 생성

QR 코드의 가장 일반적인 적용은 특정 웹 페이지 또는 웹 사이트의 다운로드 페이지로 트래픽을 가져오는 것입니다. 따라서 QR 코드는 사용자가 휴대폰 카메라로 스캔하여 브라우저에서 열 수 있는 URL이나 웹사이트 주소를 인코딩하는 경우가 많습니다. URL은 QR 코드로 직접 인코딩될 수 있습니다. 위의 Hello World 예에서 "Hello World" 문자열을 인코딩해야 하는 URL로 바꾸세요. 코드 조각은 다음과 같습니다.

ByteArrayOutputStream out = QRCode.from("http://viralpatel.net").to(ImageType.PNG).stream();

서블릿의 QR 코드

대부분의 경우 웹사이트에서 일부 QR 코드를 동적으로 생성해야 합니다. 우리는 Java에서 QR 코드를 생성하는 것이 얼마나 쉬운지 살펴보았습니다. 이제 생성된 QR 코드를 Java Servlet에 통합하는 방법을 살펴보겠습니다.

다음은 QRGen 및 ZXing 라이브러리를 사용하여 QR 코드를 생성하는 간단한 HTTP 서블릿입니다. QR 코드의 내용은 사용자가 제공할 수 있습니다.

index.jsp 파일에는 입력 상자와 제출 버튼이 있는 간단한 HTML 양식이 포함되어 있습니다. 사용자는 인코딩하려는 텍스트를 입력하고 제출할 수 있습니다.

index.jsp

<form action="qrservlet" method="get">
 <p>Enter Text to create QR Code</p>
 <input name="qrtext" type="text">
 <input value="Generate QR Code" type="submit">
</form>

비결은 QRCodeServlet.java에 있습니다. 여기서는 QRGen 및 ZXing을 사용하여 request.getParameter에서 얻은 텍스트에서 QR 코드를 생성합니다. QR 코드 스트림이 생성되면 이를 응답에 쓰고 적절한 콘텐츠 유형을 설정합니다.

QRCodeServlet.java

package net.viralpatel.qrcodes;
 
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import net.glxn.qrgen.QRCode;
import net.glxn.qrgen.image.ImageType;
 
public class QRCodeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
 
        String qrtext = request.getParameter("qrtext");
 
        ByteArrayOutputStream out = QRCode.from(qrtext).to(ImageType.PNG).stream();
 
        response.setContentType("image/png");
        response.setContentLength(out.size());
 
        OutputStream outStream = response.getOutputStream();
 
        outStream.write(out.toByteArray());
 
        outStream.flush();
        outStream.close();
    }
}

web.xml을 사용하여 /qrservlet 요청을 QRCodeServlet.java에 매핑합니다.

web.xml

<!--?xml version="1.0" encoding="UTF-8"?-->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 
    <display-name>QR_Code_Servlet</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
 
    <servlet>
        <servlet-name>QRCodeServlet</servlet-name>
        <servlet-class>net.viralpatel.qrcodes.QRCodeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>QRCodeServlet</servlet-name>
        <url-pattern>/qrservlet</url-pattern>
    </servlet-mapping>
 
</web-app>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.