JAVA - SPRING 7

[Java] 압축파일 내부 개별파일 크기 확인하기 | java zipentry getSize() -1 return 이유

SPECSpring boot version 2.6.2Java 1.8 -> RestTemplate을 이용한 API 통신을 위한 프로젝트 예시 코드ZIP 파일 내부 개별의 파일들을 확인하며 해당 파일들의 이름 / 파일 크기를 출력하는 예시 코드는 다음과 같습니다.  org.apache.commons commons-compress 1.27.1import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;import org.apache.commons.compress.archivers.zip.ZipFile;import java.io.File;import java.io.IOException;import java.util.Enumeration;pu..

JAVA - SPRING 2024.11.20

[Spring Boot] 스프링 인터셉터 | Spring Interceptor란?

Interceptor란? 인터셉터(Interceptor)는 DispatcherServlet과 컨트롤러(Controller) 사이에서 요청을 가로채는 역할을 수행한다. 인터셉터를 사용하면 기존의 로직을 수정하지 않고 비지니스 로직 전후에서 특정 기능을 수행할 수 있다. => 중복된 코드의 사용을 줄일 수 있다. 인터셉터를 구현하기 위해 HandlerInterceptor를 사용한다. 요청과 응답의 흐름 요청(Request) -> Filter -> DispatcherServelt -(Handler Mapping)-> HandlerInterceptor -> Contoller -> 로직 실행 ->(응답 값을 만든 후) -> HandlerInterceptor -> (View, ViewResolver) -> Filt..

JAVA - SPRING 2022.12.27

[Java] 세션과 쿠키 | 클라이언트와 서버 | WAS Servlet이란?

세션 연결 지속성을 제공하기 위해 서버에 저장되는 정보 통신 장치/컴퓨터와 사용자 간의 대화나 송수신 연결상태 HTTP 기반으로 동작하는 클라이언트가 서버에 정보를 요청할 때 생성되는 "상태정보" 예로는 웹사이트 로그인 유지 (한번 사용자가 로그인 하면 종료 시까지 로그인상태가 유지되는것) 쿠키 세션과 다르게 클라이언트에 저장되는 정보 너무 많은 정보를 세션에 다 저장 할 수 없기 때문에 사용자의 클라이언트(컴퓨터 등) 메모리에 저장하는것 예로는 사용자 개인의 페이지방문목록, 저장된 개인의 암호 등 클라이언트와 서버 클라이언트는 사용자들이 서버에 요청을 보내는 기기(컴퓨터, 모바일 기기 등)를 의미한다. 서버는 인터넷에 다양한 정보와 요청을 네트워크를 통해 제공해준다. WAS(Web Application..

JAVA - SPRING 2022.12.25

[Java] File Upload 파일명 현재시간으로 업로드 시키기

파일 등록하는 Controller 전문 @ResponseBody @PostMapping("/upload/api") public void uploadFiles(MultipartFile[] uploadFile) { log.info("update ajax post . . . "); //현재시간 서울에 맞춰 불러오기 ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Asia/Seoul")); //현재시간 데이터 형식 지정해주기 DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss"); //업로드 할 폴더 지정 String uploadFolder = "C:\\upload\\"; //새폴더 생성 File..

JAVA - SPRING 2022.12.08

[MyBatis / Spring] TooManyResultsException 오류 해결방법

에러 "org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: $ 원인 작성한 SQL Query문의 결과값이 1개로 나와야 하는데 2개 이상의 결과값이 출력되어 표시 할 수 없음 해결법 결과값이 1개만 나오도록 WHERE절을 추가하거나 조건을 추가하여 쿼리문의 결과값을 수정 여러개의 결과값을 받아 올 수 있도록 List를 추가하는 등 자료형을 바꿔준다. => 작성 한 mapper에서 List로 수정하여 에러를 잡음. 게시글이 ..

JAVA - SPRING 2022.11.21

[Spring Boot] 윈도우 h2 console , bat 실행 안됨 해결법

인프런에서 김영한님 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의를 듣는 도중 H2 Database를 사용해야했다. 현상) h2.bat파일, h2w.bat파일을 더블클릭 시, 실행창이 아예 나타나지 않고 실행과 동시에 자동으로 종료됨. h2 console이나 기타 등등 실행파일도 실행과 동시에 자동종료되면서 H2 콘솔 창이 인터넷브라우저에 띄워지지가 않고 접속 자체가 안됨. cmd창에서는 명령어에 대한 설명이 나오고 계속하려면 아무 키나 누르라고 하지만 아무키나 누르면 창이 종료됨.. 왜 아무키나 누르라 해놓고 누르면 사라지는거냐..ㅜㅜ 원인) 사실 원인도 알지 못하고 왜 그런지는 아직 못찾았음 해결하기 위한 시도) 버전오류를 줄이기 위해 강의와 같은 버전(1.4.20..

JAVA - SPRING 2022.11.16

[Spring Boot | IntelliJ] Gradle 배포하기

IntelliJ를 이용하여 Gradle 파일을 배포하기 1) 우측에 [Gradle]버튼을 눌러 창을 보이게 한다. 해당 창에는 [프로젝트 명(hello-spring) > Tasks > build > bootJar]에 있는 bootJar를 클릭하면 IntelliJ에서 알아서 Gradle 프로젝트의 jar파일을 빌드 및 생성한다. 성공적으로 빌드가 완료되면 콘솔창 쪽에 [BUILD SUCCESSFUL]이라는 글씨가 나온다. 2) 해당 프로젝트가 있는 폴더에 가보면 [build]라는 폴더가 새로 생성된걸 알 수 있다. 3) [프로젝트 명 > build > libs]에 들어가면 jar파일이 생성된걸 확인 할 수 있다. IntelliJ에서는 간단히 bootJar 버튼 하나만 클릭하면 해당 프로젝트에 포함된 Spr..

JAVA - SPRING 2022.11.14