좀 치는 스프링 스터디
https://github.com/woowacourse-study/2022-gugu-spring-study
- 스프링 MVC를 사용해서 웹 어플리케이션을 개발한다!
- = 컨트롤러, 뷰를 구현한다. (모델은?)
11-1. 요청 매핑 애노테이션을 이용한 경로 매핑 @Controller
웹 어플리케이션을 개발하는 것?
- 특정 요청 URL을 처리할 코드
- 처리 결과를 HTML과 같은 형식으로 응답하는 코드
- RequestMapping
- @Controller @RequestMapping("/Common") // 공통 경로 public class UserController { @RequestMapping("/step1") // 공통 경로를 재외한 나머지 경로 public String step1() { // ... } @RequestMapping("/step2") public String step2() { // ... } }
- GetMapping, PostMapping
- HTTP 요청에 따라
- 별도의 설정이 없으면 GET , POST 에 상관없이 @RequestMapping에 지정한 경로, 일치하는 요청 처리
- @RequestMapping("/Common", method = RequestMethod.GET) @RequestMapping("/Common", method = RequestMethod.POST)
리다이렉트
- redirect:경로
@GetMapping("/register/step1")
public void step1() {
return "redirect:/register/step2";
}
요청 파라미터 접근
- HttpServletRequest 사용
@PostMapping("/register/step1")
public void step1(HttpServletRequest request) {
String name = request.getParameter("username"); // get 메서드로 파라미터 구함
}
- @RequestParam
public void step1(@RequestParam(value="agree", defaultValue = "false) Boolean agree) {}
- value : 파라미터 이름
- default : 값이 없을 때, 값 지정
- required : 필수 여부 (true일때, 값이 없으면 Exception 발생)
- @ModelAttribute
- 생략 가능 (리뷰어 닉은 생략을 추천했다)
- 파라미터를 한번에 받는 생성자가 있거나, setter가 있어야 한다.
- 속성이름 변경이 가능 : @ModelAttribut("formData") RequestClass request
모델을 통해 컨트롤러에서 뷰에 데이터 전달
@RequestMapping("/hello")
public String hello(Model model, String name) {
model.addAttribute("greeting", "안녕하세요, " + name);
return "hello";
}
- 요청 매핑 애노테이션이 적용된 메서드의 파라미터로 Model 을 추가
- Model 파라미터의 addAttribute() 메서드로 뷰에서 사용할 데이터 전달
ModelAndView
- 두 가지를 한번에 처리할 수 있다.
- Model 을 이용해서 View에 전달할 데이터 설정
- 결과를 보여줄 뷰 이름 리턴
@GetMapping
public ModelAndView form() {
List<Question> questions = createQuestions();
ModelAndView mav = new ModelAndView();
mav.addObject("questions", questions);
mav.setViewName("survey/surveyForm");
return mav;
}
'공부 > Spring' 카테고리의 다른 글
[chap13] MVC 3 : 세션, 인터센터, 쿠키 (0) | 2022.06.02 |
---|---|
[chap12] MVC 2: 메시지, 커맨드 객체 검증 (0) | 2022.06.02 |
[chap10] 스프링 MVC 프레임워크 동작 방식 (0) | 2022.05.27 |
[chap8] DB연동 (0) | 2022.05.27 |
[chap7] AOP 프로그래밍 (0) | 2022.05.20 |
댓글