엔틸롭 캐년 근처의 홀 슈 밴드로 이동하여 비가 너무 많이 와서 잠시 쉬는 동안에 뜬 쌍무지개🌈 와 말도 안되게 아름다웠던 홀 슈 밴드

 

절벽의 바로 앞까지 가서 구경할 수 있었던 홀 슈 밴드, 마치 말 발굽 같이 생겼다고 해서 이름이 홀 슈 밴드라고 한다

 

 

 

 

 

- TIL -

문제 발생)

 

[TIL] 2024.11.18 - jsp 를 활용하여 이메일 인증 코드 발송하기

- TIL - 구현 목표)오늘은 프론트로부터 이메일 정보를 넘겨받아 백에서 랜덤한 회원가입 코드를 생성한 뒤 전달 받은 회원의 이메일로 회원가입 코드를 전송하는 코드를작성해보려 한다. 보통

youngho3358.tistory.com

 

이전에 구현했던 [TIL] 2024.11.18 - jsp 를 활용하여 이메일 인증 코드 발송하기 코드 부분에서 빌드 이후 배포과정까지 진행하니 오류가 발생했다.

이메일 발송 요청을 보내면 403 Forbidden 코드가 응답으로 돌아왔으며 도커 컨테이너 로그를 확인한 겨로가 오류는 아래와 같았다.

오류 내용은 다음과 같다.

 

 

 

문제 해결)

클래스 패스에서 해당 리소스의 파일을 찾을 수 없다는 얘기인데....

 

검색해보니 Spring Boot 프로젝트는 JAR 파일로 배포하게되면 JSP 파일이 resources/templates 경로에 존재하지 않고

WEB-INF/classes 경로로 이동하게 된다고 한다.

 

resources/templates 경로의 경우는 JSP를 제외한 템플릿 엔진(Thymeleaf, FreeMarker 등) 을 저장하는데 사용되는 경로라고 한다.

 

나는 해당 프로젝트에서 JSP 를 웹 뷰로 사용하지 않고 파일 자체를 읽어서 텍스트로 사용하는 형태이기 때문에

src/main/resources/static/emailForm.jsp

위의 경로로 jsp 파일을 저장하여 사용하기로 하였다.

 

resources 하위의 static 경로의 경우 JAR 파일로 빌드한 뒤에도 해당 경로를 유지한다.

 

기존 경로 > 변경 경로

 

기존 코드 경로

 

변경 코드 경로

 

 

현재 코드에서는 resource.getFile() 을 통해 호출하는데

JAR 파일로 패키징된 애플리케이션에서는 JAR 내부 리소스를 파일 시스템의 파일로 처리하려고 하면 예외가 발생하게 된다.

 

그러므로 나는 이 부분의 코드를 InputStream 으로 대체하여 빌드하였다.

InputStream 으로 스트림으로 내부 파일을 읽어들여 스트림 빌더를 사용하여 문자열로 변환하며 저장하게끔 하여 처리하였다.

 

 

 

경로와 코드를 변경한 뒤 build 하여 서버에 다시 배포한 뒤 테스트를 진행하였다.

scp -P [포트 번호] [로컬의 전송할 파일 경로] [서버 유저 계정]@[서버 아이피]:[전송 받을 서버의 파일 경로]

 

기존 도커 컨테이너 종료 및 삭제

 

변경 사항을 --build 옵션으로 빌드하면서 컨테이너를 실행

 

 

 

테스트 결과 이메일 인증이 정상적으로 날아가는 것을 확인하였다!!!

 

인증 메일 전송 완료

 

 

 

728x90
728x90

+ Recent posts