템플릿 엔진으로 html 태그에 속성을 추가하여 동적으로 값을 추가하거나 처리할 수 있다.서버사이드 HTML 랜더링 (SSR) 타임리프는 서버에서 HTML을 동적으로 랜더링하는데 사용된다.네츄럴 템플릿 순수 HTML을 유지하면서 뷰 템플릿도 사용할 수 있다. 굳이
비교연산: HTML 엔티티를 사용해야 하는 부분을 주의하자, $>$ (gt), $<$ (lt), $>=$ (ge), $<=$ (le), $!$ (not), $==$ (eq), $=!$ (neq, ne)조건식: 자바의 조건식과 유사하다. 조건 ? true시 실
타임리프 - 스프링 통합과 폼 - 입력 폼 처리타임리프 - 스프링 통합과 폼 - 체크 박스 - 단일1타임리프 - 스프링 통합과 폼 - 체크 박스 - 단일2타임리프 - 스프링 통합과 폼 - 체크 박스 - 멀티타임리프 - 스프링 통합과 폼 - 라디오 버튼타임리프 - 스프링
타임리프 - 스프링 통합과 폼 - 입력 폼 처리타임리프 - 스프링 통합과 폼 - 체크 박스 - 단일1타임리프 - 스프링 통합과 폼 - 체크 박스 - 단일2타임리프 - 스프링 통합과 폼 - 체크 박스 - 멀티타임리프 - 스프링 통합과 폼 - 라디오 버튼타임리프 - 스프링
지금까지 나는 뷰 템플릿에서 동적으로 할당할 필요가 없는 문구는 있는 그대로 태그 사이에 적었다. 그냥 하드코딩 한 것이다. 그런데 만약 이 문구를 바꿔야 하는 일이 생기면 어떻게 될까 ? IDE의 힘을 빌려 replace를 파일마다 적용해야할까 ? 지금 나 혼자 해보
컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다.클라이언트 검증서버 검증클라이언트 검증은 HTTP를 POSTMAN과 같은 프로그램으로 조작할 수 있다. 그렇다고 서버만으로 검증하면 고객의 즉각적 사용성이 부족해진다. 따라서 두 개를 섞어서 사
저번 포스트에서 Bean Validation을 제외한 검증 방법들을 살펴보았다. 앞선 방법들로만 검증 코드를 작성한다면 생각보다 검증에 대한 개발 시간과 자원이 많이 소비될 것 같다. 생각해보면 데이터가 빈 값으로 들어왔는지 혹은 최솟값을 넘었는지 최댓값보다 작게 들어
이야기에 앞서 패키지 설계에 대해 알았다. 도메인이 가장 중요하다도메인이란 화면, UI, 기술 인프라 등의 영역을 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말한다.도메인 패키지 외에 web이란 패키지를 추가했다. web의 경우 다른 기술로 대체될 수 있
이전에 알아본 쿠키만을 이용한 로그인 서비스를 실현하기에는 보안상 많은 문제점들이 있다. 이를 해결하기 위해서는 민감한 정보를 서버측에서 저장해야한다. 그리고 클라이언트와 서버는 추정 불가능한 임의의 식별자값으로 연결해야 한다.세션은 위에서 말한 방법을 그대로 실현한다
이전까지 로그인을 처리하는 방법으로 쿠키와 세션에 대해 알아봤다. 그런데 만약에 로그인한 사용자만 사용할 수 있는 페이지를 만들고 싶다면 해당하는 모든 페이지에서 세션을 확인하는 코드를 만들어야 할까? 만들고 싶은 페이지의 CRUD에 같은 코드를 붙이고 만약에 로그인
스프링이 제공하는 인터셉터도 서블릿 필터와 같은 기능을 한다. 웹과 관련되 공통 관심 사항을 효과적으로 해결할 수 있다.다른점은 필터는 서블릿이 제공하는 기술이고, 인터셉터는 스프링 MVC가 제공하는 기술이다. 적용되는 순서와 범위 그리고 사용방법에 있어 차이가 있다.
홈페이지에 들어온 사용자를 로그인한 사용자와 비로그인 사용자를 구분하기 쉽게 코드를 짜고싶다. 요청 매핑 핸들러 어뎁터의 기능을 활용해보자.평소와 다른게 있다면 @Login이 파라미터 안에 있다는 것이다. 자바나 스프링에서 제공하는 애노테이션은 아니고 이제 우리가 만들
서블릿의 예외 처리 2가지 방식Exception(예외)response.sendError(HTTP 상태 코드, 에러 메시지)자바는 메인 메서드를 실행하면 main이라는 이름으로 쓰레드가 실행된다. 이 메서드 안에서 예외를 잡지 못하고 넘어가면 해당 쓰레드는 종료하고 예외
스프링 부트 이전 시간에 알아본 서블릿의 오류 페이지 설정을 스프링 부트에서는 기본으로 제공한다. ErrorPage를 자동으로 등록하는 이때 경로는 /error이다. 즉 서블릿 밖으로 예외가 발생하거나 response.sendError()의 기록이 남아있다면 /err