Back-End
-
[Spring Boot] 메시지, 국제화 파일 생성 후 타임리프에 적용해보기Back-End/Spring Boot 2022. 10. 26. 12:17
📑 메시지 (messages) 만약, 상품을 시스템이 있을 때 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까?? 상품명 여러 화면에 보이는 label 태그에 단어를 변경하려면 각각의 화면들을 찾아가서 변경해야한다. 만약 화면이 수백, 수천개가 된다면,,? 너무 번거로운 작업이다. 이런 다양한 메시지를 한 곳에 관리하도록 하는 기능을 메시지 기능이라고 한다. 🎃 1.messages.properties라는 메시지 관리용 파일을 만들고 item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 🎃 2. 각 HTML들에서 해당 데이터 key 값으로 불러 사용하는 것이다. 📑 국제화 국제화는 메세지에서 한 발 더 나가는 개..
-
[Spring Boot] 타임리프가 지원하는 form 속성 기능 (check box, radio button, select box)Back-End/Spring Boot 2022. 10. 25. 11:19
타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다. 📑 입력 form 처리하기 타임리프가 제공하는 입력 폼 기능을 적용해 효율적으로 뷰 템플릿을 개선해보려고 한다. 📌 th:object : 커맨드 객체를 지정한다. 📌 *{.....} : 선택 변수 식이라고 한다. th:object에서 선택한 객체에 접근한다. 📌 th:field : HTML 태그의 id, name, value 속성을 자동으로 처리해준다. th:field를 사용하면 렌더링 후 다음과 같이 id ,name, value값이 생성되는 걸 확인할 수 있다. 일단 th:object를 적용하려면 해당 오브젝트 정보를 넘겨주어야 한다. 등록 폼이기 때문에 데이터가 비어있는 빈 오브젝트를 만들어서 뷰에 전달해준다..
-
[Spring Boot] thymeleaf, 타임리프 기본기능 - 2편Back-End/Spring Boot 2022. 10. 24. 14:50
지난 포스팅에 이어 타임리프 기본 기능에 대해 더 알아보겠다. 📑 타임리프 기본 기능들 타임리프를 사용하려면 HTML 파일 상단에 선언을 해줘야한다. 아래 기능들에 대해 알고 싶다면 아래 링크 클릭! 📌간단한 표현: ◦ 변수 표현식: ${...} ◦ 선택 변수 표현식: *{...} ◦ 메시지 표현식: #{...} ◦ 링크 URL 표현식: @{...} ◦ 조각 표현식: ~{...} • 리터럴 ◦ 텍스트: 'one text', 'Another one!',… ◦ 숫자: 0, 34, 3.0, 12.3,… ◦ 불린: true, false ◦ 널: null ◦ 리터럴 토큰: one, sometext, main,… 📌문자 연산: ◦ 문자 합치기: + ◦ 리터럴 대체: |The name is ${name}| 📌산술 연..
-
[Spring Boot] thymeleaf, 타임리프 기본 기능 - 1편Back-End/Spring Boot 2022. 10. 21. 23:50
스프링 레거시 프로젝트로 MVC 패턴을 공부하면서 JSP로 뷰 템플릿을 사용하였다. Spring Boot를 통해 MVC 패턴을 다시 공부하고 있는데 스프링 부트에서 밀고있는 뷰 템플릿은 thymeleaf라고 한다. Thymeleaf는 html, xml, js, css 등을 처리할 수 있는 웹 및 독립형 환경에서 사용이 가능한 java 템플릿 엔진이다. 따라서 html 파일을 가져와서 파싱하고 그걸 분석하여 정해진 위치에 데이터를 뿌려준다는 특징이 있다. 이런 타입리프의 개념과 기본 기능에 대해 이번 포스팅에서 정리해볼까 한다. 📑 타임리프 특징 🎃 1. 서버 사이드 HTML 렌더링 (SSR) : SSR이란 ? 서버로부터 완전하게 만들어진 html파일을 받아와 페이지 전체를 렌더링 하는 방식으로 먼저 클라..
-
[Spring] 스프링 MVC 구조 (핸들러 매핑, 핸들러 어댑터, 뷰 리졸버)Back-End/Spring Boot 2022. 10. 19. 16:30
📑 스프링 MVC 구조 스프링 MVC의 구조는 다음과 같다. 전체적 흐름을 먼저 살펴보고 DispatcherServlet, Handler Mapping, Handler Adapter, ViewResolver 등등 각각 하나씩 알아가보도록 하자. 📌 1. 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러를) 조회한다. 예를들어 http://localhost:8080/response-view 이런식으로 클라이언트가 브라우저에 요청을 하면 response-view에 해당하는 핸들러를 조회한다. 📌 2. 핸들러 어뎁터 조회 : 핸들러 어댑터 목록에서 핸들러 어댑터를 조회한다. 즉) 핸들러를 처리할 수 있는 핸들러 어댑터를 조회한다는 의미인데, 이는 여러 인터페이스 같은 큰 틀들 중 클라이..
-
[Spring] HTTP 응답 메시지 만들기 ( Model, @ResponseBody, @ResponseEntity)Back-End/Spring Boot 2022. 10. 19. 10:49
지난 포스팅에선 HTTP 요청 파라미터와 메시지에 대해 알아봤다면, 이번 포스팅에선 HTTP 응답 메시지 보내는 방법을 알아볼까 한다. 이전 포스팅은 아래 링크에서 참조! https://wonisdaily.tistory.com/120 [Spring Boot] HTTP 요청 파라미터, 메시지 ( @RequestParam, @ModelAttribute, @RequestBody, HttpEntity) 지난 블로그에서 서블릿에서 HTTP 요청, 응답 메시지를 확인하고 전송할 수 있는 법을 알아봤다. 스프링에선 HttpServletRequest, HttpServletResponse 객체 생성 없이 어노테이션을 사용해서 간단하게 클라 wonisdaily.tistory.com HTTP 응답 메시지를 만드는 방법은 크..
-
[Spring Boot] HTTP 요청 파라미터, 메시지 ( @RequestParam, @ModelAttribute, @RequestBody, HttpEntity)Back-End/Spring Boot 2022. 10. 14. 21:59
지난 블로그에서 서블릿에서 HTTP 요청, 응답 메시지를 확인하고 전송할 수 있는 법을 알아봤다. 스프링에선 HttpServletRequest, HttpServletResponse 객체 생성 없이 어노테이션을 사용해서 간단하게 클라이언트에서 서버로 데이터를 전달할 수 있다. 그 방법을 알아보려고 한다. https://wonisdaily.tistory.com/119 [Servlet] HttpServletRequest, HttpServletResponse 파헤치기 HttpServletRequest, HttpServletResponse에 대해 알아보기 전 Servlet에 대해 알아보려면 아래 링크 참조! https://wonisdaily.tistory.com/117 [Web] 서블릿(Servlet)이란? (+..
-
[Spring Boot] Bean 생명주기 (Life cycle) 콜백Back-End/Spring Boot 2022. 10. 11. 00:02
📑 스프링 컨테이너 생명주기 스프링컨테이너에 대표적인, 아주 기본적인 생명주기를 살보자면 아래와 같다. 1. ApplicationContext를 이용해 객체를 생성하고 스프링 컨테이너를 초기화 한다 . 2. getBean()과 같은 메서드를 이용해서 컨테이너에 있는 빈 객체를 사용한다. 3. close() 메서드를 이용해 컨테이너를 종료한다. 📌 컨테이너 초기화 작업 : 빈 객체 생성, 초기화 및 의존 객체를 주입 📌 컨테이너 종료 : 빈 객체를 소멸하는 작업 빈 객체의 생명 주기는 객체 생성 -> 의존 설정 -> 초기화 -> 소멸 과정이다. 1. 스프링 컨테이너를 초기화 할 때, 가장 먼저 빈 객체를 생성한다. 2. 빈 객체 생성 후, 의존을 설정한다. 즉) 의존성 주입을 한다. 3. 모든 의존 설정이..