Spring
-
[김영한 스프링] 06. 타임리프 기본 기능 - 속성 값 설정 & 반복Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 26. 23:47
속성 값 설정 타임리프 태그 속성(Attribute) 타임리프는 주로 HTML 태그에 th:* 속성을 지정하는 방식으로 동작한다. th:*로 속성을 적용하면 기존 속성을 대체한다. 기존 속성이 없으면 새로 만든다. BasicController 추가 @GetMapping("attribute") public String attribute() { return "basic/attribute"; } attribute.html 속성 설정 속성 추가 - th:attrappend = - th:attrprepend = - th:classappend = checked 처리 - checked o - checked x - checked=false main/resources/templates/basic/attribute.htm..
-
[김영한 스프링] 05. 타임리프 기본 기능 - 리터럴(Literals) & 연산Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 26. 23:05
리터럴(Literals) 리터럴은 소스 코드상에 고정된 값을 말하는 용어이다. 예를 들어서 다음 코드에서 "Hello"는 문자 리터럴, 10, 20은 숫자 리터럴이다. String a = "Hello" int a = 10 * 20 타임리프는 다음과 같은 리터럴이 있다. 문자 : 'hello' 숫자 : 10 불린 : true, false null : null 타임리프에서 문자 리터럴은 항상 '(작은 따옴표)로 감싸야한다. 그런데 문자를 항상 '로 감싸는 것은 너무 귀찮은 일이다. 공백 없이 쭉 이어진다면 하나의 의미 있는 토큰으로 인지해서 다음과 같이 작은 따옴표를 생략할 수 있다. 룰 : A-Z, a-z, 0-9, [], ., -, _ 오류 문자 리터럴은 원칙상 '로 감싸야한다. 중간에 공백이 있어서 하..
-
[김영한 스프링] 04. 타임리프 기본 기능 - 유틸리티 객체와 날짜 & URL 링크Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 26. 22:41
유틸리티 객체와 날짜 타임리프는 문자, 숫자, 날짜, URI 등을 편리하게 다루는 다양한 유틸리티 객체들을 제공한다. 타임리프 유틸리티 객체들 #message : 메시지, 국제화 처리 #uris : URI 이스케이프 지원 #dates : java.util.Date 서식 지원 #calendars : java.util.Calendar 서식 지원 #temporals : 자바8 날짜 서식 지원 #numbers : 숫자 서식 지원 #strings : 문자 관련 편의 기능 #objects : 객체 관련 기능 제공 #bools : boolean 관련 기능 제공 #arrays : 배열 관련 기능 제공 #lists, #sets, #maps : 컬렉션 관련 기능 제공 #ids : 아이디 처리 관련 기능 제공, 뒤에서 설명..
-
[김영한 스프링] 03. 타임리프 기본 기능 - 변수(SpringEL) & 기본 객체들Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 26. 22:17
변수 - SpringEL 타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다 변수 표현식 : ${...} 그리고 이 변수 표현식에는 스프링 EL이라는 스프링이 제공하는 표현식을 사용할 수 있다. BasicController 추가 @GetMapping("/variable") public String variable(Model model) { User userA = new User("userA", 10); User userB = new User("userB", 20); List list = new ArrayList(); list.add(userA); list.add(userB); Map map = new HashMap(); map.put("userA", userA); map.put("userB", use..
-
[김영한 스프링] 02. 타임리프 기본 기능 - 텍스트(text, utext) & 변수(SpringEL)Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 25. 23:24
텍스트 - text, utex 타임리프는 기본적으로 HTML 테그의 속성에 기능을 정의해서 동작한다. HTML의 콘텐츠(content)에 데이터를 출력할 때는 다음과 같이 th:text를 사용하면 된다. HTML 테그의 속성이 아니라 HTML 콘텐츠 영역 안에서 직접 데이터를 출력하고 싶으면 다음과 같이 [[...]]를 사용하면 된다. 컨텐츠 안에서 직접 출력하기 = [[${data}]] BasicController main/java/hello/thymeleaf/basic/basicController 생성 package hello.thymeleaf.basic; import org.springframework.stereotype.Controller; import org.springframework.ui.M..
-
[김영한 스프링] 01. 타임리프 기본 기능 - 프로젝트 생성 & 세팅Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 7. 24. 22:31
프로젝트 생성 https://start.spring.io 프로젝트 선택 Project : Gradle - Groovy Project Language : Java Spring Boot : SNAPSHOT이 아닌 버전에서 2.x Project Metadata Group : hello Artifact : thymeleaf-basic Name : thymeleaf-basic Package name : hello.thymeleaf Packaging : Jar Java : 11 Dependencies : Spring Web, Lombok, Thymeleaf build.gradle 선택 -> 프로젝트 열기 홈 화면 텍스트 텍스트 출력 기본 텍스트 text, utext 표준 표현식 구문 변수 - SpringEL 기본 ..
-
[김영한 스프링] 34. 스프링 MVC 웹 페이지 만들기 - PRG Post/Redirect/GetSpring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 24. 03:51
PRG Post/Redirect/Get 사실 지금까지 진행한 상품 등록 처리 컨트롤러는 심각한 문제가 있다. (addItemV1 ~ addItemV4) 상품 등록을 완료하고 웹 브라우저의 새로고침 버튼을 클릭해 보자. 상품이 계속해서 중복 등록되는 것을 확인할 수 있다. testC 상품 등록 상품 등록 후 새로고침 하면 중복으로 데이터 생성 됨 전체 흐름 POST 등록 후 새로 고침 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송한다. 상품 등록 폼에서 데이터를 입력하고 저장을 선택하면 POST /add + 상품 데이터를 서버로 전송한다. 이 상태에서 새로 고침을 또 선택하면 마지막에 전송한 POST /add + 상품 데이터를 서버로 다시 전송하게 된다. 그래서 내용은 같고, ID만..
-
[김영한 스프링] 33. 스프링 MVC 웹 페이지 만들기 - 상품 등록 처리 & 상품 수정Spring/스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 2023. 7. 24. 03:02
상품 등록 처리 - @ModelAttribut 상품 등록 폼은 다음 방식으로 서버에 데이터를 전달한다. POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 전달 itemName=itemA&price=10000&quantity=10 예) 회원 가입, 상품 주문, HTML Form 사용 요청 파라미터 형식을 처리해야 하므로 @RequestParam을 사용하자 상품 등록 처리 - @RequestParam addItemV1 - BasicItemController에 추가 @PostMapping("/add") public String save(@RequestParam String itemName, @RequestP..