반응형

웹 개발 273

Get first and last day of month, LocalDate

특정 month의 1일과 마지막 날짜를 구하고 싶다면 아래와 같이 하면 됩니다. 방법 1. LocalDate monthstart = LocalDate.of(year,month,1); LocalDate monthend = monthstart.plusDays(monthstart.lengthOfMonth()-1); 방법 2. Java에서 제공하는 YearMonth class 사용 YearMonth month = YearMonth.from(date); LocalDate start = month.atDay(1); LocalDate end = month.atEndOfMonth(); 만약, 이번달의 1일과 마지막 날짜를 구하고 싶다면 아래와 같이 할 수 있습니다. LocalDate start = YearMonth.n..

웹 개발 2020.12.25

Spring Boot에서 undertow 사용하는 방법

undertow란? 초경량 & 고성능 웹 서버 NIO 기반의 Bloking / NON-Bloking API 모두 제공 Java로 구현되어 임베디드 모드의 모든 JVM 기반 응용 프로그램에서 사용 가능 Apache License, version 2.0을 따르는 오픈소스 Java Servlet 3.1과 WebSocket을 구현하고 HTTP upgrade를 지원 Tomcat을 사용하면 안 되는 이유 Tomcat의 경우 시스템에 따라 원인도 모르게 Tomcat이 동작하지 않는 경우가 발생하는 경우가 은근히 잦습니다. 그러나 상용 WAS들은 안정적인 서비스 운영이 가능합니다. 하지만, 비용적인 문제로 Tomcat을 사용하는 경우가 많습니다. JBoss는 Tomcat을 버리고 Netty라는 아주 뛰어난 Java N..

웹 개발 2020.12.25

Spring boot 오류 처리

오류처리는 애플리케이션 개발에 있어서 매우 큰 부분을 차지합니다. 오류 예측과 예방, 그리고 오류를 빨리 발견하고 고칠 수 있는 것은 개발자의 필수 조건입니다. ErrorController Spring boot에서 별 다른 설정 없이 웹 애플리케이션을 실행한 후 404 Not Found 가 발생하면 아래와 같이 응답합니다. 1. 브라우저에서 호출 2. json 응답 Content-Type: application/json { "timestamp": "2020-12-24T15:34:44.447+0000", "status": 404, "error": "Not Found", "message": "No message available", "path": "/" } Spring boot의 기본 오류 처리 proper..

웹 개발 2020.12.24

spring boot에서 jsp 사용하기

spring boot에서는 기본적으로 jsp를 권장하지 않습니다. 하지만 jsp를 사용해야 하는 경우에는 아래와 같이 하면 됩니다. 1. 의존성 추가 1.1 gradle compile('org.apache.tomcat.embed:tomcat-embed-jasper') compile('javax.servlet:jstl:1.2') 1.2 maven javax.servlet jstl org.apache.tomcat.embed tomcat-embed-jasper 2. jsp 파일을 src//main/webapp/WEB-INF/views에 위치 3. application.properties에 아래 내용 추가 spring.mvc.view.prefix: /WEB-INF/views spring.mvc.view.suff..

웹 개발 2020.12.21

spring boot에서 외부라이브러리(jar) 추가 방법

spring boot + gradle 환경에서 외부 라이브러리(jar)를 추가하는 방법입니다. gradle에서 lib를 추가하기 위해서는 build.gradle 파일에 다음과 같이 명시해야 합니다. 1. 한 개의 파일을 넣는 방법 dependencies { implementation files('libs/local.jar') } 2. 특정 디렉토리에 위치한 모든 라이브러리를 추가하는 방법 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } build.gradle을 추가한 후, build gradle을 하면, 외부 라이브러리인 .jar를 사용할 수 있게 됩니다.

웹 개발 2020.12.21

HTML, JSP에서 브라우저 캐시 사용하지 않는 방법

웹 개발을 하다 보면 가장 많이 발생하는 이슈 중 하나는 분명 수정해서 보내줬는데 받은 쪽에서 에러가 났다던지, 변경이 안되었다던지 하는 경우가 있습니다. 이런 경우는 웹 개발자의 최대의 적 중 하나인 브라우저 캐시 때문입니다. 그래서 항상 하는 말이 "캐시 지우셨나요?"입니다. 다행히 HTML과 JSP에서는 브라우저 캐시를 사용하지 않는 방법이 존재합니다. 1. HTML /*위의 명시된 날짜 이후가 되면 페이지가 캐싱되지 않는다.(1990년 이후 쭉 )*/ /*캐시된 페이지가 만료되어 삭제되는 시간을 정의하나 특별한 경우가 아니면 -1로 설정*/ /*페이지 로드시마다 페이지를 캐싱하지 않는다.(HTTP 1.0)*/ /*페이지 로드시마다 페이지를 캐싱하지 않는다.(HTTP 1.1)*/ 2. JSP

웹 개발 2020.12.20

spring에서 CORS 설정하기

교차 출처 리소스 공유(CORS, Cross-origin resource sharing)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 보냅니다. 별다른 설정을 하지 않을 경우 다른 도메인의 리소스를 접근하려고 하면 아래와 같은 에러 메시지가 브라우저에 표시됩니다. Access to fetch at ‘https://api.lubycon.com/me’ from origin ‘http://localhost:3000’ has been blocked by CORS policy: No ‘Ac..

웹 개발 2020.12.20

spring boot] URL에서 jsessionid 제거

jsessionid는 새 세션이 만들어지면 클라이언트가 쿠키를 지원하는지 여부를 서버가 알 수 없으므로, 쿠키와 URL에 모두 jsessionid를 만들어 주는 것을 의미하며 url에 붙이거나 헤더에 붙여서 나오게 됩니다. 클라이언트가 두 번째 요청부터 세션 쿠키를 보내오면 URL에 jsessionid를 붙이지 않고, 쿠키가 없으면 계속 URL에 jsessionid를 붙이게 됩니다. 그런데 문제는, jsessionid를 탈취당하면 사용자 ID, 비밀번호를 몰라도 접근이 가능하게 됩니다. 그래서 웹 보안취약점 점검에서는 jsessionid를 꼭 제거하게 되어있습니다. 방법 1. application.properties에 아래와 같은 옵션을 추가합니다. server.session.tracking-modes=..

웹 개발 2020.12.20

Spring boot] json 형식으로 return 시, date format

Spring boot에서 아래와 같은 class를 return하는 API가 있다고 가정합니다. public class User { private String userId; private Date createDate; } createDate가 String이라면 상관없지만, 위와 같이 Date형태이거나, LocalDateTime 같은 자료형이라면 원하는 형태로 return되지 않습니다. 이 때, 아래와 같이 하면 Date를 내가 원하는 format으로 return 할 수 있습니다. 방법 1. application.properties에 아래와 같이 setting spring.jackson.date-format=yyyy-MM-dd 방법 2. 멤버 변수에 다음과 같이 setting public class User..

웹 개발 2020.12.13
728x90
반응형
loading