<!-- 기존 jsp로 화면 설계 부분 -->
<!--
<beans:beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><beans:propertyname="prefix"value="/WEB-INF/views/" /><beans:propertyname="suffix"value=".jsp" /></beans:bean>
-->
<!-- thymeleaf 설정 부분 -->
<beans:beanid="templateResolver"class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"><beans:propertyname="prefix"value="/WEB-INF/views/" /><beans:propertyname="suffix"value=".html" /><beans:propertyname="templateMode"value="HTML5" /><beans:propertyname="cacheable"value="false" /><beans:propertyname="characterEncoding"value="UTF-8" /></beans:bean><beans:beanid="templateEngine"class="org.thymeleaf.spring5.SpringTemplateEngine"><beans:propertyname="templateResolver"ref="templateResolver" /></beans:bean><beans:beanclass="org.thymeleaf.spring5.view.ThymeleafViewResolver"><beans:propertyname="templateEngine"ref="templateEngine" /><beans:propertyname="characterEncoding"value="UTF-8" /></beans:bean><beans:beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><beans:propertyname="location"value="/resources/config/application.config" /><beans:propertyname="fileEncoding"value="UTF-8" /></beans:bean>
<!-- thymeleaf 설정 부분 -->
// SimpleMappingController.java// localhost:8080/SimpleMapping1 으로 페이지 불러오기@GetMapping("/SimpleMapping1")public String SimpleMapping1(){
// views/SimpleMapping/SimpleMapping1.jsp 페이지return"SimpleMapping/SimpleMapping1";
}
1-2. 테스트 코드(SimpleMappingControllerTest.java)
// SimpleMappingControllerTest.java@TestpublicvoidsimpleMapping1()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)
@TestpublicvoidsimpleMapping2()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")) //
;
}
@TestpublicvoidsimpleMapping3()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")) ; } }