인턴이 끝난 후 조금 쉬면서
여유롭게 시간을 보내다가 현자타임이 엄청 와버려서...
그래도 했던 코드들을 나름 리뷰하는 시간을 가져볼 생각이다.
우선 QR코드를 제작하기 위해서!
import com.google.zxing.qrcode.QRCodeWriter;
QR코드를 위해 Zxing을 이용한다.
Zxing이란 Zebra Crossing의 약자로 구글에서 QR코드를 제작하기 위해 제공하는 라이브러리!
그렇다면 어떻게 사용했을지 한번 작성해보자
public void makeCode(int width, int height, String file_path, String file_name, WealthDevelop wealth) {
try {
QRCodeWriter writer = new QRCodeWriter();
// url = new String(url.getBytes("UTF-8"), "ISO-8859-1");
String url = null;
url = "물품명 : " + wealth.getItemName() + "\n" + "모델명 : " + wealth.getItemModel() + "\n" + "규격 : "
+ wealth.getHorizontalSize() + " X " + wealth.getVerticalSize() + " X " + wealth.getHeightSize()
+ "\n" + "구입일 : " + wealth.getPurcahseDate() + "\n" + "내용연수 : " + wealth.getContentYear() + "\n"
+ "관리부서 : " + wealth.getPurchaseMangeDepartMent() + "\n" + "물품등록자_소속부서 : "
+ wealth.getItemRegisterDepartment() + "\n" + "물품등록자_성명 : " + wealth.getItemRegisterName() + "\n";
url = new String(url.getBytes("UTF-8"), "ISO-8859-1");
// System.out.println("url : " + url);
BitMatrix matrix = writer.encode(url, BarcodeFormat.QR_CODE, width, height);
BufferedImage qrImage = MatrixToImageWriter.toBufferedImage(matrix);
ImageIO.write(qrImage, "png", new File(file_path + file_name));
} catch (Exception e) {
e.printStackTrace();
}
}
위의 코드는 직접 내가 인턴하면서 제작했을 때 사용했던 코드인데
먼저 QR코드를 제작할 수 있도록 함수를 생성해준다.
url이라는 변수를 보면 현재는 테이블을 제작하기 위해 저렇게 작성해줬다.
그렇지만 실제로 QR코드를 찍었을 때 다른 페이지로 넘기려면?
해당 넘기려는 URL을 입력해주면 된다.
대신 URL을 입력하기 위해서는 기본적으로 서버가 필요하겠죠?
System.out.println이 종종 보이는데....
이거는 내가 코딩하는 습관 중 하나인데
코딩할 때 값이 재대로 넘어오는지 파악하는 것을 중요하게 생각하기 때문에
출력으로 확인해준다.
출력으로 확인했는데 문제가 생긴다면?
관리자 페이지, 디버깅, 오류코드 등등 다양한 부분을 확인!
그리고 BitMatrix는 구글 zxing에서 사용되는 라이브러리 중 하나인데
2D의 그림인 QR코드를 그리기 위해 사용되는 클래스라고 생각하면 된다.
QR코드는 2D인데 추후에 포스팅 할 바코드는 1D라는 점!
무튼 BitMatrix에는 내가 입력하는 값과 사이즈를 BarcodeFormat을 이용하여 지정해준다.
지정 후 png 파일로 생성해주면 끝!
public String departList(Model model, HttpServletRequest request,
@RequestParam("PurchaseMangeDepartMent") String DepartMent, @RequestParam("DepartSearch") String location)
throws IOException {
ArrayList<WealthDevelop> wealth = new ArrayList<WealthDevelop>();
wealth = Wservice.departAllSelect(DepartMent, location);
File file = new File(request.getContextPath());
String file_path = "C:" + File.separator + "Users" + File.separator + "sg-moomin-tistory" + File.separator + "Desktop"
+ File.separator + "barcode" + File.separator;
makeCode(150, 150, file_path, file_name, wealth.get(i));
/*
for (int i = 0; i < wealth.size(); i++) {
String str = wealth.get(i).getWealthDno();
String file_name = str + ".PNG";
makeCode(150, 150, file_path, file_name, wealth.get(i));
}
*/
}
위의 코드는 바코드를 제작하기 위해 사용된 메소드인데
위에서 하는 역할은 해당 DB에서 QR코드에 들어갈 값을 가져온 후
해당 값을 file_path는 자신이 원하는 위치로 변경해주면 되는데
그 당시 pc의 경로를 적어줬으나 보안상 우려되지 않도록 경로를 조금 수정했다.
여기서 File.separator는 "/" 라고 생각하면 된다.
코드를 보면 주석 처리된 반복문을 보면 QR코드를 하나씩 제작해줬는데
이렇게 한 이유는 원래 QR코드를 Item을 추가 시 같이 QR 제작하는 걸 생각했으나
인턴했었던 회사에서는 제작이 완료된 데이터에 추가해야했었구
데이터의 양이 너무 방대했었기에 필요한 값만큼만 QR코드로 제작하는 방법을 생각하다가 반복문을 선택했다.
따라서 반복문은 필요없고 바로 makeCode를 호출해주면 끝!
다음 포스팅에서는 바코드를 제작하는 코드를 들고올 예정이다.
'Programing > Java & Spring' 카테고리의 다른 글
Spring MVC를 이용하여 웹 페이지 제작 vo1 : Spring MVC을 이해하자 (0) | 2021.01.06 |
---|---|
IT세무민의 코딩일기 : 바코드 제작하기 [바코드를 제작하지 않고 QR코드를 제작한 이유] (0) | 2021.01.05 |
IT세무민의 코딩일기 : JqGrid를 이용해서 테이블을 손쉽게 만들어봅시다 (2) | 2020.12.16 |
웹 페이지 프로젝트 일기 : Ajax 부시다가 내가 털렸당...ㅎㅎ (Ajax - Json - Table) (0) | 2020.12.14 |
코딩 일기 : grid나 js파일이 정상 작동을 하지 않는다...(이론) (0) | 2020.12.03 |