Controller에서 생성된 결과를 담는 객체입니다. View에서 출력할 데이터를 담아서 전달됩니다.
Controller에서 생성된 Model을 출력하기 위한 템플릿 역할을 합니다.
클라이언트의 요청을 받아 Model 객체를 생성하고, 생성된 Model을 View에 전달합니다.
// 1. 요청 처리
@Controller
@RequestMapping("/spring/chap01/*")
public class BasicController {
// 디테일한 URL
// URL : /spring/chap01/hello
@RequestMapping("/hello")
public String hello() {
System.out.println("hello 요청");
// /WEB-INF/views/hello.jsp
return "hello"; // hello.jsp로 포워딩
}
}
@Controller
를 명시함으로써 클라이언트의 요청을 처리하는 부분임을 알 수 있다.@RequestMapping
을 통해 URL에 대한 매핑 지정*
부분에 대한 URL 매핑request.getParameter
를 통해서 요청 파라미터를 읽을 수 있다. @RequestMapping("/person")
public String person(HttpServletRequest request) {
System.out.println("/person!!!");
String name = request.getParameter("name");
String age = request.getParameter("age");
System.out.println("name = " + name);
System.out.println("age = " + age);
return "";
}
// /spring/chap01/major?stu=kim&major=business&grade=3
@RequestMapping("/major")
public String major(
// @RequestParam 생략가능
// url에 major라고 쓰는것 나는 mj라고 부르겠다 -> 생략 불가능
@RequestParam String stu,
@RequestParam("major") String mj,
int grade) {
System.out.println("stu = " + stu);
System.out.println("major = " + mj);
System.out.println("grade = " + grade);
return "";
}
// ex) /spring/chap01/order?orderNum=22&goods=구두&amount=3&price=20000...
@RequestMapping("/order")
public String order(OrderDto order) {
System.out.println("주문번호 = " + order.getOrderNum());
System.out.println("주문상품명 = " + order.getGoods());
System.out.println("주문개수 = " + order.getAmount());
System.out.println("주문가격 = " + order.getPrice());
return "";
}
package com.study.springstudy.springmvc.chap01;
public class OrderDto {
private int orderNum;
private String goods;
private int amount;
private int price;
// getter, setter 생략
}
@Controller
public class ResponseController {
// JSP파일로 포워딩할 때 데이터 전달하기
// 1. Model 객체 사용
@RequestMapping("/hobbies")
public String hobbies(Model model) {
model.addAttribute("name", "김철수");
model.addAttribute("hobbies", List.of("축구", "수영", "영화보기"));
model.addAttribute("major", "경영학");
return "mvc/hobbies";
}
}
/hobbies
라는 URL로 매핑김철수
라는 데이터를 name
이라는 속성으로 View에 전달, List도 hobbies
라는 이름으로, 경영학이
라는 데이터를major
로 전달한다.<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
<h1>[${name}] 취미 목록</h1>
<ol>
<%-- for (String h : hList) --%>
<c:forEach var="h" items="${hobbies}">
<%-- 이건 주석입니다 --%>
<li>${h}</li>
</c:forEach>
</ol>
<h2>나의 전공: ${major}</h2>
</body>
</html>
${}
에 넣어서 사용할 수 있다. // 2. ModelAndView 객체 사용하기
@RequestMapping("/hobbies2")
public ModelAndView hobbies2() {
ModelAndView mv = new ModelAndView("mvc/hobbies");
mv.addObject("name", "박영희");
mv.addObject("hobbies", List.of("멍때리기", "맛집가기"));
mv.addObject("major", "컴퓨터 과학");
return mv;
}
/hobbies2
라는 URL로 매핑