Spring MVC
: 이제 Controller만 만들면 된다. Spring에서 내부적으로 다 포워딩을 해준다. Spring에 프론트 컨트롤러인 dispatcherservlet 내부에 다 존재한다. 따라서 만드는데 간단해진다 GOOD !
<aside> ✅ Q. 스프링에서 제공하는 Model은 무슨 역할을 해 ?
A. 스프링에서 Model은 컨트롤러가 뷰에 데이터를 전달하는 데 필수적인 역할을 합니다. 뷰가 사용자에게 표시할 데이터를 쉽게 접근할 수 있게 합니다.
model.addAttribute 메소드를 사용하여 컨트롤러에서 생성하거나 처리한 데이터를 뷰로 전달할 수 있다. 뷰는 이 데이터를 사용하여 사용자에게 표시할 화면 콘텐츠를 생성
</aside>
사용 예시
@Controller
public class ExampleController {
@GetMapping("/greeting")
public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting"; // 뷰 이름 (예: greeting.html, greeting.jsp)
}
}
// 대체로 **addAttribute를 사용하여 컨트롤러에서 생성한 데이터를 뷰로 가져오기** 위해 사용
// (Model 객체는 addAttribute 메소드를 사용하여 name이라는 키에 name 값을 추가합니다.)
Spring 요청 처리 핸들링
//spring 에서 요청 처리를 하고 싶으면 @Controller
@Controller
@RequestMapping("/spring/chap01/*") // 적어둔 요청 URL이 들어오면 받겠다. 자유롭게 써도 됨.
public class BasicController {
// 디테일한 요청들은 메서드로 !
// URL : /spring/chap01/hello -> url이 들어오면 아래 메서드 요청을 받겠다
@RequestMapping("/hello") // 특정 추가 url
public String hello() {
System.out.println("hello 요청이 들어옴.");
return "hello"; // 화면에 표시할 jsp 파일
}
// =========📌URL에 붙어있는 요청 파라미터 (query string) 읽기
//url 에 붙어 있거나 form 태그에서 전송된 데이터
// 1. HttpServletRequest 사용 - ⭐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 "";
}
// 2. @RequestParam 사용하기 - 직접 파라미터를 요청해서 읽어오겠다 ~
@RequestMapping("/major")
// @RequestParam 생략 가능 ! but, @RequestParam("클라이언트에게 보낼거 적기 URL") String mj
public String major(String stu, @RequestParam("major") String mj, @RequestParam int grade) {
System.out.println("stu = " + stu);
System.out.println("major = " + mj);
System.out.println("grade = " + grade);
return "";
}
// 3. 커맨드 객체 (RequestDTO) 사용하기
// EX) /order?orderNum=1&goods=구두...파라미터가 10개가 넘어 ...
@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 "";
}
}
Spring - jsp 파일로 포워딩할 때 데이터 전달하기 <Model, ModelAndView>
@Controller
public class ResponseController {
// 📌JSP 파일로 포워딩할 때 데이터 전달하기
// 1. Model 객체 사용하기 - 파라미터로 컨트롤러에 데이터를 뷰에 가져다 주기
@RequestMapping("/hobbies")
public String hobbies(Model model) {
model.addAttribute("name", "강길동");
model.addAttribute("hobbies", List.of("수영", "등산", "OTT"));
model.addAttribute("major", "건축학");
return "mvc/hobbies";
}
// 2. ModelAndView 객체 사용하기 - 메서드 타입 !
@RequestMapping("/hobbies2")
public ModelAndView hobbies2() {
// model 데이터와 view 를 합쳐주는 느낌 !?
ModelAndView mv = new ModelAndView("mvc/hobbies"); // 여기에 jsp 파일 넣기
mv.addObject("name", "박수순");
mv.addObject("major", "항공과");
mv.addObject("hobbies", List.of("독서", "덕질"));
return mv;
}
}