// SimpleMappingController.java
// localhost:8080/SimpleMapping1 으로 페이지 불러오기
@GetMapping("/SimpleMapping1")
public String SimpleMapping1(){
// views/SimpleMapping/SimpleMapping1.jsp 페이지
return "SimpleMapping/SimpleMapping1";
}
1-2. 테스트 코드(SimpleMappingControllerTest.java)
// SimpleMappingControllerTest.java
@Test
public void simpleMapping1() throws Exception{
// 페이지 요청시 성공적으로 처리
mockMvc.perform(get("/SimpleMapping1"))
.andDo(print()) // 처리 내용을 출력
.andExpect(status().isOk()) // 200
.andExpect(forwardedUrl("SimpleMapping/SimpleMapping1")) //
;
// 페이지 요청시 /123 부분으로 404 에러
mockMvc.perform(get("/SimpleMapping1/123"))
.andDo(print()) // 처리 내용을 출력
.andExpect(status().isNotFound()) // 404 에러
;
// 페이지 요청시 /zzzzz 부분으로 404 에러가 일어남으로 400번대 에러임을 확인
mockMvc.perform(get("/SimpleMapping1/zzzzzz"))
.andDo(print()) // 처리 내용을 출력
.andExpect(status().is4xxClientError()) // 400 번대 에러일 경우
;
}
2. 컨트롤러의 path의 숫자 또는 영문 받기
2-1. 컨트롤러 소스 코드(SimpleMappingController.java)
// SimpleMappingController.java
// localhost:8080/SimpleMapping1 으로 페이지 불러오기
@GetMapping("/SimpleMapping2/{number:[1-9]+}")
public String SimpleMapping2Number(@PathVariable String number){
System.out.println("number = > " + number);
// views/SimpleMapping/SimpleMapping1.jsp 페이지
return "SimpleMapping/SimpleMapping1";
}
// localhost:8080/SimpleMapping1 으로 페이지 불러오기
@GetMapping("/SimpleMapping2/{characters:[a-z]+}")
public String SimpleMapping2String(@PathVariable String characters){
System.out.println("characters = > " + characters);
// views/SimpleMapping/SimpleMapping1.jsp 페이지
return "SimpleMapping/SimpleMapping1";
}
2-2. 테스트 코드(SimpleMappingControllerTest.java)
@Test
public void simpleMapping2() throws Exception{
// 페이지 요청시 number 또는 characters 없음으로 404 에러
mockMvc.perform(get("/SimpleMapping2"))
.andDo(print()) // 처리 내용을 출력
.andExpect(status().isNotFound()) // 404
;
// 페이지 요청시 number
mockMvc.perform(get("/SimpleMapping2/123123"))
.andDo(print()) // 처리 내용을 출력
.andExpect(status().isOk()) // 200
.andExpect(forwardedUrl("SimpleMapping/SimpleMapping1")) //
;
// 페이지 요청시 characters
mockMvc.perform(get("/SimpleMapping2/asdasda"))
.andDo(print()) // 처리 내용을 출력
.andExpect(status().isOk()) // 200
.andExpect(forwardedUrl("SimpleMapping/SimpleMapping1")) //
;
}
3. 컨트롤러의 여러 패스를 받는 경우 / 하나의 패스를 받는 경우
3-1. 컨트롤러 소스 코드(SimpleMappingController.java)
// "SimpleMapping3/"만 맞는 다면, 모든 다 받는다(ex: "test/123" , "test" , "test/1111/1123123")
@GetMapping("/SimpleMapping3/**")
@ResponseBody
public String SimpleMapping3Multi(HttpServletRequest request){
System.out.println("SimpleMapping3Multi");
System.out.println("request.getRequestURI() = > " + request.getRequestURI());
return "SimpleMapping3Multi " + request.getRequestURI();
}
// "SimpleMapping3/" 아래의 한 패스만 받는다, (ex: "test" , "zzzzz" , "1123123")
@GetMapping("/SimpleMapping3/*")
@ResponseBody
public String SimpleMapping3Simple(HttpServletRequest request){
System.out.println("SimpleMapping3Simple");
System.out.println("request.getRequestURI() = > " + request.getRequestURI());
return "SimpleMapping3Simple " + request.getRequestURI();
}
3-2. 테스트 코드(SimpleMappingControllerTest.java)
@Test
public void simpleMapping3() throws Exception{
// 페이지 요청시 number 또는 characters 없음으로 404 에러
mockMvc.perform(get("/SimpleMapping3"))
.andDo(print()) // 처리 내용을 출력
.andExpect(status().isOk()) // 200
.andExpect(content().string("SimpleMapping3Multi " + "/SimpleMapping3"))
;
// 페이지 요청시 number 또는 characters 없음으로 404 에러
mockMvc.perform(get("/SimpleMapping3/123/zzzzaaa"))
.andDo(print()) // 처리 내용을 출력
.andExpect(status().isOk()) // 200
.andExpect(content().string("SimpleMapping3Multi " + "/SimpleMapping3/123/zzzzaaa"))
;
// 페이지 요청시 number 또는 characters 없음으로 404 에러
mockMvc.perform(get("/SimpleMapping3/zzaseqwe123"))
.andDo(print()) // 처리 내용을 출력
.andExpect(status().isOk()) // 200
.andExpect(content().string("SimpleMapping3Simple " + "/SimpleMapping3/zzaseqwe123"))
;
}
@Controller public class SimpleMappingController {
// localhost:8080/SimpleMapping1 으로 페이지 불러오기 @GetMapping("/SimpleMapping1") public String SimpleMapping1(){ // views/SimpleMapping/SimpleMapping1.jsp 페이지 return "SimpleMapping/SimpleMapping1"; }
// localhost:8080/SimpleMapping1 으로 페이지 불러오기 @GetMapping("/SimpleMapping2/{number:[1-9]+}") public String SimpleMapping2Number(@PathVariable String number){ System.out.println("number = > " + number); // views/SimpleMapping/SimpleMapping1.jsp 페이지 return "SimpleMapping/SimpleMapping1"; }
// localhost:8080/SimpleMapping1 으로 페이지 불러오기 @GetMapping("/SimpleMapping2/{characters:[a-z]+}") public String SimpleMapping2String(@PathVariable String characters){ System.out.println("characters = > " + characters); // views/SimpleMapping/SimpleMapping1.jsp 페이지 return "SimpleMapping/SimpleMapping1"; }
// "SimpleMapping3/"만 맞는 다면, 모든 다 받는다(ex: "test/123" , "test" , "test/1111/1123123") @GetMapping("/SimpleMapping3/**") @ResponseBody public String SimpleMapping3Multi(HttpServletRequest request){ System.out.println("SimpleMapping3Multi"); System.out.println("request.getRequestURI() = > " + request.getRequestURI()); return "SimpleMapping3Multi " + request.getRequestURI(); }
@Test public void simpleMapping1() throws Exception{ // 페이지 요청시 성공적으로 처리 mockMvc.perform(get("/SimpleMapping1")) .andDo(print()) // 처리 내용을 출력 .andExpect(status().isOk()) // 200 .andExpect(forwardedUrl("SimpleMapping/SimpleMapping1")) // ;
// 페이지 요청시 /123 부분으로 404 에러 mockMvc.perform(get("/SimpleMapping1/123")) .andDo(print()) // 처리 내용을 출력 .andExpect(status().isNotFound()) // 404 에러 ;
// 페이지 요청시 /zzzzz 부분으로 404 에러가 일어남으로 400번대 에러임을 확인 mockMvc.perform(get("/SimpleMapping1/zzzzzz")) .andDo(print()) // 처리 내용을 출력 .andExpect(status().is4xxClientError()) // 400 번대 에러일 경우 ; }
@Test public void simpleMapping2() throws Exception{ // 페이지 요청시 number 또는 characters 없음으로 404 에러 mockMvc.perform(get("/SimpleMapping2")) .andDo(print()) // 처리 내용을 출력 .andExpect(status().isNotFound()) // 404 ;
// 페이지 요청시 number mockMvc.perform(get("/SimpleMapping2/123123")) .andDo(print()) // 처리 내용을 출력 .andExpect(status().isOk()) // 200 .andExpect(forwardedUrl("SimpleMapping/SimpleMapping1")) // ;
// 페이지 요청시 characters mockMvc.perform(get("/SimpleMapping2/asdasda")) .andDo(print()) // 처리 내용을 출력 .andExpect(status().isOk()) // 200 .andExpect(forwardedUrl("SimpleMapping/SimpleMapping1")) // ; }
@Test public void simpleMapping3() throws Exception{ // 페이지 요청시 number 또는 characters 없음으로 404 에러 mockMvc.perform(get("/SimpleMapping3")) .andDo(print()) // 처리 내용을 출력 .andExpect(status().isOk()) // 200 .andExpect(content().string("SimpleMapping3Multi " + "/SimpleMapping3")) ;
// 페이지 요청시 number 또는 characters 없음으로 404 에러 mockMvc.perform(get("/SimpleMapping3/123/zzzzaaa")) .andDo(print()) // 처리 내용을 출력 .andExpect(status().isOk()) // 200 .andExpect(content().string("SimpleMapping3Multi " + "/SimpleMapping3/123/zzzzaaa")) ;
// 페이지 요청시 number 또는 characters 없음으로 404 에러 mockMvc.perform(get("/SimpleMapping3/zzaseqwe123")) .andDo(print()) // 처리 내용을 출력 .andExpect(status().isOk()) // 200 .andExpect(content().string("SimpleMapping3Simple " + "/SimpleMapping3/zzaseqwe123")) ; } }