본문 바로가기
728x90

전체 글85

[JSTL / JSP] jstl/functions 의 split(fn:split) 공백 처리 주의점 [ fn:split 에 대한 간략한 설명 ] JSP에서 EL태그로 컨트롤러에서 넘어온 값을 처리하다보면, jstl functions를 이용해야 되는 경우가 있다. 주로 위와 같이 prefix로 fn을 설정하고 쓰게 되는데, 흔하게 쓰는 fn:length나 fn:split 등 편리한 기능을 제공한다. 그 중에서 이번엔 fn:split에 대한 내용을 공유하고자 한다. fn:split은 Java나 Javascript의 split과 유사한 기능을 제공한다. split은 문자열을 구분자(Delimiter)를 기준으로 나누어진 배열을 반환한다. 아래는 예제와 예제 코드이다. - 문자열 : "피자,햄버거,치킨,콜라" - 구분자 : "," - 반환되는 배열 : ["피자","햄버거","치킨","콜라"] String fo.. 2022. 1. 11.
[Javascript] 객체(Object) 배열과 객체 간 비교(배열 내 객체 유무 확인 / Array Object == Object ) Javascript에는 객체 타입이 존재합니다. 객체 타입은 {name : "Tom", food : "pizza"}와 같이 Key, Value 값으로 편리하게 쓸 수 있는 장점이 있습니다. 그래서 실무에서는 이런 객체를 배열에 담고 쓰는 경우가 종종 있는데요. 그러나 배열에 넣고 쓰다보니 배열에 이미 들어있는 객체인지 중복 여부를 체크해서 처리해야되는 경우가 발생합니다. 단순한 타입 비교라면, 그냥 == 비교로 하면 되겠지만, 객체는 그렇게 할 수 없습니다. 객체 타입은 참조에 의해 할당되고 복사되는 타입으로, == 이나 Object.is() 비교를 사용했을 때, 객체 자체가 아닌 각각의 변수들이 저장하고 있는 객체의 참조를 비교하기 때문에, 객체 간 Key와 Value값이 일치해도 참조값은 다르기 때문.. 2022. 1. 7.
[Spring / Legacy / Error] Cause: org.postgresql.util.PSQLException: timestamp without time zone 자료형인데 표현식은 character varying 자료형입니다. Hint: 다시 정의하거나 형변화자를 사용해보십시오 Position: 290 프로젝트에서 PostgreSQL을 사용하면서 가끔 예상치 못한 문제를 맞닥뜨릴 때가 있다. (물론, 오히려 더 쉽게 문제를 해결할 수 있는 경우도 있다) 그 중에서도, 이번에는 나를 처음으로 당황하게 했던 문제가 있어 발생했던 에러와 해결방법을 공유하고자 한다. 해당 에러는 현재 시간을 CURRENT_TIMESTAMP로 간단하게 처리할 수 있는 timestamp 데이터 타입을 사용하게 되었을 때 발생했다. 우선, 에러의 로그는 다음과 같다. timestamp without time zone 자료형인데 표현식은 character varying 자료형입니다. 에러가 발생했던 원인은 다음과 같다. DB에서 timestamp 타입의 컬럼을, Java에서 Java.util.Date 타입으로 처리하고 있었다. te.. 2022. 1. 5.
[Spring / Legacy] Multipart multiple file의 ajax formdata를 이용한 다중 파일 업로드 multiple 속성의 File input 을 업로드하려고 하니, 문제가 발생했다. 파일을 포함한 모든 데이터를 FormData를 통해 담아서 AJAX로 서버로 전송해주는데, 아무리 받으려고 해도, 전송되는 파일 리스트의 사이즈가 계속 0인 것이다. 문제가 되는 코드는 아래와 같다 this.prcAdd = () => { let formData = new FormData(); formData.append('file', $('#file')[0].files); } $.ajax({ type : "POST", enctype : "multipart/form-data", url : "/prcAdd", cache : false, contentType : false, processData : false, data : f.. 2022. 1. 4.
[Spring / Legacy] multiple input file을 이용한 파일 전체/부분 삭제 구현 (Javascript) Spring Legacy 프로젝트를 진행하는 도중, 여러 개의 파일을 한번 에 추가해야 할 일이 있었다. 여러 개의 Single 파일을 한 줄씩 입력하게 하면 편했겠지만, 많은 파일을 한 번에 올릴 확률이 더 크기 때문에 Multiple 속성 ( '' ) 으로 구현하였다. 그러다보니 예상치 못한 문제에 부딪혔었는데, 부딪혔던 문제와 해결 방법을 기록으로 남겨 공유하고자 한다. ※ File 타입의 Input은 반드시 알아두어야 할 점이 있다. value 값을 사용자가 선택하는 것 외에 임의적으로 입력할 수 없도록 되어 있다는 점이다. 생각해보자. 코드에서 파일을 직접 입력할 수 있다면 보안 이슈가 아주 쉽게 발생하게 될 것이다. 그러니 input 밖에서 파일을 따로 처리하고 싶다면, 사용자에게 입력받은 파.. 2021. 12. 31.
[Spring Boot / Error] org.h2.jdbc.JdbcSQLException: Connection is broken: "java.net.SocketTimeoutException: connect timed out: localhost" [90067-175] 코드 작성을 하다보면 많은 에러를 만나게 된다. 그 중에서 오늘은 connect timed out 에러에 대해서 알아본다. 프로젝트를 켜고 Run Project를 진행시켰더니 다음과 같은 에러로그가 검출되었다. org.h2.jdbc.JdbcSQLException: Connection is broken: "java.net.SocketTimeoutException: connect timed out: localhost" [90067-175] connect timed out, 말그대로 연결이 되지 않는다는 뜻이다. 무엇과 연결되지 않는지 앞 부분을 보니 org.h2.jdbc.JdbcSQLException 이라고 되어있다. [ 해결 방법 ] 즉, h2 DB와 연결되지 않아서 발생한 에러임을 알 수 있다. h2.s.. 2021. 12. 30.
[Spring / Legacy] Jasypt Library를 이용한 DB 계정 정보 암호화 프로젝트를 진행하다보면 낮은 버전의 JDK를 사용해야 할 때가 있다. 이 때, DB 계정 정보를 빠르게 암호화할 수 있는 방법이 있다. 바로 Jasypt 라이브러리를 이용하는 것이다. 버전 정보 낮은 버전의 JDK 1.8 버전 예 ) 1.8.0_151 등 (https://www.oracle.com/kr/java/technologies/javase/javase8-archive-downloads.html) jasypt-1.9.2 jasypt-1.9.2-dist.zip (SOURCE FORGE에서 다운로드) IDE Eclipse [ 프로젝트 적용 순서 ] 1. 시스템 환경 변수 설정이 되어 있어야 한다( 기존 환경 변수가 낮은 버전이 아니라면 일시적으로 환경 변수를 변경 => cmd로 암호화 값을 받은 후 다.. 2021. 12. 23.
[Spring Boot / Error] 빌드 시 "Execution failed for task ':compileJava'.> invalid source release: 11" 에러 발생 Windows PowerShell에서 Spring Boot로 작업된 프로젝트를 빌드하는 작업을 수행하게 되었다. ./gradlew clean build 명령어를 통해서 clean과 빌드를 같이 수행하였다. 그러나 빌드 도중 다음과 같이 빌드 실패(FAILURE : Build failed with an exception) 문제가 발생하였다. 여기서 중요한 에러 메시지는 빨간 글씨 이후의 다음 내용과 같다. * What went wrong: Execution failed for task ':compileJava'. > invalid source release: 11 [ 해결 방법 ] 에러메시지를 보면, Java 11버전으로 설정이 제대로 맞추어 있지 않아 발생한 에러라는 것을 알 수 있다. gradlew 파.. 2021. 12. 20.
[Spring Boot / Windows] JUnit을 위한 Live Template 생성(IntelliJ) Spring Boot 실습 (김영한 님의 스프링 부트와 JPA활용 강의) 도중 문제가 생겼다. 영상에서는 tdd 라는 명령어로 코드 자동 완성이 되는데, 내 코드에서는 자동 완성 기능이 먹히지 않는 것이다. 이는 IntelliJ의 Live Template을 통해서 이루어진 것이라고 한다. 그래서 Live Template 생성 방법을 작성 정리 해보고자 한다. [ 생성 방법 (Windows OS 기준) ] 1. 'File' 탭 > 'Settings' > 'Editor' > 'Live Templates' > 'Java' > '+' > '1 Live Template' 선택 2. Abbreviation, Description, Template text에 내용입력 > 'Define' 클릭 - Abbreviatio.. 2021. 12. 20.
[Spring Boot / Gradle] build.gradle의 dependencies(의존성/종속성) 버전 설정 (IntelliJ) Spring Boot 실습 도중 H2 데이터베이스를 의존성 추가하려고 하는데, 낮은 버전의 H2 데이터베이스를 사용할 필요가 있어 dependencies 추가 시 버전을 따로 설정해줄 필요가 있었다. dependencies { runtimeOnly 'com.h2database:h2' } 우선 기본적인 의존성 설정이다. 편의상 다른 의존성은 제외하고 H2 데이터베이스만을 남겼다. [ 해결방법 ] 스프링 가이드를 참고한 결과, 해결방법은 간단했다. dependencies { runtimeOnly 'com.h2database:h2:1.3.175' } ※ 기존 의존성에 ' : '와 원하는 버전을 추가하면 된다. - 버전 정보 - IntelliJ IDEA 2021.3 H2 1.3.175 Spring Boot 2... 2021. 12. 17.
[Spring Boot / Gradle] Log4J 2 이슈에 따른 2.17.1 업데이트 대응 및 spring-boot-starter-logging 제거 (IntelliJ) 최근 Apache Log4j 2 취약점이 발견되어 이슈가 되고 있습니다. 며칠 전만 해도 2.15.0버전으로 업데이트를 해야한다고 했는데, 2.15.0도 해당 취약점에 대해 특정 구성에서 불완전한 것으로 나타났다고 합니다. 2.17.0 버전에서 신규 취약점 CVE-2021-44832이 발견되었습니다. 다시 2.17.1 버전으로 업그레이드 해야 하며, 한동안 취약점은 계속 발생할 수 있어 지속적으로 관심을 가져야 할 것 같습니다. [ 참고 ] Log4J2 신규 취약점 관련 링크 https://logging.apache.org/log4j/2.x/security.html Spring Boot로 실습 프로젝트를 생성하는 도중 spring-boot-starter에 'logging > log4j:log4j-to-s.. 2021. 12. 15.
[H2 / Error] Database not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 실습을 위해 H2 데이터베이스를 사용하는 도중, 새로운 Database를 만들려고 하니 문제가 발생하였다. 발생 원인은 H2 데이터베이스의 1.4.198 버전부터는 보안 이슈로 데이터베이스를 자동으로 생성해주지 않기 때문에 해당 데이터베이스가 없기 때문이라고 한다. [ 일단 기본적인 해결 방법은 다음과 같다 ] 1. H2 콘솔에서 Generic H2(Server)로 접속하기 전 Generic H2(Embedded)로 데이터베이스를 입력 후 연결버튼을 클릭하여 데이터베이스를 생성해준다. 생성 이후에는 연결 끊기 버튼을 클릭 후, 다시 Generic H2(Server)를 선택하여 tcp://localhost/~/dbname(자동입력됨)으로 연결하면 된다. 2. 해결되지 않으면 주소창에 숫자로 된 IP주소가 .. 2021. 12. 15.
[Spring Boot / Error] java: warning: source release 11 requires target release 11 Spring Initializr로 Java버전을 11로 설정하고 GENERATE한 파일을 IntelliJ로 Import한 뒤 실행해보니 오류가 발생했다. 오류 메세지는 ' java: warning: source release 11 requires target release 11 '. JDK 버전이 제대로 설정되어 있지 않아 발생한 문제였다. 해결방법은 다음과 같다. [ Windows 기준 ] 1. IntelliJ > File > Project Structure(Ctrl + Alt + Shift + S) > Project Settings > Project 에서 SDK를 JDK 11버전으로 변경해주면 된다. ( 변경방법은 https://www.oracle.com/kr/java/technologies/java.. 2021. 12. 15.
반응형