
일반적으로 사용하는 HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 한다. HTML 폼 전송 방식 application/x-www-form-urlencoded 방식 application/x-www-form-urlencoded 방식은 HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법이다. Form 태그에 별도의 enctype 옵션이 없으면 웹 브라우저는 요청 HTTP 메시지의 헤더에 다음 내용을 추가한다. Content-Type: application/x-www-form-urlencoded 그리고 폼에 입력한 전송할 항목을 HTTP Body에 문자로 username=kim&age=20 와 같이 & 로 구분해서 전송한다. 파일을 업로드 하려면..

URL 링크 타임리프에서 URL을 생성할 때는 @{...} 문법을 사용하면 된다. BasicController 에 추가 @GetMapping("/link") public String link(Model model) { model.addAttribute("param1", "data1"); model.addAttribute("param2", "data2"); return "basic/link"; } /resources/templates/basic/link.html URL 링크 basic url hello query param path variable path variable + query parameter 설명 Thymeleaf의 th:href 속성을 사용하여 상대 URL "/hello"를 생성한다. 이 U..

타임리프는 문자, 숫자, 날짜, URI등을 편리하게 다루는 다양한 유틸리티 객체들을 제공한다. 타임리프 유틸리티 객체들 타임리프 유틸리티 객체 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#expression-utilityobjects Tutorial: Using Thymeleaf 1 Introducing Thymeleaf 1.1 What is Thymeleaf? Thymeleaf is a modern server-side Java template engine for both web and standalone environments, capable of processing HTML, XML, JavaScript, CSS and even ..

타임리프의 기본 객체들 주의! - 스프링 부트 3.0 스프링 부트 3.0 부터는 ${#request} , ${#response} , ${#session} , ${#servletContext} 를 지원하지 않는다. 만약 사용하게 되면 다음과 같은 오류가 발생한다. 스프링 부트 3.0이라면 직접 model 에 해당 객체를 추가해서 사용해야 한다. 그런데 #request 는 HttpServletRequest 객체가 그대로 제공되기 때문에 데이터를 조회하려면 request.getParameter("data") 처럼 불편하게 접근해야 한다. 이런 점을 해결하기 위해 편의 객체도 제공한다. 스프링 부트 3.0 미만이라면 (현재 프로젝트에 해당) BasicController에 추가 @GetMapping("/basic..

타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다. 변수 표현식 : ${...} 이 변수 표현식에는 스프링 EL이라는 스프링이 제공하는 표현식을 사용할 수 있다. /resources/templates/basic/variable.html SpringEL 표현식 Object ${user.username} = ${user['username']} = ${user.getUsername()} = List ${users[0].username} = ${users[0]['username']} = ${users[0].getUsername()} = Map ${userMap['userA'].username} = ${userMap['userA']['username']} = ${userMap['userA'].getUsern..

텍스트 - text, utext 실행 http://localhost:8080/basic/text-basic Escape HTML 문서는 같은 특수 문자를 기반으로 정의된다. 따라서 뷰 템플릿으로 HTML 화면을 생성할 때는 출력하는 데이터에 이러한 특수 문자가 있는 것을 주의해서 사용해야 한다. 변경 전 "Hello Spring!" 변경 후 "Hello Spring!" 테그를 사용해서 Spring!이라는 단어가 진하게 나오도록 해보자. 웹 브라우저에서 실행결과를 보면 개발자가 의도한 것은 가 있으면 해당 부분을 강조하는 것이 목적이었다. 그런데 태그가 그대로나온다. 소스보기를 하면
Thymeleaf 공식 사이트: https://www.thymeleaf.org/ 공식 메뉴얼 - 기본 기능: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 공식 메뉴얼 - 스프링 통합: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 타임리프 특징 서버 사이드 HTML 렌더링 (SSR) 네츄럴 템플릿 스프링 통합 지원 서버 사이드 HTML 렌더링 (SSR) 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다. 네츄럴 템플릿 타임리프는 순수 HTML을 최대한 유지하는 특징이 있다. 타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 ..

build.gradle plugins { id 'java' id 'org.springframework.boot' version '2.7.16' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'inflearn' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-start..