Spring Controller return type

Seoina·2020년 1월 18일
0

2020camp

목록 보기
9/12
  1. void type

컨트롤러에서는 브라우저에 보여줄 view의 이름을 전달한다고 되어있다. 아무것도 리턴을 하지 않는 void 타입의 경우에는 리턴값이 없는 대신 @RequestMapping에 지정한 URL에 해당하는 뷰 이름을 전달한다. @RequestMapping("/doA")라고 되어 있을 경우 doA라는 이름을 전달하는데, 클래스에도 @RequestMapping이 지정되어 있으므로 최종적으로 전달하는 뷰 이름을 /ex01/doA가 된다. /ex01/doA로 요청이 들어올 경우 doA() method가 요청을 처리하게 되고, /ex01/doA라는 뷰 이름을 전달한다. 전달된 뷰 이름을 servlet-context.xml 에 설정된 InternalResourceViewResolver에 의해 최종적으로 /WEB-INF/views/ex01/doA.jsp가 되고 해당 경로에 있는 doA.jsp가 실행된다.

  1. String type
    void 타입과 달리 return type이 String일 경우 리턴하는 문자열이 바로 뷰 이름이 되는 것이다. 그러면 views 폴더 아래에 jsp 파일을 생성해준다. views 폴더에 생성한 이유는 리턴한 result에 /WEB-INF/views와 .jsp가 붙어 결과적으로 /WEB-INF/views 아래에 있는 .jsp파일을 찾아 실행하기 때문이다. .jsp를 생성한 후 다시 실행시키면 이번에는 정상적으로 실행된다. 다음으로 @ModelAttribute("msg")에 의해 msg 파라미터가 처리되는지 확인을 하면 주소창에 위와 같이 /ex01/doC?msg=Hello라고 입력을 하면 JSP 파일에 입력한 메시지가 출력되는 것을 확인할 수 있는데, STS 콘솔창에 로그를 보면 주소창에 입력한 Hellow가 출력된 것도 볼 수 있다. ModelAttribute에 의해 msg파라미터 값이 문자열로 처리되어 doc() method에서 사용할 수 있고, result.jsp에서도 사용할 수 있다.
  1. String type - data를 전달할 경우

리턴 타입이 String인 메소드가 실행되면 data.jsp가 보여지게 된다. doD()를 보면 MemberVO 객체를 만들고 거기에 userid와 userpw 값을 각각 세팅하고 Model 객체에 담을 경우 이것을 뷰를 전달하는게 가능하다.
Model에 데이터를 담을 때 addAttribute()메소드를 사용하는데 addAttribute("이름",객체) 를 사용하여 이름을 이용해 객체를 사용할 수 있다. 또한 addAttribute(객체)를 사용하여 이름을 지정하지 않을 경우 자동적으로 객체의 클래스명 앞글자를 소문자로 처리해서 이름으로 사용하는 경우가 있다.

0개의 댓글