Spring 48

[Spring/MVC] 09. 타임리프 - 스프링 통합과 폼

09. 타임리프 - 스프링 통합과 폼#Spring/MVC정리타임리프 스프링 통합타임리프는 스프링을 위해 기능을 제공한다고 말해도 과할 정도가 아닌 수준의 스프링 통합을 위한 다양한 기능을 제공한다.스프링 통합으로 추가되는 기능스프링의 SpringEL 문법 통합${@myBean.doSomething()}처럼 스프링 빈 호출 지원편리한 폼 관리를 위한 추가 속성th:object (기능 강화, 폼 커맨드 객체 선택)th:field, th:errors, th:errorclass폼 컴포넌트 기능checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원스프링의 메시지, 국제화 기능의 편리한 통합스프링의 검증, 오류 처리 통합스프링의 변환 서비스 통합 (ConversionServic..

Spring/MVC 2024.12.28

[Spring MVC] 08. 타임리프 기본기능

08. 타임리프 기본기능정리타임리프 사용 선언(스프링 부트에 타임리프를 추가했으면 선언하지 안하도 타임리프 문법이 적용되는 것 같긴 합니다)기본 표현식• 간단한 표현: ◦ 변수 표현식: ${...} ◦ 선택 변수 표현식: *{...} ◦ 메시지 표현식: #{...} ◦ 링크 URL 표현식: @{...} ◦ 조각 표현식: ~{...}• 리터럴 ◦ 텍스트: 'one text', 'Another one!',… ◦ 숫자: 0, 34, 3.0, 12.3,… ◦ 불린: true, false ◦ 널: null ◦ 리터럴 토큰: one, sometext, main,…• 문자 연산: ◦ 문자 합치기: + ◦ 리터럴 대체: |The name is ${name}|• 산술 연산: ◦ Binary ope..

Spring/MVC 2024.12.27

[Spring MVC] 07. 스프링 MVC - 웹 페이지 만들기(타임리프, PRG, RedirectAttribute)

7. 스프링 MVC - 웹 페이지 만들기(타임리프, PRG, RedirectAttribute)정리Item - 상품 객체, Repository@Datapublic class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; }}리포지..

Spring/MVC 2024.12.26

[Spring/MVC] WebMvcConfigurer

김영한님 Spring MVC 강의를 통해 공부하다가 Spring MVC에 WebMvcConfigurer 라는 확장 포인트가 있다는 점을 알게 되었다. (강의에서는 ArgumentResolver와 MessageConverter를 WebMvcConfigurer에서 확장할 수 있다 정도만 설명하고 넘어감)Spring MVC에는 대부분의 기능이 이미 구현되어 있어 확장 포인트가 많지 않다고 했는데, WebMvcConfigurer에서는 어떤 부분을 확장할 수 있는지 구체적으로 알아보자. WebMvcConfigurer란?WebMvcConfigurer 는 스프링 부트 혹은 스프링 MVC 애플리케이션에서 MVC 관련 설정을 직접 확장하거나 추가할 수 있게 해주는 확장 포인트 인터페이스이다. 스프링 부트가 제공하는 We..

Spring/MVC 2024.12.24

[Spring MVC] 06. 스프링 MVC - 기본 기능

06. 스프링 MVC - 기본 기능#Spring/MVC정리로깅운영 서버에는 System.out.println()을 사용하지 않고, 로깅 라이브러리를 사용해 로그를 출력해야 한다.SLF4J로그 라이브러리는 Logback, Log4J, Log4J2 등등 수많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공한다.로그 선언private Logger log = LoggerFactory.getLogger(getClass());@Slf4j 롬복에서 사용할 수 있다.로그 사용 예시@Slf4j@RestControllerpublic class LogTestController { @RequestMapping("/log-test") public String logTest() { String name = "Sp..

Spring/MVC 2024.11.24

[Spring MVC] 05. 스프링 MVC - 구조 이해

5. 스프링 MVC - 구조 이해#Spring/MVC정리이전 챕터에서 직접 만들었던 MVC 프레임워크와 아래 스프링 MVC를 비교해보자.1 ~ 8 단계 구조가 같고, 이름만 다르다.FrontController DispatcherServlethandlerMappingMap HandlerMappingMyHandlerAdapter HandlerAdapterModelView ModelAndViewviewResolver ViewResolver(인터페이스)MyView View(인터페이스)달라진 부분을 하나씩 살펴보자DispatcherServletorg.springframework.web.servlet.DispatcherServlet스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있는데, 그게..

Spring/MVC 2024.11.21

[Spring MVC] 04. MVC 프레임워크 만들기

04. MVC 프레임워크 만들기#Spring/MVC정리프론트 컨트롤러 도입 이유 - 챕터 3 마지막에 다룬 내용포워드 중복View로 이동하는 코드가 항상 중복 호출되어야 한다.Thymeleaf 같은 다른 뷰로 변경한다면 전체 코드를 다 변경해야 한다.사용하지 않는 코드특히 HttpServletResponse의 response 객체는 현재 코드에서 사용되지 않는다.이런 HttpServletRequest, HttpServletResponse를 사용하는 코드는 테스트 케이스를 작성하기도 어렵다.공통 처리가 어렵다기능이 복잡해질수록 컨트롤러에서 공통으로 처리해야 하는 부분이 점점 더 많이 증가한다.공통 메서드로 추출해도 되지만, 호출 과정도 중복이고, 호출하는 것을 놓칠 수도 있다.프론트 컨트롤러를 도입해보자...

Spring/MVC 2024.11.20

[Spring MVC] 03. 서블릿, JSP, MVC 패턴

03. 서블릿, JSP, MVC 패턴#Spring/MVC1. 서블릿으로 HTML 동적으로 제공하기서블릿으로 회원 등록 HTML 폼을 제공response.setContentType("text/html");response.setCharacterEncoding("utf-8");PrintWriter w = response.getWriter();w.write("")...자바 코드로 HTML을 제공해야 하므로 쉽지 않은 작업이다. 너무 불편하다회원 데이터가 저장memberRepository.save(member);response.setContentType("text/html");response.setCharacterEncoding("utf-8");PrintWriter w = response.getWriter();...

Spring/MVC 2024.11.19

[Spring MVC] 02. 서블릿

02. 서블릿#Spring/MVC스프링 부트 서블릿 환경 구성스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan 을 지원ㅇ한다.서블릿 등록인텔리제이에서 ctrl + o로 오버라이딩 할 수 있는데, 자물쇠 잠겨있는 service(protected)를 오버라이딩해주자. 서블릿이 호출되면, 서비스 메서드가 호출된다.@WebServlet 서블릿 애노테이션name: 서블릿 이름urlPatterns: URL 매핑HTTP 요청을 통해 매핑된 URL이 호출되면 서블릿 컨테이너는 다음 메서드를 실행한다.protected void service(HttpServletRequest request, HttpServletResponse response)HttpServletRequest,..

Spring/MVC 2024.11.19