웹 개발 272

thymeleaf vs jsp

java를 배우면 기본적으로 jsp를 배우게 됩니다. jsp는 일반적인 java MVC 구조에서 View 역할을 하는데, 요즘 Spring에서는 View로 Thymeleaf를 밀고 있습니다. 1. thymeleaf와 jsp의 차이 jsp의 경우에는 servlet 형태로 변환되어 실행됩니다. servlet이 자바 소스이기 때문에 jsp에서도 java코드를 사용할 수 있습니다.(하지만 보통 jsp 내부에 java코드를 넣는 것은 추천하지 않습니다.) 반면, Thymeleaf는 html, xml, js, css 등을 처리할 수 있는 웹 및 독립형 환경에서 사용이 가능한 java 템플릿 엔진입니다. Thymeleaf는 html 파일을 가져와서 파싱 하고 그걸 분석하여 정해진 위치에 데이터를 뿌려줍니다. Thym..

웹 개발 2022.03.13

spring boot의 application.properties에서 @Scheduled의 cron값을 설정하는 방법

다음과 같은 코드가 있습니다. @Component @EnableScheduling public class ScheduledTasks { @Autowired private TaskJob taskJob; @Scheduled(cron = "0 0/5 * * * ?") public void foo(){ taskJob.doSomething(); } } 이 코드를 보면 @Scheduled(cron = "0 0/5 * * * ?") 라는 부분이 있는데, 이 부분을 수정해야 하는데, 이것을 수정하기 위해 다시 빌드를 하는건 곤란합니다. 이 경우 다음과 같이 손쉽게 처리할 수 있습니다. application.properties에서 @Scheduled의 cron값을 설정하는 방법 1. 먼저, application.prop..

웹 개발 2022.03.13

html파일을 local에서 실행할 때 CORS 에러가 발생하는 이유

html파일을 tomcat 등에서 실행하지 않고 local(하드디스크 등)에서 직접 실행할 때, 다음과 같은 에러가 발생하는 경우가 있습니다. Access to script at 'file:///C:/경로' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, edge, https, chrome-untrusted. 이 에러가 발생한 코드는 다음과 같습니다. 1. 해결방법을 먼저 말하면, 간단합니다. 서버에 올리면 됩니다. 그렇다면 왜 하드디스크에서 실행하면 CORS가 발생하는 것일까요? 2. 먼저 CO..

웹 개발 2022.03.02

Spring Controller에서 @PathVariable에 특수문자 허용하는 방법

Spring Controller에서 특히 REST API에서 특수문자를 허용해야 하는 경우가 있습니다. (특정 버전 이후에는 특수문자가 그냥 허용된다고 합니다.) 예를 들어서 다음과 같은 경우입니다. 문자가 잘리는 예시 1. 요청 URL GET http://localhost:8080/test/yjh5369@tistory.com 2. Controller import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation..

웹 개발 2022.02.13

[spring] Json return 시, null 항목 제거하는 방법

Spring에서는 @ResponseBody를 통해 DTO, VO, Map 등을 리턴하면 JSON형태로 변환됩니다. 그 과정에서 특정 키에 null이 있어도 key: null과 같이 리턴이 됩니다. 아래와 같은 코드가 있다고 가정해 봅시다. import lombok.Getter; import lombok.Setter; @Getter @Setter public class UserDto { private int code; private String id; private String name; private int age; } import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annot..

웹 개발 2022.02.13

[java Spring] RestTemplate SSL ignore

Spring에는 RestAPI 호출을 도와줄 RestTemplate를 제공합니다. 이 때 HTTP가 아닌 HTTPS를 호출하면 아래와 같은 오류가 발생하는 경우가 있습니다. java.security.cert.CertificateException: No name matching localhost found unable to find valid certification path to requested target 이 오류들은 사설인증서를 사용할 경우, 신뢰하는 인증서목록에 등록되어 있지 않을 경우, 그리고 기타 인증서에 문제가 있을 경우 발생하는 오류입니다. 해결방법은 인증서를 추가하거나, 모든 인증서를 신뢰하는 방법이 있는데 이 글에서는 모든 인증서를 신뢰하는 방법에 대해 알아보고자 합니다. 1. 먼저, ..

웹 개발 2022.01.26

Spring Boot OAuth2 – AuthorizationServer

1. OAuth2란? OAuth2(Open Authorization, Open Authentication 2)는 인증을 위한 개방평 표준 프로토콜입니다. 이 프로토콜은 Third-Party 프로그램에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공합니다. 구글, 페이스북, 카카오, 네이버 등에서 제공하는 로그인 기능도 OAuth2 기반의 사용자 인증을 제공하고 있습니다. 2. OAuth2 용어 정리 Resource owner(자원 소유자) Resource server(구글, 페이스북, 카카오 등)의 계정을 소유하고 있는 사용자를 의미합니다. Client 구글, 페이스북, 카카오 등의 API 서비스를 이용하는 제 3의 서비스 Authorization Ser..

웹 개발 2022.01.06

HTML CSS에서 font에 테두리(외곽선) 넣기

1. text-shadow를 이용 기존 CSS에서는 그림자를 넣는 text-shadow를 이용해서 편법으로 외곽선을 넣을 수 있습니다. 테두리 스타일 각각 순서대로 왼쪽, 아래, 오른쪽, 위쪽을 그려줍니다. 또한 -1px, 0, #000에 대한 값은 x축 position, y축 position, 색상입니다. 1px에서 1보다 큰 숫자를 넣으면 외곽선이라고 하기 어려워집니다. 2. text-stroke를 이용 이 기능은 비표준이기 때문에 모든 브라우저에 동작하지 않으며(특히 IE) 차후 동작이 변경될 수 있습니다. /* Width and color values */ -webkit-text-stroke: 4px navy; text-stroke: 4px navy; /* Global values */ -webk..

웹 개발 2021.12.19

java에서 logback.xml 경로 변경하는 방법

logback을 사용하면서 logback의 설정을 변경해야 할 경우가 있습니다. java web project에서는 logback.xml을 수정 후 WAS를 재시작하면 되고 Spring boot의 경우에는 application.properties의 옵션으로 logback.xml의 경로를 변경할 수 있습니다. 그런데, Runnable jar의 경우 jar안에 logback.xml이 포함되어 있어서 변경하기 애매합니다. (물론.. jar파일 안의 xml 파일을 수정하면 되긴합니다.) 불편하게 jar파일 안의 xml파일을 수정하지 않고 다른 좋은 방법이 있는데, 다음과 같습니다. 1. -Dlogback.configurationFile 옵션 사용 다음과 같이 java를 실행할 때의 옵션으로 파일 경로를 변경할 ..

웹 개발 2021.12.18

div(레이어) 밑의 객체를 클릭 가능하게 하는 방법

기본적으로 HTML에서 DIV밑의 DOM 객체를 클릭할 수 없습니다. 만약 워터마크를 표시하기 위해서 position:absolute; z-index: 9999 등을 사용해서 DIV를 맨 앞으로 빼서 화면을 덮었다면 아래 객체들을 하나도 클릭할 수 없는 문제가 발생합니다. 이 경우 간단하게 아래 CSS를 통해 문제를 해결할 수 있습니다. pointer-events:none; pointer-events CSS 속성은 그래픽 요소가 어떤 상황에서 포인터 이벤트의 대상이 될 수 있는지 지정합니다. 이 CSS 속성의 브라우저 지원 상황은 다음과 같습니다. 이 속성의 자세한 내용을 확인하려면 여기를 클릭하시면 됩니다.

웹 개발 2021.12.18
728x90
loading