Backend

이미지 파일(BLOB 타입)을 데이터 베이스에서 가져와 실제 이미지화하여 이를 파일로 다운로드 하기 위해선 ImageIO 클래스의 read 함수를 통해 이미지를 받아와 이를 write 함으로써 가능하다. 참고로 아래 코드 중 'png'가 들어가는 부분에는 이미지의 확장자를 넣으면 된다. String image = itemVO.getImageData(); byte[] imageBlob = Base64.getDecoder().decode(imageDataStr.split(",")[1]); String fileName = "C:\Users\Admin\Downloads\new_image.png"; BufferedImage img = ImageIO.read(imageBlob); ImageIO.write(img, ..
1. Word 파일(.docx) 1) 바이너리 파일 작성 완료 후 바이트 배열로 만들기 InputFileStream is = new InputFileStream("/filePath"); XWPFDocument doc = new XWPFDocument(is); ... ByteArrayOutputStream os = new ByteArrayOutputStream(); doc.write(os); os.close(); doc.close(); byte[] xwpfBytes = os.toByteArray(); // xwpfBytes를 DB에 넣는 작업 수행 2) DB에서 바이트 배열 가져와서 파일로 다운로드 String fileName = "document.docx"; byte[] fileBytes = mapper..
1. 워드 파일 생성 File templateFile = new File(path, templateFileName); XWPFDocument doc = new XWPFDocument(new FileInputStream(templateFile)); 2. 테이블 생성(기존 템플릿 테이블 사용 시 POIWordUtil.copyTable() 사용 가능) XWPFTable tbl = doc.createTable(); POIWordUtil.copyTable(templateTable, tbl); XWPFTable tbl = doc.createTable(); XWPFTableRow row = tbl.createRow(); // 이미 존재하는 XWPFTableRow 삽입 시 addRow() 사용 가능 XWPFTableC..
· Backend/Java
회사의 SPA 어플리케이션 개선 작업을 하면서 스크립트로 서버와 통신하는 일이 잦다. 이전에 혼자 프로젝트를 진행하면서 크게 의식하지 않고 사용했던 부분을 회사 업무를 수행하면서 헷갈렸던 부분들에 대해 제대로 정리하게 됐다. ajax 를 사용해 서버로 데이터를 보낼 시 1. Object 형태로 전달 시에는 해당 변수명과 일치한다는 전제 하에 @RequestBody 사용 가능 1) JavaScript let obj = { name: '이름', company: '회사', department: '부서' } $.ajax({ url: "/example", type: "GET"/"POST", data: { dataName: obj }, success: function(result) { ... }, error: fu..
· Backend/Java
배열을 리스트로 변환해 병합하려는 리스트들을 새로 생성한 리스트에 추가한다.(addAll) List list = new ArrayList(); List list2 = mapper.getList1(obj); List list3 = mapper.getList2(obj); list.addAll(list2); list.addAll(list3);
1. 테이블 생성 생성한 파워포인트 파일에 슬라이드 추가 후 슬라이드에 테이블을 생성하고 그 크기를 정할 수 있다. 테이블의 내부 셀 크기에 따라 크기가 달라지므로 이전의 이미지 삽입과 달리 시작 지점의 x좌표, y좌표만을 정해줬다. 만약 테이블 생성 시(createTable) 인자로 로우 수와 컬럼 수를 지정해준다면, 로우 추가 시에 셀을 추가하지 않아도 해당 컬럼 수 만큼 셀이 생성된다. 때문에 그럴 경우에는 row.getCells().get(컬럼 인덱스)의 방식으로 해당 셀에 접근해야 한다. (Paragraph까지는 자동으로 생성해주나. 따라서 접근한 Cell에 getParagraphs().get(idx);를 통해 Paragraph에 접근한 뒤 TextRun 역시 같은 방법으로 접근하려 하면 nul..
이전에는 POI와 Jxls를 이용한 템플릿 기반 엑셀 파일을 생성 및 다운로드 하는 게시글을 작성했다. 이번에는 특정 데이터를 템플릿을 기반으로 보여주되 엑셀이 아닌 파워포인트에 내용을 작성하는 작업을 맡게 되었다. 0. 의존성 1) Maven 이용 시 org.apache.poi poi 4.1.2 2) Gradle 이용 시 implementation 'org.apache.poi:poi:4.1.2' 1. 템플릿 파일 가져오기 File originalFile = new File(servletContext.getRealPath("/WEB-INF/template"), "템플릿 파일명"); 2. 가져온 템플릿 파일을 기반으로 새로운 파워포인트 파일 생성 FileInputStream is = new FileInpu..
1. 콘솔 로그 이슈 1(JXLS 버전 문제) 회사 제품의 데이터 엑셀 다운로드 기능 실행 시 값이 'null'인 데이터에 대해서는 출력하지 않으면 되는데, 굳이 아래와 같은 로그를 찍는 이슈가 있었다. "1018 [AWT-EventQueue-0] WARN org.apache.commons.jexl2.JexlEngine - org.jxls.expression.JexlExpressionEvaluator.evaluate@61![0,19]: ‘변수명' inaccessible or unknown property transaction" 스택오버플로우의 몇 가지 글을 보자 버전업을 해야한다는 의견이 다수였고, 실제로 2.4.6 버전이던 JXLS를 2.10.0 버전으로 업그레이드 함으로써 더이상 null값에 대한 경..
Java에서 템플릿을 이용해 Excel 파일을 다운로드 하기 위해서는 크게 두 가지 경우를 사용한다. 'JExcel'을 사용하는 방식과 'POI + Jxls'를 사용하는 방식이 그것이다. 이 글에서는 내가 직접 사용해본 'POI + Jxls'을 사용하는 방식에 대해서 간단히 정리할 것이다. 1. POI 우선 POI란 아파치 소프트웨어 재단에서 만든 라이브러리로서 마이크로소프트 오피스 파일 포맷을 순수 자바 언어로서 읽고 쓰는 기능을 제공한다. 주로 워드, 엑셀, 파워포인트와 파일을 지원하며 최근의 오피스 포맷인 Office Open XML File Formats (OOXML, 즉 xml 기반의 *.docx, *.xlsx, *.pptx 등) 이나 아웃룩, 비지오, 퍼블리셔 등으로 지원 파일 포맷을 늘려가고..
개인 프로젝트에서는 직접 Spring Security를 사용해 사용자를 인증하여 로그인하고, 사용자의 권한을 확인해 특정 페이지에 접근하는 것을 제한하는 기능을 구현하였다. 당시에는 기능 구현에 초점을 두었다면 이제는 기본적인 내용부터 다시 정리해보고자 한다. Spring Security란 Spring Security란 스프링 개반의 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크로, 크게 인증과 인가라는 개념을 기반으로 동작한다. 주요 개념 인증(Authentication) : 입력 받은 정보와 사용자 정보를 비교해 신원을 확인하는 것을 의미한다. 대표적인 인증 방식으로 로그인, 공인인증서 확인 등이 있다. 인가(Authorization) : 인증을 통해 사용자를 식별한 후 사용자가 가진 권한을 ..
devYH
'Backend' 카테고리의 글 목록 (4 Page)