// pulbic String main2(@RequestParam(name="year" required=false String year) 아래와 동일
pulbic String main2(String year)
// pulbic String main2(@RequestParam(name="year" required=true String year) 아래와 동일
pulbic String main2(@RequestParam String year) // 안넘어오면 클라이언트 잘못!
pulbic String main2(@RequestParam (required=false, defaultValue="1") String year) // 안넘어오면 클라이언트 잘못!
pulbic String main2(@RequestParam (required=true) String year) // 안넘어오면 클라이언트 잘못!
@ExceptionHandler(Exception.class)
public String catcher(Exception ex) {
return "yoilError";
}
1) 매개변수에 적용한 예제
@RequestMapping("/getYoilMVC5")
// public String main(@ModelAttribute ("myDate") MyDate date, Model M) {
public String main(@ModelAttribute MyDate date, Model m) { // 위와 동일!
char yoil = getYoil(date);
// m.addModelAttribute("myDate", date);
// -> 이걸 안써줘도 Model에 자동 적재! (@ModelAttribute 어노테이션을 썼으니까!)
// 첫번째 객체에 소문자로 된 key값으로 적재 "myDate"
m.addModelAttribute("yoil", yoil);
return "yoil";
}
2) 반환 타입에 적용한 예제
private @ModelAttribute("yoil") char getYoil(Mydate date) {
return getYoil(date.getYear(), date.getMonth(), date.getDay());
}
3) 컨트롤러 매개변수에 붙을 수 있는 어노테이션
${param.파라미터명}
컨트롤러의 메소드가 선언되어있을 때, 메소드를 호출했을시 메소드의 파라미터를
참조형 객체의 타입에 맞게 1) 타입을 변환해주고 2) 데이터를 검증해주는 역할을 수행
브라우저를 통해서 요청받은 값이 실제 객체에 바인딩될 때 중간 역할을 수행
과정
1) 타입 변환시, 결과&오류를 BindingResult에 저장
2) 타입 변환 후, 데이터 검증 (Validation) 결과&오류를 BindingResult에 저장
3) 바인딩 결과를 담아서 컨트롤러에 넘겨주어 컨트롤러가 결과값을 확인
4) 이 때, BindingResult는 Binding할 객체의 바로 뒤에 와야 함
ex) MyDate date, BindingResult result
@ExceptionHandler(Exception.class)
public String catcher(Exception ex, BindingResult result) {
System.out.println("result : " + result);
FieldError error = result.getFieldError();
// method의 반환값이 field error임
System.out.println("code : " + error.getCode());
System.out.println("field : " + error.getField());
System.out.println("message : " + error.getDefaultMessage());
ex.printStackTrace();
return "yoilError";
}
<c:url>
action="<c:url value="/register/save"/>"
<view-controller path="/register/add" view-name="registerForm" />
1) @RequestMapping
@RequestMapping("/register")
2) @GetMapping
@GetMapping("/add")
3) @PostMapping
@PostMapping("/add")
4) @RequestMappnig의 URL패턴
?
는 한 글자, *
는 여러 글자, **
는 하위 경로 포함/login/*
(경로 맵핑), *.do
(확장자 맵핑)request.setCharacterEncoding(encoding);
filterChain.doFilter(request, response);
// -> DispatcherServlet으로 보내기 전에 전처리 작업
// 필터가 하는 일 : DS로 가기 전 응답 - 요청을 거치는 구간!