localhost:8080/aaaa/bbb.txt라는 tomcat 기반의 웹서비스 실행이 있다고 생각해보자.
이때 다시 처음 나오는 aaaa를 특별하게 context-path이다.(=어플리케이션 이름)
가장 최 상단은 webapps이고 그 안에 aaaa 폴더 안에 bbb.txt를 실행시킨 것이다.
우리는 context-path 이후의 경로를 설계해야 한다.
eclipse에서 우리가 만든 코드들은 .plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps에 실행될 수 있게 변환되어 저장되어있다. 우리가 코드를 실행시키면 wtpwebapps로 복사가 되고 여기서 실행이 된다.
<Controller.class>
localhost:8080/MVCTEST/sub1/test1 -> @GetMapping("/sbu1/test1")
localhost:8080/MVCTEST/sub1/test2 -> @GetMapping("/sbu1/test2")
localhost:8080/MVCTEST/sub1/test3 -> @GetMapping("/sbu1/test3")
localhost:8080/MVCTEST/sub2/test1 -> @GetMapping("/sbu2/test1")
localhost:8080/MVCTEST/sub2/test2 -> @GetMapping("/sbu2/test2")
localhost:8080/MVCTEST/sub2/test3 -> @GetMapping("/sbu2/test3")
6개의 주소를 만들고 싶은데 Controller를 다음과 같이 정의하면, 구분하기 수정하기 불편하다.
<sub1Controller.class>
@Controller
@RequestMapping("/sub1")
public class sub1Controller{
@GetMapping("/test1")
public String test1(){
return "sub1/test1";
}
@GetMapping("/test2")
public String test2(){
return "sub1/test2";
}
@GetMapping("/test3")
public String test3(){
return "sub1/test3";
}
}
<sub2Controller.class>
@Controller
@RequestMapping("/sub2")
public class sub2Controller{
@GetMapping("/test1")
public String test1(){
return "sub2/test1";
}
@GetMapping("/test2")
public String test2(){
return "sub2/test2";
}
@GetMapping("/test3")
public String test3(){
return "sub2/test3";
}
}
하위 folder에 맞게 2개의 class로 분리해서 Controller를 만든다.
주의할 것은 RequestMapping을 먼저 설정했기 때문에 GetMapping에서는 그 이후에 경로를 설정한다.
하지만, return을 입력할 때는 전혀 관계가 없으므로 해당 주소를 정확히 다 입력해야 한다.
Get,Post mapping 2개 모두 같은 코드를 반환하는 경우
@GetMapping("/test8")
public String test8_get(){
return "test8";
}
@PostMapping("/test8")
public String test8_post(){
return "test8";
}
===============================================================
@GetMapping("/test8")
public String test8_get(){
return test8_post();
}
@PostMapping("/test8")
public String test8_post(){
return "test8";
}
===============================================================
@RequestMapping( value="/test8" method= {RequestMethod.GET, RequestMethod.POST})
public String test8(){
return "test8";
}
get방식과 post방식의 return이 차이가 없을 때 나눠서 쓰거나 get에서 post를 반환하지 말고
RequestMapping 방식을 쓰면 간편하게 코드를 정의할 수 있다.
반응형
'Spring > Spring MVC 5' 카테고리의 다른 글
파라미터에 객체를 주입받기 (0) | 2020.05.25 |
---|---|
파라미터 추출하기 (0) | 2020.05.25 |
프로젝트설정(not Xml, but Java) (0) | 2020.05.24 |
프로젝트 세팅(web.xml, servlet-context.xml) (0) | 2020.05.24 |
프로젝트 세팅(pom.xml) (0) | 2020.05.23 |