본문 바로가기
Programming/Spring

@GetMapping @PostMapping 그리고 view-controller

by hongchii 2022. 1. 2.
728x90
반응형

@GetMapping @PostMapping은 Spring 4.3 이후로 추가 되었다.

 

@RequestMapping(value="/register/add", method="RequestMethod.GET")
@RequestMapping(value="/register/save", method="RequestMaethod.POST")

이 코드를 

@GetMapping("/register/add")
@PostMapping("/register/save")

이렇게 간단하게 사용할 수 있다.

 

@GetMapping("/register/add")
@PostMapping("/register/add")

url이 같으면 원래는 충돌이 나지만 method가 다르기때문에 구분이 가능하여 충돌나지 않는다.

 

@Controller
@RequestMapping("/register")
public class RegisterController {
	@GetMapping("/add")
    public String register() {
    	return "registerForm";
    }
    
    @PostMapping("/add")
    public String save() {
    	return "registerInfo";
    }
}

맵핑될 url의 공통 부분을 @RequestMapping으로 클래스에 적용할 수 있다.

 

 

 

@GetMapping, @PostMapping이 import가 되지 않는다면 Spring의 버전을 확인해야한다.

Maven Dependencies의 Spring버전을 확인해보자.

 

pom.xml의 Spring 버전을 변경해준다.

pon.xml이 수정되었을땐 Update Project를 해줘야한다.

project 우클릭 -> Maven -> Update Project

완료 후 Maven Dependencies를 확인해보면 Spring의 버전이 변경한 버전으로 바꼈음을 확인할 수 있다.

5.0.7로 변경완료

 

@GetMapping("register/add") 
public String register() { 
   return "registerForm";
}

다음과 같은 코드는 그저 register/add를 입력했을 때 registerForm view로 연결해주는 단순한 역할만 한다.

이런 경우엔 view-controller를 사용해 코드를 간소화 할 수 있다.

 

src > main > webapp > WEB-INF > spring > appServlet > servlet-context.xml (Spring의 web관련 설정파일)

<view-controller path="/register/add" view-name="registerForm"/> 이라고 추가하면

@GetMapping("register/add") 
public String register() { 
  return "registerForm";
}

위 코드와 같은 역할을 하기때문에 위 코드를 삭제해도 된다.

view-controller는 GET요청만 허용하고 POST요청은 허용하지 않는다.

728x90
반응형

'Programming > Spring' 카테고리의 다른 글

Spring , 좋은 객체 지향 프로그래밍  (0) 2022.08.08
@ModelAttribute  (0) 2022.01.02
@RequestParam  (0) 2022.01.01
JSTL이란? JSTL core태그  (0) 2021.04.19
[Spring] 스프링 MVC - Model (데이터 전달자)  (0) 2021.04.14

댓글