분류 전체보기 1341

Ch01. 타임리프(기본 기능) - 속성 값 설정

@GetMapping("/attribute") public String attribute(){ return "basic/attribute"; } 속성 설정 속성 추가 - th:attrappend = - th:attrprepend = - th:classappend = checked 처리 - checked o - checked x - checked=false 속성 설정 타임리프는 주로 HTML 태그에 th:* 속성을 지정하는 방식으로 동작한다 . th:* 로 속성을 적용하면 기존 속성을 대체한다. 기존 속성이 없으면 새로 만든다 속성 추가 th:attrappend : 속성 값의 뒤에 값을 추가한다. th:attrprepend : 속성 값의 앞에 값을 추가한다. th:classappend : class 속성에..

Ch01. 타임리프(기본 기능) - 연산

@GetMapping("/operation") public String operation(Model model){ model.addAttribute("nullData", null); model.addAttribute("data", "Spring!"); return "basic/operation"; } 산술 연산 10 + 2 = 10 % 2 == 0 = 비교 연산 1 > 10 = 1 gt 10 = 1 >= 10 = 1 ge 10 = 1 == 10 = 1 != 10 = 조건식 (10 % 2 == 0)? '짝수':'홀수' = Elvis 연산자 ${data}?: '데이터가 없습니다.' = ${nullData}?: '데이터가 없습니다.' = No-Operation ${data}?: _ = 데이터가 없습니다. ${..

Ch01. 타임리프(기본 기능) - 리터럴

타임리프는 다음과 같은 리터럴이 있다. 문자: 'hello' 숫자: 10 불린: true , false null: null 타임리프에서 문자 리터럴은 항상 ' (작은따옴표)로 감싸야한다. 공백 없이 쭉 이어진다면 하나의 의미 있는 토큰으로 인지해서 다음과 같이 작은따옴표를 생략할 수 있다. 문자 리터럴은 원칙상 ' 로 감싸야한다. 중간에 공백이 있어서 하나의 의미 있는 토큰으로도 인식되지 않는다 @GetMapping("/literal") public String literal(Model model){ model.addAttribute("data", "Spring!"); return "basic/literal"; } 리터럴 'hello' + ' world!' = 'hello world!' = 'hello ..

Ch01. 타임리프(기본 기능) - URL 링크

@GetMapping("link") public String link(Model model){ model.addAttribute("param1", "data1"); model.addAttribute("param2", "data2"); return "basic/link"; } URL 링크 basic url hello query param path variable path variable + query parameter 단순한 URL @{/hello} -> /hello 쿼리 파라미터 @{/hello(param1=${param1}, param2=${param2})} -> /hello?param1=data1¶m2=data2 ()에 있는 부분은 쿼리 파라미터로 처리된다. 경로 변수 @{/hello/{param1}..

Ch01. 타임리프(기본 기능) - 유틸리티 객체와 날짜

타임리프 유틸리티 객체들 #message : 메시지, 국제화 처리 #uris : URI 이스케이프 지원 #dates : java.util.Date 서식 지원 #calendars : java.util.Calendar 서식 지원 #temporals : 자바 8 날짜 서식 지원 #numbers : 숫자 서식 지원 #strings : 문자 관련 편의 기능 #objects : 객체 관련 기능 제공 #bools : boolean 관련 기능 제공 #arrays : 배열 관련 기능 제공 #lists , #sets , #maps : 컬렉션 관련 기능 제공 #ids : 아이디 처리 관련 기능 제공, 뒤에서 설명 타임리프 유틸리티 객체 https://www.thymeleaf.org/doc/tutorials/3.0/using..

Ch01. 타임리프(기본 기능) - 기본 객체들

@GetMapping("/basic-objects") public String basicObjects(HttpSession session){ session.setAttribute("sessionData", "Hello Session"); return "basic/basic-objects"; } @Component("helloBean") static class HelloBean{ public String hello(String data){ return "Hello " + data; } } 식 기본 객체 (Expression Basic Objects) request = response = session = servletContext = locale = 편의 객체 Request Parameter = sessi..

Ch01. 타임리프(기본 기능) - 변수(SpringEL)

타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다. 변수 표현식 : ${...} @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", userB); model.addAttribute("user", userA); model.addAttribute("users", list); model.ad..

Ch01. 타임리프(기본 기능) - 텍스트(text, utext)

HTML 컨텐츠에 데이터를 출력 HTML 테그의 속성이 아니라 HTML 콘텐츠 영역 안에서 직접 데이터를 출력하고 싶으면 다음과 같이 [[...]] 를 사용하면 된다 컨텐츠 안에서 직접 출력하기 = [[${data}]] 컨텐츠에 데이터 출력하기 th:text 사용 컨텐츠 안에서 직접 출력하기 = [[${data}]] HTML 문서는 같은 특수 문자를 기반으로 정의된다. 따라서 뷰 템플릿으로 HTML 화면을 생성할 때는 출력하는 데이터에 이러한 특수 문자가 있는 것을 주의해서 사용해야 한다. data에 태그를 추가하여 진하게 나오기를 기대했지만 문자 그대로가 출력된다. 웹 브라우저: Hello Spring! 소스보기: Hello Spring! 웹 브라우저는 < 를 HTML 태그의 시작으로 인식한..

Ch01. 타임리프(기본 기능) - 타임리프 소개

공식 사이트: https://www.thymeleaf.org/ 공식 매뉴얼 - 기본 기능: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 공식 메뉴얼 - 스프링 통합: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html Thymeleaf Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favourite web-dev..

Ch07. 스프링 MVC(웹 페이지 만들기) - RedirectAttributes

저장이 잘 되었으면 상품 상세 화면에 "저장되었습니다"라는 메시지를 보여달라는 요구사항이 왔다 새로운 뷰 템플릿 화면을 만들어야 하나? NO RedirectAttrubutes Controller 추가 리다이렉트 할 때 간단히 status=true를 추가 RedirectAttributes RedirectAttributes를 사용하면 URL 인코딩도 해줄 뿐만 아니라, PathVariable 쿼리 파라미터까지 처리해 준다. PathVariable에 치환되지 못한 값들은 QueryParam으로 치환되어 전달이 된다. 뷰 템플릿 메시지 추가 th:if : 해당 조건이 참이면 실행 ${param.status} : 타임리프에서 쿼리 파라미터를 편리하게 조회하는 기능 원래는 컨트롤러에서 모델에 직접 담고 값을 꺼내야..