본문 바로가기
JAVA/Spring

Spring MVC - 뷰 이름 자동지정법

by 설총이 2018. 9. 12.


1.

return 타입을 String으로 지정함으로써, viewName으로 '직접 설정'해서 뷰페이지로 보내는 방법이면서

각각 경로를 잡는 방법.

==> made 한번 , view 한번 경로를 지정해서 사용해야한다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Controller
public class CookieController {
 
    @RequestMapping("/cookie/made.do")
    public String make(HttpServletResponse response) {
        response.addCookie(new Cookie("auth""KHacademy"));
        return "cookie/made";
    }
 
    @RequestMapping("/cookie/view.do")
    public String view(@CookieValue(value = "auth", defaultValue = "0"String auth) {
        System.out.println("auth 쿠키 : " + auth);
        return "cookie/view";
    }
}
 
cs






2.

1번이 번거롭기때문에, 단계를 거치지 않고 made를 만들고 바로 view로 가는 redirect 뷰 방법



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Controller
public class CookieController {
 
    @RequestMapping("/cookie/made.do")
    public String make(HttpServletResponse response) {
        response.addCookie(new Cookie("auth""KHacademy"));
        return "redirect:/cookie/made";
    }
 
    @RequestMapping("/cookie/view.do")
    public String view(@CookieValue(value = "auth", defaultValue = "0"String auth) {
        System.out.println("auth 쿠키 : " + auth);
        return "cookie/view";
    }
}
 
cs






3.

return타입을 String으로 명시하지 않고, 뷰 이름 자동 지정법.

return값이 없는 메서드 인경우에

@RequestMapping에 적혀있는 ("/cookie/view.do") 에서


맨앞 '/' 제거하고, '.do'인 확장자 제거해서 자동 cookie/view로 리턴하게된다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Controller
public class CookieController {
 
    @RequestMapping("/cookie/make.do")
    public String make(HttpServletResponse response) {
        response.addCookie(new Cookie("auth""KHacademy"));
        return "redirect:/cookie/view.do";
    }
 
    @RequestMapping("/cookie/view.do")
    public void view(@CookieValue(value = "auth", defaultValue = "0"String auth) {
        System.out.println("auth 쿠키 : " + auth);
        System.out.println("리턴타입 void로 성공");
    }
}
cs





- 뷰 이름 자동 지정 규칙


1. 리턴타입이 Model, Map인경우

2. 리턴타입이 void이면서, ServletResponse / HttpServletResponse타입의 파라미터가 없는경우


==> 요청 URI에서 맨 앞 '/' 와 확장자를 제외한 나머지 부분으로 사용된다.


ex) /search/game2.do => search/game2


리다이렉트 뷰 : 이름에 redirect:접두어