@RequestMapping("/register")
public class RegisterController {
@GetMapping("/add")
public String register() {
@PostMapping("/save")
public String save(User user, Model m) throw Exception {
이렇게 URL을 나눌 수도 있다.
우선순위(1 -> 2 -> 3)(Servlet과 비슷)
1.exact mapping : 정확히 일치
2.path mapping : 경로 맵핑
3.extension mapping : 확장자 맵핑
?는 한 글자, *는 여러 글자, **는 하위 경로 포함.
RequestMapping의 URL패턴 확인 예제.
package com.fastcampus.ch2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class RequestMappingTest {
// @RequestMapping({"/login/hello.do", "/login/hi.do"})
@RequestMapping("/login/hello.do") // http://localhost/ch2/login/hello.do
public void test1(){
System.out.println("urlpattern=/login/hello.do");
}
@RequestMapping("/login/*") // /login/hello, /login/hi
public void test2(){
System.out.println("urlpattern=/login/*");
}
@RequestMapping("/login/**/tmp/*.do") // /login/tmp/hello.do, /login/aaa/tmp/hello.do
public void test3(){
System.out.println("urlpattern=/login/**/tmp/*.do");
}
@RequestMapping("/login/??")
public void test4(){ // /login/hi, /login/my.car
System.out.println("urlpattern=/login/??");
}
@RequestMapping("*.do") // /hello.do, /hi.do, /login/hi.do
public void test5(){
System.out.println("urlpattern=*.do");
}
@RequestMapping("/*.???") // /hello.aaa, /abc.txt
public void test6(){
System.out.println("urlpattern=*.???");
}
}
URL에 포함된 non-ASCII문자를 문자코드(16진수) 문자열로 변환
(ex. 서현우 -> %...%...)
URL인코딩 != Base64(6bit씩 끊어서 A-Z,a-z,0-9,=,/로 표현)