- @ModelAtrribute 에 대하여 설명하시오.
- @RequestMapping 과 @GetMapping 의 차이는?
- @PathVariable 에 대하여 설명하시오.
- Command 객체에 대하여 설명하시오.
- 스프링에서 redirect 와 forward 방법은?
- 요청 핸들러 메서드의 파라미터나 메서드 내에 선언된 메서드의 반환값을 모델에 추가할 때 사용
2번 예시와 3번 예시는 동일한 과정을 수행한다.
1번 예시
@RequestMapping("/student")
public String student(@RequestParam("id") String id, Model model) {
System.out.println("student()..");
model.addAttribute("studentId", id);
return "student/student_id";
}
2번 예시
@RequestMapping(method = RequestMethod.GET, value = "/student")
public String student(@RequestParam("id") String id, Model model) {
System.out.println("student()..");
model.addAttribute("studentId", id);
return "student/student_id";
}
3번 예시
@GetMapping("/student")
public String student(@RequestParam("id") String id, Model model) {
System.out.println("student()..");
model.addAttribute("studentId", id);
return "student/student_id";
}
http://localhost:8282/path?student=10
대신
http://localhost:8282/path/student/10
의 형태로 변형시키는 걸 제안한 것이라 보면 됨.
사용 시 변수명과 메서드의 파라미터명이 동일해야 한다.
(예시1 형태일 경우에 한함.)
원래 예시2의 형태로 해줘야 하지만, 더 축약한 형태가 예시1이라고 한다.
예시2에서는 에너테이션에서 이미 일치시키는 과정을 밟고 있으므로, 이후 받는 메서드 파라미터명은 다르게 해도 된다.
예시1)
@RequestMapping("/student/{id}")
public String student(@PathVariable String id, Model model) {
System.out.println("student()..");
model.addAttribute("studentId", id);
return "student";
}
예시2)
@RequestMapping("/student/{id}")
public String student(@PathVariable("id") String studentId, Model model) {
System.out.println("student()..");
model.addAttribute("studentId", studentId);
return "student";
}
Command 패턴
캡슐화는 객체지향 프로그래밍의 기본 개념 중 하나.
- 객체의 상태와 행위를 하나로 묶고, 외부에서는 내부 구현에 직접 접근하지 못하도록 하는 것
-> 객체 간의 결합도를 낮추고 코드의 유지보수성을 향상
Spring
redirect는 리턴되는 문자열 값에 "redirect:"을 추가한다.
-> 기본적으로는 view 파일경로를 가리키지만, 해당 상황에서 redirect 이후에 붙는 문자열(ex)"/studentOK")은 경로를 의미
-> forward: 다음에 붙는 문자열 또한 경로를 의미하는 것.
활용예시.
@RequestMapping("/redirect/check")
public String redirectCheck(@RequestParam("id")String id, Model model) {
System.out.println("redirectCheck()..");
if(id.equals("abcde")) {
return "redirect:/studentOK";
}
model.addAttribute("id", id);
return "forward:/studentNG";
}
@RequestMapping("/studentOK")
public String studentOK() {
return "/student/studentOK";
}
@RequestMapping("/studentNG")
public String studentNG() {
return "/student/studentNG";
}
forward와 redirect에 대한 개념 정리하면서 그린 ppt이미지
- 과연 이걸 그림만 보고 설명할 수 있을까? 흠...
- 그리고 왜 굵은 글씨로 설정하는지 알겠다. 이미지로 보니 같은 크기인데 글자가 안보여...ㅠㅠ

