728x90
Controller
get 방식과 post 방식
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model,
@RequestParam(value = "name", required = false) String name) {
model.addAttribute("greeting", "안녕하세요, " + name);
return "hello";
}
@PostMapping("/hello")
public String hello(Model model,
@RequestParam(value = "name", required = false) String name) {
model.addAttribute("greeting", "안녕하세요, " + name);
return "hello";
}
}
여러 개의 요청 매핑
@Controller
@RequestMapping("/register") // 각 메서드에 공통되는 경로
public class RegistController {
@RequestMapping("/step1") // 공통 경로를 제외한 나머지 경로
public String handleStep1() {
ruturn "register/step1";
}
@RequestMapping("/step2") // 공통 경로를 제외한 나머지 경로
public String handleStep1() {
ruturn "register/step1";
}
}
요청 파라미터 접근
- 약관에 동의할 경우 값이 true인 'agree' 요청 파라미터 값을 POST 방식으로 전송
- 폼에서 지정한 agree 요청 파라미터의 값을 이용해서 약관 동의 여부 확인
HttpServletRequest
@PostMapping("/register")
public String register(HttpServletRequest request) {
String agreeParam = request.getParameter("agree");
if(agreeParam == null || !agreeParam.equals("true")) {
return "error";
}
return "register";
}
@RequestParam
@PostMapping("/register")
public String register(
@RequestParam(value="agree", defaultValue="false") Boolean agree) {
if(!agree) {
return "error";
}
return "register";
}
리다이렉트 처리
- POST 방식을 처리하는 메서드는 주소를 직접 입력할 때 사용되는 GET 방식의 요청은 처리하지 않음 -> 405 오류
@GetMapping("/register/step2")
public String handleStep2Get() {
return "redirect:/register/step1";
}
Model
- 요청 매핑 애노테이션이 적용된 메서드의 파라미터로 Model을 추가
- Model 파라미터의 addAttribute() 메서드로 뷰에서 사용할 데이터 전달
- 첫 번째 파라미터는 속성 이름
- JSP에서 ${greeting}의 형식으로 속성값에 접근
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello(Model model,
@RequestParam(value="name", required=false) String name) {
model.addAttribute("greeting", "안녕하세요, " + name);
return "hello";
}
}
ModelAndView
- Model을 이용해서 뷰에 전달할 데이터 설정
- 결과를 보여 줄 뷰 이름을 리턴
- 요청 매핑 애노테이션을 적용한 메서드는 String 타입 대신 ModelAndView를 리턴할 수 있다
@GetMapping
publicModelAndView form() {
List<Question> questions = createQuestions();
ModelAndView mav = new ModelAndView();
mav.addObject("questions", questions);
mav.setViewName("survey/surveyForm");
return mav;
}
728x90
'프로그래밍 > SPRING' 카테고리의 다른 글
10. MVC 3 - 세션, 인터셉터, 쿠키 (0) | 2022.08.04 |
---|---|
09. MVC 2 - 커맨트 객체 값 검증 및 에러 메시지 처리 (0) | 2022.08.03 |
07. Spring Web MVC (0) | 2022.08.01 |
06. AOP (0) | 2022.04.26 |
05. DI 적용 (0) | 2022.04.24 |