spring (26) 썸네일형 리스트형 스프링 MVC 프로젝트의 기본 구성, 비즈니스 계층 spring core 설정에서의 scan, 등록/수정/삭제 시 redirect를 하는 이유 * 스프링 MVC 프로젝트의 기본 구성 - 웹 프로젝트는 3-tier 방식 - 스프링 MVC 영역은 프레젠테이션 tier를 구성하게 되는데, 각 영역은 사실 별도의 설정을 가지는 단위로 볼 수 있다. - 스프링 Core 영역은 흔히 POJO(Plain-Old-Java-Object)의 영역입니다. 비즈니스 계층, 영속계층 - 스프링은 스프링의 의존성 주입을 이용해서 객체 간의 연관구조를 완성해서 사용합니다. - 해당 영역의 설정 파일이 각각의 설정을 담당 root-context.xml - spring Core servlet-context.xml - spring MVC * 비즈니스 계층의 component-scan 설정 비즈니스 계층의 인터페이스와 구현 클래스가 작성되었다면, 이를 스프링 빈으로 인식 하기 .. @Override 쓰는 이유 @Override 1. 어떠한 메서드가 부모 클래스로부터 오버라이딩이 되었는지 쉽게 파악 할 수 있다. 2. 컴파일러에게 문법 체크를 하도록 알린다. - 오버라이딩을 하기 위해서는 부모 클래스의 있는 메서드명과 매개변수를 동일하게 가져가야 한다. 이것을 컴파일시 체크 할 수 있다. 파라미터가 동일한 이름으로 여러 개 존재하면 배열로 처리 가능 스프링 MVC는 전달되는 파라미터가 동일한 이름으로 여러 개 존재하면 배열로 처리가 가능 예제 @PostMapping("/exUploadPost") public void exUploadPost(ArrayList files) { files.forEach(file -> { log.info("---------------------"); log.info("name: " + file.getOriginalFilename()); log.info("size: " + file.getSize()); }); } Controller의 리턴 타입 스프링 MVC의 구조가 기존의 상속과 인터페이스에서 어노테이션을 사용하는 방식으로 변한 이후에 가장 큰 변화 중 하나는 리턴 타입이 자유로워 졌다는 점이다. Controller의 메서드가 사용 할 수 있는 리턴 타입 - String : jsp를 이용하는 경우에는 jsp 파일의 경로와 파일이름을 나타내기 위해서 사용 - void : 호출하는 URL과 동일한 이름의 jsp를 의미 - VO, DTO 타입 : 주로 JSON 타입의 데이터를 만들어서 반환하는 용도로 사용 - ResponseEntity 타입 : response 할 때 Http 헤더 정보와 내용을 가공하는 용도로 사용 - Model, ModelAndView : Model로 데이터를 반환하거나 화면까지 같이 지정하는 경우에 사용 (최근에는 많이 사용하.. Model이라는 데이터 전달자 Controller의 메서드를 작성할 때는 특별하게 Model이라는 타입을 파라미터로 지정할 수 있습니다. Model 객체는 JSP에 컨트롤러에서 생성된 데이터를 담아서 전달하는 역할을 하는 존재입니다. 메서드의 파라미터를 Model 타입으로 선언하게 되면 자동으로 스프링 MVC에서 Model타입의 객체를 만들어 주기 때문에 개발자의 입장에서는 필요한 데이터를 담아 주는 작업만으로 모든 작업이 완료된다. public String home(Model model) { model.addAttribute("serverTime", new java.util.Date()); return "home"; } - Model을 사용해야 하는 경우 주로 Controller에 전달된 데이터를 이용해서 추가적인 데이터를 가져와야.. @DateTimeFormat 파라미터로 사용되는 인스턴스 변수에 @DateTimeFormat을 적용해서 변환이 가능한다. 1. 파라미터로 받을 객체를 만든다. 2. dueDate에 @DateTimeFormat을 쓰고 pattern을 기입한다. package com.example.domain; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; @Data public class TodoDTO { private String title; @DateTimeFormat(pattern = "yyyy/MM/dd") private Date dueDate; } 3. 컨트롤러 @Controller @RequestMap.. 스프링 mvc annotation @Data : getter/setter, equals(), toString()등의 메서드를 자동생성 @RequestParam : 파라미터로 사용된 변수의 이름과 전달되는 파라미터의 이름이 '다른' 경우에 유용하게 사용 Dispatcher Servlet 1. Dispatcher Servlet 이란? - 요청 흐름 서블릿이 호출 되면 HttpServlet이 제공하는 service()가 호출 스프링 MVC는 DispatcherServlet의 부모인 FrameworkServlet에서 service()를 오버라이드 함 - 동작 순서 1) 클라이언트에서 HTTP 요청 2) Dispatcher Servlet에서 핸들러(컨트롤러) 조회 3) 핸들러를 실행할 수 있는 핸들러(컨트롤러) 어댑터를 조회 4) HTTP 요청에 대한 핸들러 어댑터를 찾았으면 실제 핸들러(컨트롤러)를 실행 5) 핸들러(컨트롤러) 실행 후 반환하는 정보를 핸들러 어댑터는 ModelAndView로 변환해서 반환 6) Dispatcher Servlet은 viewResolver 호출하여 실행 - JS.. 이전 1 2 3 4 다음