Programming 73

[Maven] 심각: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener

상황 : pom.xml 의 dependency 반영 과정 중 maven clean 후 tomcat을 재실행 한 결과 제목의 에러가 발생. 위 상황은 maven의 dependency가 정상적으로 처리되지 못한 경우 발생될 수 있는 에러이다. tomcat의 server plugin의 임시 deploy 디렉토리에 WEB-INF/lib에 jar들이 정상 배포되지 않아서 발생된다. 해결방법 개발환경 v1.0(eclipse 3.4기반) - Project 메뉴 선택 -> Clean... 선택 후 프로젝트 재빌드 수행 - 프로젝트 우클릭 -> Maven -> Update Project Configuration - 프로젝트 우클릭 -> Run as -> maven clean - 프로젝트 우클릭 -> Run as -> m..

Programming/Maven 2022.02.16

[Mybatis] Oracle foreach insert 처리 에러

필요성 : Mybatis의 foreach문을 통해 List 타입의 HashMap/Hashtable의 데이터를 insert 함으로써 다량의 데이터를 입력할 수 있다. Oracle 다중 데이터 insert INSERT ALL INTO TABLE명 (컬럼명...) VALUES (값...) INTO TABLE명 (컬럼명...) VALUES (값...) INTO TABLE명 (컬럼명...) VALUES (값...) . . . SELECT * FROM DUAL; Mybatis 상에서의 다중 데이터 insert (해당 데이터는 에러 발생함) INTO TEST_TABLE ( M_1, M_2 ) VALUES ( '${item.M_1}' , '${item.M_2}' ) 실행 해본 결과 ORA-00933 에러가 발생했다....

Programming/Mybatis 2022.02.16

[Tomcat] java.lang.OutOfMemoryError: Java heap space 오류

문제 : 외부 서버의 tomcat에서 대용량 엑셀 데이터를 파싱하는 과정에서 OutOfMemory 에러 발생. 1. Tomcat 설정 톰캣 카탈리나 파일을 열어서 메모리 값을 변경해 준다. 리눅스 - ~tomcatDIR/bin/catalina.sh 윈도우 - ~tomcatDIR/bin/catalina.bat set JAVA_OPTS=-server -Xms512M -Xmx2048M -XX:PermSize=256M -XX:MaxPermSize=512M Xms - [최소 메모리] Xmx - [최대 메모리] XX:PermSize - [최소 Perm 메모리] XX:MaxPermSize - [최대 Perm 메모리]

Programming/Tomcat 2022.02.16

[Spring] @Valid 어노테이션이 작동이 안 한다면?

이유 : spring boot 2.3 version 이상부터는 spring-boot-starter-web 의존성 내부에 있던 validation이 분리됬다.. 때문에 사용하는 spring boot version이 2.3 이상이라면 validation 의존성을 따로 추가해야 한다. org.springframework.boot spring-boot-starter-validation 해당 테스트를 위해 @Valid 가 포함되어 있는 데이터에 고의적으로 에러를 발생시켜 보았다. @Size 가 최소 2인 변수 name에 길이 1의 데이터를 입력. 400에러로 정상적인 Valid 어노테이션이 동작했음을 알 수 있었다. 참고) 해당 문제를 검색을 하다가 Hibernate Validator도 javax.validati..

Programming/Spring 2022.02.15

[Chrome] 확장프로그램 - JSON Viewer

RestAPI 테스트 할 때 JSON 데이터를 정렬해서 보여주는 크롬 확장프로그램. 구글 - '확장 프로그램' 검색 웹스토어 - 'json' 검색 - JSON Viewer 설치. 설치하면 rest 리턴 값이 아래 캡쳐 사진처럼 출력된다. +추가) http://json.parser.online.fr/ JSON 데이터를 파싱해주는 사이트. 위 툴을 이용하기 전에는 이 사이트를 사용했었다. 아직도 유용한 사이트인건 분명하다.

Programming/etc 2022.02.13

[Java] File Hash 값 추출

필요성) 파일 업로드 처리 과정중 해당 파일의 무결성을 체크하기 위해서 해시값을 추출하여 DB내에 기존 해시값과 비교. private static String hexEncode(byte[] bytes) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < bytes.length; i++) { sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1)); } return sb.toString(); } public static String makeFileHashMd5(String filename) throws Exception { InputStream fis = new FileInputS..

Programming/Java 2022.02.10

[JavaScript] javascript 상에서 form.reset()(or Button type="reset")

필요성 HTML 상에서 의 동작을 처리할 때, onClick을 실행 후 reset을 처리해주기 때문에, reset이 적용되지 않은 상태의 이벤트가 발생된다. Javascript 의 form 의 reset() 메소드는 hidden field 와 check, radio button 에 대해 초기화를 시켜주지 않는다. 따라서 form 의 모든 field 를 초기화 시키려면 아래의 메소드가 필요하다. $.fn.clearForm = function () { return this.each(function () { var type = this.type, tag = this.tagName.toLowerCase(); if (tag === 'form') { return $(':input', this).clearForm()..

[JavaScript] javascript.prototype 프로토타입 객체

자바스크립트는 프로토타입 기반 언어라고 불린다. 그만큼 자바스크립트에서 프로토타입은 중요하다. Prototype vs Class 객체지향 언어에서 가장 중요한 개념인 클래스(Class)는 보편적으로 잘 알려져있다. 자바스크립트 또한 객체지향 언어이다. 그러나 여기서 중요한 점은.... 자바스크립트에는 클래스라는 개념 대신 '프로토타입' 이라는 것이 존재한다는 것이다. 그렇기 때문에 자바스크립트가 프로토타입 기반 언어라고 불리기도 한다. 자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있다. 그리고 이것은 마치 객체 지향의 상속 개념과 같이 부모 객체의 프로퍼티 또는 메소드를 상속받아 사용할 수 있게 한다. 이러한 부모 객체를 Prototype(프로토타입) 객체 또는 줄여서 Prot..