@Controller -> URL을 통해 연결할 수 있는 프로그램 등록
@RequestMapping -> URL과 메서드를 연결
@Controller
public class Hello{
@RequestMapping("/hello")
public void main(){
//todo
}
}
/프로젝트이름/hello의 URL과 Hello클래스의 main 메서드를 연결할 수 있음.
단순히 RequestMapping으로 선언하면, GET과 POST 메서드로 해당 URL에 연결할 수 있다.
그런데 GET방식으로 request를 보내면, URL에 데이터가 노출될 수 있기 때문에 POST 방식으로만 request를 보내야 하는 경우가 있고, 서버가 매크로에 취약해질 수 있기 때문에 보내는 메서드를 제한해야하는 경우가 있다 .
GetMapping과 PostMapping을 사용하여 메서드를 제한할 수 있다.
@Controller
@RequestMapping("/hello")
public class Hello{
@GetMapping("/hello")
public void hello1(){
//todo
}
@PostMapping("/hello")
public void hello2(){
//todo
}
}
위 예시는 hello1()과 hello2()가 맵핑된 URL이 같은데, 원래는 충돌이 나지만, 보내는 메서드가 다르면 상관없다. 클래스에도 RequestMapping을 할 수 있는데, 위 처럼 선언하면, /hello/hello로 접근해야 한다.
혹은 servlet-context.xml에 view-controller로 등록할 수 있다. (GET만 허용)
<view-controller path="/hello" view-name="hello" />