개발 127

[SpringBoot 3] war 배포하기 404 에러, SpringBoot 2와 3의 차이

SpringBoot 프로젝트를 생성할 때 2점대 버전은 deprecated 되었고 3점대만 만들 수 있게 2023년 11월부터 변경되었다. SpringBoot 2점대에서 SpringBoot 3점대로 올라오면서 변경된 점 - javax 패키지가 jakarta 패키지로 이름 변경 - jsp를 사용하는 경우 gradle에서 dependencies에 추가하는 버전도 아래와 같이 변경되었다. implementation 'javax.servlet:jstl:1.2' implementation group: 'org.glassfish.web', name: 'jakarta.servlet.jsp.jstl', version: '2.0.0' - 자바의 최소 버전이 17버전으로 변경되었다. (자바 11 빌드 안됨!) - 톰캣 버..

개발/Spring 2023.11.28

[JUnit Test] JUnit 수행 시 에러 - NoSuchMethodError: 'java.util.Set org.junit.platform.engine.TestDescriptor.getAncestors()

STS, gradle 빌드, 스프링부트 버전 2.7.x를 쓰고 있다. 사용하고 있는 디펜던시는 아래와 같다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.1' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.springframe..

개발/ETC 2023.11.20

[SpringBoot 3, gradle] JSTL 사용 시 에러 (TagLibraryValidator)

JSTL을 사용하려는데 아래와 같은 에러가 발생 했다. There was an unexpected error (type=Internal Server Error, status=500). javax/servlet/jsp/tagext/TagLibraryValidator java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator 스프링부트 3.0.1 버전을 쓰고 있었는데 스프링부트가 3점대로 올라오면서 톰캣이 10 버전으로 변경 되었고 톰캣 라이브러리와 충돌 문제가 있나보다. 그래서 jstl의 버전을 올려야 한다. build.gradle의 dependencies에서 2.0.0으로 업데이트 하고 gradle refresh를 해주면 에러..

개발/JSP 2022.12.30

[MAC] Mac OS에서 AWS 서버 접속하기

1. AWS 서버 생성 시 SSH 인증을 위한 개인키를 다운로드 받는다. 개인키의 확장자는 반드시 .pem 으로 받아야 한다. 2. 터미널을 열고 .pem 파일이 있는 위치로 이동한다. 예) $ cd Downloads 3. .pem 파일의 권한을 아래와 같이 변경한다. $ chmod 600 aws-key.pem 4. aws 서버에 접속한다. $ ssh -i aws-key.pem ec2-user@아이피주소 5. 접속이 완료되면 명령어 쓰는 곳(달러 표시) 앞에 서버 정보가 나올 것이다. [ec2-user@아이피주소] $

개발/ETC 2022.09.07

[sourcetree] 소스트리 클론 시 창 무한으로 뜨는 현상(SSH key)

컴퓨터 운영체제는 Windows이며 sourcetree와 git의 로그인 연동은 SSH Key 방식으로 해놓은 상태이다. 저장소 경로 부분에 git의 주소를 넣고 다음 칸으로 넘어가려고 하면 깃 주소를 인식하지 못하고 아래 창들이 무한으로 계속 뜨는 현상이 있었다. 도구 > 옵션 > SSH 클라이언트 설정에 개인키(ppk 파일)를 등록했는데도 불구하고 무한으로 계속 저 세 개의 창이 계속 뜸... 해결 방법 오른쪽 아래 트레이 부분 ^ 을 클릭하면 컴퓨터가 모자를 쓰고 있는 아이콘이 보인다. 이것을 열어본다. 여기서 add key를 누른 후 파일 선택하는 창이 뜨면 내 개인키(ppk 파일)을 열기 한다. 지금 이 창이 SSH 인증을 하도록 돕는 프로그램인데 알 수 없는 이유로 인증이 꼬인듯 하다. 그래서..

개발/ETC 2022.09.02

[깃허브] SourceTree 사용 시 git의 주소가 인식되지 않을 때(push, pull, clone 안될 때)

소스트리에서 원격서버와 연결이 안돼서 에러가 날 때 출력 전부 보기 버튼에 체크를 하면 아래와 비슷한 에러 메시지를 볼 수 있다. git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is. The server's rsa2 key fingerprint is: ssh-rsa 2048 aa:d1:aa:00:bb:c0:b0:a0:d0:e0:f0:a0:a1:00:11:ee If you trust this host, enter "y..

개발/ETC 2022.07.11

[SpringBoot] AJAX로 내려온 date 응답값 timezone이 UTC로 나오는 현상

1) 일반 통신일 때는 문제가 없다. MySql에서 timestamp 타입으로 저장한 Date에 대해서 데이터를 조회해서 Model에 담아 내려주면 우리나라 시간으로 정상적으로 나온다. 2) AJAX 통신일 때 UTC 시간으로 응답이 내려온다. MySql에서 timestamp 타입으로 저장한 Date에 대해서 데이터를 조회하고 @ResponseBody 어노테이션을 통해 Jackson 라이브러리로 date를 담아서 JSON으로 내리면 UTC 시간으로 나오는 현상이 발생한다. 이유는 Jackson 라이브러리에서 타임존을 맞춰주지 않았기 때문이다. application.properties 또는 yml 설정을 통해 Jackson의 타임존을 아래와 같이 맞춰주어야 한다. spring.jackson.deserial..

개발/Spring 2022.07.11

[SpringBoot / JSP] AJAX로 여러 이미지 파일 업로드 서버에 전송하기

1. JSP [태그 부분] 업로드 [자바스크립트 부분] var inputFileList = new Array(); // 이미지 파일을 담아놓을 배열 (업로드 버튼 누를 때 서버에 전송할 데이터) // 파일 선택 이벤트 $('input[name=images]').on('change', function(e) { var files = e.target.files; var filesArr = Array.prototype.slice.call(files); // 업로드 된 파일 유효성 체크 if (filesArr.length > 3) { alert("이미지는 최대 3개까지 업로드 가능합니다."); $('input[name=images]')val(); return; } filesArr.forEach(function(f..

개발/Spring 2021.09.27

AJAX로 JSON 보내서 컨트롤러(서버)에서 받기

[{'fruit1':'apple', 'fruit2':'banana'}] 위와같은 형태를 서버에서 List로 받게 하려면 1. 클라이언트 - javascript let param = [{'fruit1':'apple', 'fruit2':'banana'}]; $.ajax({ type:'post' , contentType:'application/json' , data: JSON.stringify(param) , url: '/test' , success: function(data) { alert(data); }, error:function(e) { alert("error: " + e); } }); - Request의 Method는 GET이 아닌 메소드로 (Request Body에 JSON을 담아 보낼 것이기 때문..

개발/Spring 2021.09.24