Spring MVC 기본 흐름 + DTO 개념
@Getter, @Setter, @ToString 등을 자동 생성해주는 @Data 어노테이션으로 코드 간결하게 작성 가능.public class SampleDto {
private String name;
private int age;
}
?name=aaa&age=20 같은 방식으로 보낸 데이터를 자동으로 매핑해서 객체로 만들어줘.ex01() 메서드에서는 SampleDto dto로 자동 바인딩돼.@RequestParam 안 써도 돼. @GetMapping("ex01")
public String ex01(SampleDto dto) { // 데이터가 객체로 자동 만들어짐 -> 커맨드 객체임
log.info("주말 빨리와라아🤩");
log.info("dto:"+dto);
return "ex01";
@Controller와 요청 매핑@Controller: 해당 클래스가 컨트롤러임을 명시.@RequestMapping("/sample/*"): 모든 경로가 /sample/로 시작해야 함.@GetMapping("ex01"): GET /sample/ex01 요청을 처리.@RequestParam@GetMapping("ex02")
public String ex02(@RequestParam("name") String name,
@RequestParam("age") int age)
return "ex01";
ex01.jsp 뷰 페이지로 이동한다는 의미..jsp 파일이 WEB-INF/views/ex01.jsp 경로에 있어야 해 (보통 ViewResolver 설정에 따라).@GetMapping({"basic"})
public void basicGet() {
log.info("집가고 싶어용😎");
}
/sample/basic에 따라 *자동으로 /WEB-INF/views/sample/basic.jsp로 이동함.| 개념 | 설명 |
|---|---|
| DTO | 데이터를 담는 그릇. 요청 파라미터 → 자바 객체로 자동 매핑 |
| 커맨드 객체 | 컨트롤러 파라미터로 DTO를 쓰면 자동 바인딩됨 |
| @RequestParam | 파라미터를 하나하나 받고 싶을 때 사용 |
| @GetMapping | GET 요청을 처리하는 매핑 어노테이션 |
| 리턴값 | 뷰 이름 (JSP 파일명) |
| void 리턴 | 요청 경로명과 같은 이름의 JSP로 자동 이동 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>basic.jsp 페이지랍니당당구리</h2>
</body>
</html>
package org.zerock.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SampleDto {
private String name;
private int age;
}
package org.zerock.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.zerock.domain.SampleDto;
import lombok.extern.log4j.Log4j;
@Controller
@Log4j
@RequestMapping("/sample/*") // sample경로인 애들 다 매핑
public class SampleController {
//해당url경로가 view의 경로이다!
@GetMapping({"basic"})
public void basicGet() {
log.info("집가고 싶어용😎");
}
@GetMapping("ex01")
public String ex01(SampleDto dto) { // 데이터가 객체로 자동 만들어짐 -> 커맨드 객체임
log.info("주말 빨리와라아🤩");
log.info("dto:"+dto);
return "ex01";
//INFO : org.zerock.controller.SampleController - 집가고 싶어용😎
//INFO : org.zerock.controller.SampleController - 주말 빨리와라아🤩
//INFO : org.zerock.controller.SampleController - dto:SampleDto(name=aaa, age=20)
}
@GetMapping("ex02")
public String ex02(@RequestParam("name")String name,
@RequestParam("age") int age) {
log.info("이름: " + name);
log.info("나이: " + age);
return "ex02";
//INFO : org.zerock.controller.SampleController - 이름: aaa
//INFO : org.zerock.controller.SampleController - 나이: 20
}