이 게시글은 남궁성 강사님의 스프링의 정석 강의를 요약,정리한 글입니다.
@GetMapping, @PostMapping
@RequestMapping(value=”/register/add”, method={RequestMethod.POST, RequestMethod.GET})
@GetMapping("/register/add");
- 위를 간단히 사용할 수 있는 annotation
- url과 메서드를 매핑 할 때 요청 방식이 정해져있는 annotation
- spring ver 4.3부터 사용가능
- value가 같아도 method가 다르면 충돌나지 않는다.
@RequestMapping
- 맵핑될 url의 공통부분을 @RequestMapping으로 클래스에 선언가능
- 클래스에 @RequestMapping 선언하면 안의 모든 메서드의 매핑된 url앞에 붙는다.
<view-controller path=”…” view-name=”..”/>
- Controller가 단순히 요청과 view페이지 맵핑의 기능만 할 때는 web관련 설정 파일인 servlet-context.xml에 위의 한 줄을 추가하자.
- xmlns : xml name space 각 스키마에서 정의한 태그<>를 사용할 수 있도록 적어놓음. 접두사(xsi, beans, context..)를 이용하여 각 xmlns에서 정의한 태그를 사용할 수 있다. (하나의 접두사는 생략가능. 여기에서는 mvc가 생략됨)
URL 재작성
URL을 브라우저는 자동으로 인코딩 하지만, 내가 작성한 프로그램의 문자열은 직접 인코딩 설정을 해야한다. 그리고 view단에서도 decoding을 해줘야한다.
//view
<%@ page import="java.net.URLDecoder"%>
${URLDecoder.decode(param.msg, "utf-8" )}
//controller
String msg = URLEncode("메시지", "utf-8");
m.addAttribute("msg", msg);
return "redirect:/register/add";
return "redirect:/register/add?msg="+msg; //URL재작성 url rewriting
- 위의 두 줄이 아래의 한 줄과 동일하다.
model은 Controller에서 view에 값을 전달하는 객체.
redirect는 재요청을 의미해서 요청을 하는데 model을 담아서 보낼 수는 없다.
→ spring이 알아서 model객체를 get방식의 queryString으로 변환시켜준다.
→ 요청할 때 여러개의 값을 같이 보내야한다면 쓸 때 실수할 수 있으니까 model에 담아도 된다.
@RequestMapping의 URL패턴
우선순위
1 exact mapping (/login/login)
2 path mapping (/login/)
3 extension mapping (.do)
4 404 not found
- url 패턴에
- '?' : 한 글자
- '*' : 여러글자
- '**' : 하위경로포함
- 배열로 여러 패턴 지정 가능