전체 글
-
이번 포스트에서는 Thymeleaf에서의 제어문에 대해 살펴보자. 반복문 th:each Thymeleaf에서 반복문을 사용하기 위해서는 th:each를 사용한다. 반복의 대상은 배열이나 Collection, Stream 등이 가능하다. 간단히 th:each="item, status: ${iterable}" 문장의 사용예를 보면서 사용법을 익혀보자. noidageaddr count name age addr th:each는 for-each 문장과 유사하게 iterable 한 요소를 하나씩 item으로 분리해서 사용한다. item은 다시 ctx의 속성으로 등록되므로 ${item} 형태로 사용할 수 있다. 상태 관리 옵션으로 사용되는 status는 반복도는 상황을 체크하기 위한 여러 속성이 제공된다. statu..
[Thymeleaf] 03. 제어문이번 포스트에서는 Thymeleaf에서의 제어문에 대해 살펴보자. 반복문 th:each Thymeleaf에서 반복문을 사용하기 위해서는 th:each를 사용한다. 반복의 대상은 배열이나 Collection, Stream 등이 가능하다. 간단히 th:each="item, status: ${iterable}" 문장의 사용예를 보면서 사용법을 익혀보자. noidageaddr count name age addr th:each는 for-each 문장과 유사하게 iterable 한 요소를 하나씩 item으로 분리해서 사용한다. item은 다시 ctx의 속성으로 등록되므로 ${item} 형태로 사용할 수 있다. 상태 관리 옵션으로 사용되는 status는 반복도는 상황을 체크하기 위한 여러 속성이 제공된다. statu..
2023.12.14 -
이번 포스트에서는 locale과 알아보고 spring boot에서 locale관리 방법에 대해 알아보자. Locale Locale이란? Locale이란 사용자의 언어, 지역 설정을 정의하는 문자열로 Locale에 따라 날짜, 숫자등의 출력 포멧이 다양하게 표현된다. public void afterPropertiesSet() throws Exception { printByLocale(Locale.KOREA); printByLocale(Locale.US); } private void printByLocale(Locale locale) { double money = 123456.789; LocalDateTime now = LocalDateTime.now(); NumberFormat nf = NumberForm..
Locale 관리이번 포스트에서는 locale과 알아보고 spring boot에서 locale관리 방법에 대해 알아보자. Locale Locale이란? Locale이란 사용자의 언어, 지역 설정을 정의하는 문자열로 Locale에 따라 날짜, 숫자등의 출력 포멧이 다양하게 표현된다. public void afterPropertiesSet() throws Exception { printByLocale(Locale.KOREA); printByLocale(Locale.US); } private void printByLocale(Locale locale) { double money = 123456.789; LocalDateTime now = LocalDateTime.now(); NumberFormat nf = NumberForm..
2023.12.13 -
이번 포스트에서는 표준 표현식을 이용해서 값을 출력하는 방법에 대해 알아보자. 표준 표현식 th:text th:text는 메시지를 출력하기 위해 사용되는 속성이다. 표현식 설명 th:text="'some text'" 주어진 some text로 대체 th:text="#{property}" message source에 설정된 property를 활용하며 일반적으로 국제화(i18N)을 지원하기 위해 사용 th:text="${attribute}" request scope에 저장된 attribute를 출력 th:text와 유사하게 th:utext (utext: unescaped text)도 사용할 수 있다. text는 html 태그가 escape 처리되서 그냥 단순 문자열로 처리된다. 반면 utext는 html 태..
[Thymeleaf] 02. 표준 표현식이번 포스트에서는 표준 표현식을 이용해서 값을 출력하는 방법에 대해 알아보자. 표준 표현식 th:text th:text는 메시지를 출력하기 위해 사용되는 속성이다. 표현식 설명 th:text="'some text'" 주어진 some text로 대체 th:text="#{property}" message source에 설정된 property를 활용하며 일반적으로 국제화(i18N)을 지원하기 위해 사용 th:text="${attribute}" request scope에 저장된 attribute를 출력 th:text와 유사하게 th:utext (utext: unescaped text)도 사용할 수 있다. text는 html 태그가 escape 처리되서 그냥 단순 문자열로 처리된다. 반면 utext는 html 태..
2023.12.10 -
이번 포스트에서는 웹 프로그래밍이란 무엇인지 주요 특성에 대해 살펴보고 자바 기반의 웹 프로그래밍 개요에 대해 살펴보자. 웹 프로그래밍 웹 프로그램이란? 웹 프로그램이란 HTTP(Hyper Text Transfer Protocol) 통신 규약에 따라 서버와 클라이언트 컴퓨터 간 데이터를 주고받는 네트워크 기반 프로그램으로 통상 원격지의 서버에서 실행되는 프로그램을 말한다. 전통적으로 웹 프로그램의 클라이언트는 브라우저를 이야기한다. 브라우저에서는 일정 형식의 요청(request)를 생성해서 HTTP 프로토콜을 통해 원격지의 서버에 요청하게 되고 서버는 응답을 생성해서 html 형태로 응답(response)을 만들어 클라이언트에게 전달하면 브라우저가 이를 해석해서 화면에 보여주는 형태로 동작한다. 이런 ..
01. 웹 프로그래밍이번 포스트에서는 웹 프로그래밍이란 무엇인지 주요 특성에 대해 살펴보고 자바 기반의 웹 프로그래밍 개요에 대해 살펴보자. 웹 프로그래밍 웹 프로그램이란? 웹 프로그램이란 HTTP(Hyper Text Transfer Protocol) 통신 규약에 따라 서버와 클라이언트 컴퓨터 간 데이터를 주고받는 네트워크 기반 프로그램으로 통상 원격지의 서버에서 실행되는 프로그램을 말한다. 전통적으로 웹 프로그램의 클라이언트는 브라우저를 이야기한다. 브라우저에서는 일정 형식의 요청(request)를 생성해서 HTTP 프로토콜을 통해 원격지의 서버에 요청하게 되고 서버는 응답을 생성해서 html 형태로 응답(response)을 만들어 클라이언트에게 전달하면 브라우저가 이를 해석해서 화면에 보여주는 형태로 동작한다. 이런 ..
2023.12.09 -
이번 포스트에서는 Thymeleaf의 특성과 기본적인 개발 환경설정에 대해 알아보자. Thymeleaf란? Good Bye JSP~ 그동안 자바 진영에서 Dynamic Web Application을 만들 때에는 MVC 디자인 패턴에서 Controller를 Servlet이 담당하고 View를 JSP가 담당하는 구조가 상당히 장기간 유지 되었다. Servlet의 위치는 여전히 확고하지만 JSP의 위치는 예전만 못하다. 대부분 웹 애플리케이션이 가뜩이나 CSR 기반의 SpringBoot 앱으로 개발되는 과정에서 그렇잖아도 SSR용 템플릿 엔진의 사용이 줄어드는 추세인데 JSP가 SpringBoot의 추천 템플릿 엔진에서 제외되면서 이젠 쓰면 안되나보다 하는 인식이 점점 강해지게 되었다. JSP는 안되고 Th..
[Thymeleaf] 01. Hello Thymeleaf이번 포스트에서는 Thymeleaf의 특성과 기본적인 개발 환경설정에 대해 알아보자. Thymeleaf란? Good Bye JSP~ 그동안 자바 진영에서 Dynamic Web Application을 만들 때에는 MVC 디자인 패턴에서 Controller를 Servlet이 담당하고 View를 JSP가 담당하는 구조가 상당히 장기간 유지 되었다. Servlet의 위치는 여전히 확고하지만 JSP의 위치는 예전만 못하다. 대부분 웹 애플리케이션이 가뜩이나 CSR 기반의 SpringBoot 앱으로 개발되는 과정에서 그렇잖아도 SSR용 템플릿 엔진의 사용이 줄어드는 추세인데 JSP가 SpringBoot의 추천 템플릿 엔진에서 제외되면서 이젠 쓰면 안되나보다 하는 인식이 점점 강해지게 되었다. JSP는 안되고 Th..
2023.12.09 -
이번 포스트에서는 Rest Client에 대한 Slide 테스트를 위한 @RestClientTest를 사용해보자. Rest Client Test @RestClientTest Rest Client는 통상 서비스에 작성하며 원격지에서 제공하는 REST API를 사용하는 클라이언트이 @RestClientTest는 이를 테스트하기 위한 slice test 도구이다. @Target(ElementType.TYPE) @BootstrapWith(RestClientTestContextBootstrapper.class) @ExtendWith(SpringExtension.class) @OverrideAutoConfiguration(enabled = false) @TypeExcludeFilters(RestClientType..
[spring test] 8. Rest Client Test이번 포스트에서는 Rest Client에 대한 Slide 테스트를 위한 @RestClientTest를 사용해보자. Rest Client Test @RestClientTest Rest Client는 통상 서비스에 작성하며 원격지에서 제공하는 REST API를 사용하는 클라이언트이 @RestClientTest는 이를 테스트하기 위한 slice test 도구이다. @Target(ElementType.TYPE) @BootstrapWith(RestClientTestContextBootstrapper.class) @ExtendWith(SpringExtension.class) @OverrideAutoConfiguration(enabled = false) @TypeExcludeFilters(RestClientType..
2023.11.28 -
이번 포스트에서는 @RestController에 대한 단위테스트에 대해서 살펴보자. REST를 위한 단위 테스트 rest 동작을 확인하기 위해서는 두 가지 형태로 살펴볼 수 있다. 일단 일반적인 호출이 되는가에 대한 것은 앞서 살펴봤던 Controller Test와 유사하다. 추가로 생각할 만한 것은 응답의 타입에 대한 정도이다. andExpect(content().contentType(MediaType.APPLICATION_JSON)) 하지만 REST는 model이나 session에 데이터를 담지 않기 때문에 어떤 정보가 전달되었는지 즉 내용을 확인하기 위한 방법이 필요하다. 이를 위해 RestController의 단위 테스트에는 com.jayway.jsonpath가 주로 사용된다. 관련 문서는 htt..
[spring test] 7. @RestController Test이번 포스트에서는 @RestController에 대한 단위테스트에 대해서 살펴보자. REST를 위한 단위 테스트 rest 동작을 확인하기 위해서는 두 가지 형태로 살펴볼 수 있다. 일단 일반적인 호출이 되는가에 대한 것은 앞서 살펴봤던 Controller Test와 유사하다. 추가로 생각할 만한 것은 응답의 타입에 대한 정도이다. andExpect(content().contentType(MediaType.APPLICATION_JSON)) 하지만 REST는 model이나 session에 데이터를 담지 않기 때문에 어떤 정보가 전달되었는지 즉 내용을 확인하기 위한 방법이 필요하다. 이를 위해 RestController의 단위 테스트에는 com.jayway.jsonpath가 주로 사용된다. 관련 문서는 htt..
2023.11.28 -
이번 포스트에서는 Junit과 MockMvc를 이용해서 file upload를 테스트하는 방법에 대해서 살펴보자. file upload test multipart() get방식 또는 post 방식의 request를 생성하기 위해서 MockMvcResultBuilders의 get(), post() 메서드를 사용했다면 file upload를 위해서는 multipart()를 사용한다. multipart()의 반환타입은 MockMultipartHttpServletRequestBuilder 인데 이를 이용해서 file을 등록할 수 있다. 그래도 업로드할 파일은 필요한데 이때는 MockMultipartFile 클래스를 이용한다. 나머지 설정(파라미터, 쿠키 등)은 일반적인 테스트와 동일하다. @Controller ..
[spring test] 6. @Controller Test 3 - File upload test이번 포스트에서는 Junit과 MockMvc를 이용해서 file upload를 테스트하는 방법에 대해서 살펴보자. file upload test multipart() get방식 또는 post 방식의 request를 생성하기 위해서 MockMvcResultBuilders의 get(), post() 메서드를 사용했다면 file upload를 위해서는 multipart()를 사용한다. multipart()의 반환타입은 MockMultipartHttpServletRequestBuilder 인데 이를 이용해서 file을 등록할 수 있다. 그래도 업로드할 파일은 필요한데 이때는 MockMultipartFile 클래스를 이용한다. 나머지 설정(파라미터, 쿠키 등)은 일반적인 테스트와 동일하다. @Controller ..
2023.11.27