크리스피코드
코드 & 코드

전체 글

JavaScript/JavaScript

[Javascript] 문자열 바이트 크기 구하기

문자열을 BLOB 타입으로 만든 후 그 크기를 구하는 방식으로 문자열의 바이트 크기를 구할 수 있다. 영문자의 경우 한 글자에 1바이트, 한글의 경우 한 글자에 3바이트를 사용한다. const byteSize = str => new Blob([str]).size; console.log(byteSize('hello')); // 5 console.log(byteSize('안녕')); // 6

웹 개발/웹 개발

파일 삭제 (java.nio.file.Files)

0. java.nio.file.Files void delete(Path path) 파일 또는 디렉토리를 삭제하는 메서드. 해당 경로에 파일 또는 디렉토리가 존재하지 않을 경우 NoSuchFileException이 발생한다. 디렉토리의 경우 비어있어야 삭제할 수 있다. 비어있지 않을 경우 DirectoryNotEmptyException이 발생한다. 파일이 열려있거나 다른 프로그램이 사용 중일 경우에도 예외가 발생한다. public void deleteFile(String filename){ Path targetFile = Paths.get("D:\\uploads", filename); Path targetDir = Paths.get("D:\\uploads\\testdir"); try{ Files.delet..

JavaScript/JavaScript

[Javascript] fetch 응답 null 체크하기

0. fetch의 response fetch()를 사용해 서버와 통신에 성공하면 그에 맞는 응답을 받게 된다. 다만 내가 처리하고자하는 데이터에서는 데이터가 없는 경우 null이 반환되는데 이 때문에 'SyntaxError: Unexpected end of JSON input' 에러가 발생하였다. fetch('/test') .then(res => { if(!res.ok) throw new Error(); return res.json(); }) .then(jsonData => { console.log(jsonData); }) .catch(() => { alert('에러가 발생했습니다.'); }) 만약 응답으로 들어오는 데이터가 null일 경우 text()를 사용해 문자열로 변환할 경우 빈 문자열이 반환된다..

Java/Spring Framework

[Spring Framework] 스프링 시큐리티에서 로그인 성공 후 로그인 전 요청했던 URL로 리다이렉트 하기

0. AuthenticationSuccessHandler 스프링 시큐리티에서는 authentication-success-hander-ref 를 통해 로그인에 성공했을 경우 작업을 수행할 클래스를 설정할 수 있다. 이 경우 로그인 했을 때 필요한 작업을 수행할 수 있지만 onAuthenticationSuccess()의 파라미터로 받는 HttpServletRequest 또는 HttpServletResponse를 사용해 다음으로 진행할 경로를 지정해주어야 한다. 1. SavedRequestAwareAuthenticationSuccessHandler AuthenticationSuccessHandler를 사용하지 않았을 경우, 스프링 시큐리티에서는 기본적으로 SavedRequestAwareAuthenticatio..

Java/Spring Framework

[Spring Framework] UserDetailsService에서 HttpServletRequest 받기

0. RequestContextListener 설정 web.xml에서 RequestContextListener 리스너 클래스를 등록한다. org.springframework.web.context.request.RequestContextListener 1. HttpServletRequest 꺼내기 UserDetailsService의 구현 클래스에서 RequestContextHolder에서 Request 객체를 꺼내어 사용하면 된다. @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { EmployeeVO empVO = new EmployeeVO(); empVO.setEmpId(use..

JavaScript/JavaScript

toISOString()의 결과를 한국시간에 맞추기

toISOString()은 Date를 yyyy-mm-ddThh:mm:ss 형식의 문자열로 반환한다. 하지만 toISOString()은 9시간 전 시간을 출력하는데 이는 함수가 사용하는 시간대가 UTC+0이기 때문이다. 한국은 UTC+9이기 때문에 시차가 발생하게 된다. 이를 해결하기 위해서 getTimezoneOffset()을 사용하여 Date의 시간을 맞추어주어야한다. getTimezoneOffset()은 UTC와 LocalZone의 시간차를 계산해준다. 한국의 경우 UTC+9이기 때문에 -540(분 단위)이 반환된다. new Date()의 생성자 파라미터에는 ms 단위로 넘겨주어야하므로 60000을 곱하여 ms 단위로 만들어준 뒤 현재 시간과 계산해 한국 시간을 구하면 된다. let date = ne..

JavaScript/JavaScript

[JavaScript] 자바스크립트 객체를 쿼리스트링으로 변환하기

0. Object.entries() entries() 함수는 자바스크립트의 객체를 배열로 변환해준다. 이 배열에는 프로퍼티의 ['key', 'value'] 배열이 프로퍼티의 수만큼 포함되어있다. let data = { name : 'test', age : '27', job : 'programmer' } console.log(Object.entries(data)); // [Array(2), Array(2), Array(2)] // 0: ['name', 'test'] // 1: ['age', '27'] // 2: ['job', 'programmer'] 1. key와 value 사이에 '=' 넣기 Object.entries()로 객체를 배열로 변경했으니 이번에는 key와 value 사이에 '='을 넣어줄 차례..

웹 개발/웹 개발

혼합 데이터 타입의 JSON 데이터 받기

0. 혼합 데이터 타입 객체 혼합 데이터 타입 객체 (Mixed Data Type Object)는 다양한 데이터 타입이 공존하는 객체를 말한다. let data = { name : 'test', job : 'student', hobby : ['soccer', 'movie', 'videogame'] } 특히 공공데이터 API를 활용하다보면 문자열과 배열이 복잡하게 얽힌 JSON 데이터를 볼 수 있다. 1. GSON 사용하기 Gson을 사용하여 이 복잡한 JSON 데이터를 손쉽게 자바 객체로 변환할 수 있다. 우선 받고자하는 데이터와 비슷한 형태의 클래스를 만든다. 위의 자바스크립트객체를 JSON으로 변환하여 컨트롤러에서 받는 과정을 예시로 들어보자. 위에 작성된 데이터의 경우 2개의 문자열 데이터와 하나의..