-
Spring Presentation LayerServer/Spring 2020. 2. 20. 15:32
[Spring MVC(Model-View-Controller)의 핵심 Component]
참고 https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:spring_mvc_architecture
Spring MVC 란?
1. Client Request
2. DispatcherServelet : 최초 진입 지점
3. Handler Mapping : 어떤 컨트롤러에게 요청을 위임하면 좋을지 판단.
해당 요청을 처리하기 위한 Controller 찾음.
4. DispatcherServelet: 선태된 Controller호출하여 1. Client Request처리
5. Controller : Business Layer와 통신을 통해 원하는 작업 처리 후 요청에 대한 성공유무에 따라 ModelAndView인스턴스 반환.
6. DispatcherServelet : ModelAndView의 View이름이 논리적인 정보이면 ViewResolver 참조해 처리할 View생성
7. DispatcherServelet : ViewResolver 통해 View에게 ModelAndView전달.
8. View : 클라이언트에게 UI 제공
Annotation 설명
@RestController ( = @Controller + @ResponseBody)
: Rest를 위한 Controller 기능을 부여하는 Annotation. 반환값을 JSON으로 변환해준다.
@Controller
: 템플릿을 이요해 HTML페이지를 렌더링 및 표시해줌
@ResponseBody
: 반환값을 JSON으로 변환해줌
@GetMapping
: Get메소드 Controller Annotation. 리소스를 조회하는 요청에 사용
EX) @GetMapping("") : "" 에서 url mapping 지정
@RestController public class testController { @GetMapping("") public String hello(){ return "hello world"; } }
@RequestMapping
EX) @RequestMapping (method = RequestMethod.Get, value="") : Get method이면서 url mapping은 "" 의미.
@RestController public class testController { @RequestMapping (method = RequestMethod.Get, value="") public String hello(){ return "hello world"; } }
Controller자체에 URL Mapping도 가능
@RestController @RequestMapping("test") public class testController{ }
@PathVariable : URL경로에 변수를 넣는 방식. RESTful API에서 사용함.
@RestController public class testController{ @GetMapping("/student/{name}") public String getName(@PathVariable(value = "name") final String name){ return name; } }
/{name} : {name}을 path에서 name이라는 Parameter로 받으라는 것을 의미.
/{name} -> @PathVariable(value = "name") -> String name으로 변환 -> name 반환
@RequestParam : URL 파라미터로 값을 넘기는 방식
@RestController public class StudentController{ //ex1 @GetMapping("/student/department") public String getMajor(@RequestParam(value="department", defaultValue="") final String department){ return department; } //ex2 @GetMapping("/student/info") public String getMajor(@RequestParam(value="name") final String name) (@RequestParam(value="address") final String address){ return name + "의 주소는 " + address + "입니다."; } //ex3 @GetMapping("/student/score") public String getMajor(@RequestParam(value="score") final int[] score){ int sum = 0; for(int i : score){ sum += i; } return sum; } }
@PathVariable VS @RequestParam
@PathVariable : parameter
:/student/{name}
localhost:8080/student/name/최예원
@RequestParam : queryString
: @GetMapping("/student/department")
localhost:8080/student/department?department=컴퓨터학과
-path이란? (url or uri) / (가변라우팅)
ex) localhost:8080/student/name/info : name해당 학생의 정보 조회
localhost:8080/student/list: 모든 학생 리스트 조회
-queryString이란? (uri)
localhost:8080/student/department?department=컴퓨터학과
에서 ?department=컴퓨터학과 부분.
@RequestBody
: Parameter로 객체를 받는 Annotaion
@PostMapping
: Post메소드 Controller Annotation. 리소스 생성 요청에 사용.
@PutMapping
: Put메소드 Controller Annotation. 리소스 수정 요청에 사용.
@DeleteMapping
: Delete메소드 Controller Annotation. 리소스 삭제 요청에 사용.
반응형'Server > Spring' 카테고리의 다른 글
[Spring] Intellij tomcat war 배포 - window에서 filezilla를 이용해 sftp 서버배포 (0) 2020.03.20 [Spring] 이클립스로 스프링 프로젝트 생성하기 (0) 2020.03.15 [spring] Lombok annotation (0) 2020.02.20 Spring Architecture (0) 2020.02.20 spring vs spring boot (0) 2020.01.14