3.9 에서 eGovFrame Web Project 의 sample source 프로젝트 내부의 dispatcher servlet 에 관한 질문
- 작성자 :
- 김*호
- 작성일 :
- 2021-07-05 14:53:11
- 조회수 :
- 3,997
- 구분 :
- 개발환경 / 3.9
- 진행상태 :
- 완료
Q
스프링 왕초보 질문 드립니다.
e-gov frame web project 로 crud 를 구현하는 가이드 메뉴얼을 만드는 과정에서
샘플 프로젝트를 생성해 놓고 이런저런 변화를 주면서 실험(?)을 해보고 있습니다 .
dispatcher servlet 은 컨트롤러와 관련된 xml 설정정보 파일이라는 정도로만 이해한채 dispatcher servlet 의 빈들 제각각 내용이 이해가 되지 않아서 문의 드립니다.
dispatcher-servlet . xml 개요
beans 태그 속에 다른 태그들은 지워도 문제가 안되지만. 위 5개는 사라질 경우 컨트롤러가 멀쩡히 일하지 못한다는 것을 확인했습니다.
(
1 <context:component-scan base-package="샘플 프로젝트 베이스패키지명"> < / ...>
2 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> < / ...>
3 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
4 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
5 <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1" ... :
)
1번과 5번은 그 목적과 필요성이 분명하고. 저같은 왕초보라도 이게 무슨일을 하는지는 이해가 갑니다.
1번은 스캔 대상 패키지 내부에 있는 여러 자바클래스들중 controller 정보라고 어노테이션 붙여서 손들고있는 자바를 컨트롤러로서 브라우저 요청을 받아들이는 용도로 사용할것이다.
서비스나 리포지토리라고 손들고 있는 애들은 exclude 즉 제외시키고 외면할 것이다 라는 뜻으로 이해가 되었고 .
5번은 뷰리졸버 .즉 컨트롤러내의 메서드가 스트링을 리턴할 경우 어느 폴더의 ( 리턴한 스트링값) .jsp 를 > 서블릿컨테이너에서 이리저리 재가공해서 html 모양으로 브라우저에 출력해줄 것이다. 라는 즉 어떤 jsp 파일을 출력할거다 라는 정보를 스프링에게 알려주는 역할이다 정도로 이해가 되었습니다.
그런데 2, 3,4 는 왜 존재하는지, 왜 지우면 심각한문제가 터지는지 이해가 되지 않아서 2 3 4 번의 기능과 목적, 이 빈을 제거 한채로 컨트롤러가 제역할 할수있는 다른 방법이 있는지 ?등이 궁금합니다.
감사합니다.
e-gov frame web project 로 crud 를 구현하는 가이드 메뉴얼을 만드는 과정에서
샘플 프로젝트를 생성해 놓고 이런저런 변화를 주면서 실험(?)을 해보고 있습니다 .
dispatcher servlet 은 컨트롤러와 관련된 xml 설정정보 파일이라는 정도로만 이해한채 dispatcher servlet 의 빈들 제각각 내용이 이해가 되지 않아서 문의 드립니다.
dispatcher-servlet . xml 개요
beans 태그 속에 다른 태그들은 지워도 문제가 안되지만. 위 5개는 사라질 경우 컨트롤러가 멀쩡히 일하지 못한다는 것을 확인했습니다.
(
1 <context:component-scan base-package="샘플 프로젝트 베이스패키지명"> < / ...>
2 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> < / ...>
3 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
4 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
5 <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1" ... :
)
1번과 5번은 그 목적과 필요성이 분명하고. 저같은 왕초보라도 이게 무슨일을 하는지는 이해가 갑니다.
1번은 스캔 대상 패키지 내부에 있는 여러 자바클래스들중 controller 정보라고 어노테이션 붙여서 손들고있는 자바를 컨트롤러로서 브라우저 요청을 받아들이는 용도로 사용할것이다.
서비스나 리포지토리라고 손들고 있는 애들은 exclude 즉 제외시키고 외면할 것이다 라는 뜻으로 이해가 되었고 .
5번은 뷰리졸버 .즉 컨트롤러내의 메서드가 스트링을 리턴할 경우 어느 폴더의 ( 리턴한 스트링값) .jsp 를 > 서블릿컨테이너에서 이리저리 재가공해서 html 모양으로 브라우저에 출력해줄 것이다. 라는 즉 어떤 jsp 파일을 출력할거다 라는 정보를 스프링에게 알려주는 역할이다 정도로 이해가 되었습니다.
그런데 2, 3,4 는 왜 존재하는지, 왜 지우면 심각한문제가 터지는지 이해가 되지 않아서 2 3 4 번의 기능과 목적, 이 빈을 제거 한채로 컨트롤러가 제역할 할수있는 다른 방법이 있는지 ?등이 궁금합니다.
감사합니다.
환경정보
-
- OS 정보 : Window 10 64x
- 표준프레임워크 버전 : 3.9
- JDK(JRE) 정보 : 1.8
- WAS 정보 : tomcat 8.5
- DB 정보 : mariadb
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크 센터입니다.
질문하신 내용은 현재 표준프레임워크 교육(온라인/오프라인)에 포함된 내용으로
교육 수강(화면처리, MVC)을 통해 확인이 가능 할 것 같습니다.
1,5번에 대해서는 대략적으로 이해를 하고 계신 것 같습니다.
2,3번에 관하여서는 mvc를 사용하기 위한 설정으로
HandlerMapping는 @RequestMapping에 명시된 해당 url과 Controller를 검색하여 DispatcherServlet에 전달하게 됩니다.
HandlerAdapter는 Controller의 알맞은 메서드를 호출해서 요청을 처리하고 그 결과를 DispatcherServlet에 전달하는 역할을 합니다.
4의 경우 다국어를 지원하기위해 locale정보를 찾아주는 LocaleResolver를 사용하는데
이때 locale 정보를 cookie에서 사용할지, session에서 사용할지 , 클라이언트 브라우저에 설정된 locale 정보를 사용할지에 따라
CookieLocaleResolver, SessionLocaleResolver, AcceptHeaderLocaleResolver로 구분하여 사용 할 수 있습니다.
도움이 되셨길 바랍니다.
감사합니다.
안녕하세요.
표준프레임워크 센터입니다.
질문하신 내용은 현재 표준프레임워크 교육(온라인/오프라인)에 포함된 내용으로
교육 수강(화면처리, MVC)을 통해 확인이 가능 할 것 같습니다.
1,5번에 대해서는 대략적으로 이해를 하고 계신 것 같습니다.
2,3번에 관하여서는 mvc를 사용하기 위한 설정으로
HandlerMapping는 @RequestMapping에 명시된 해당 url과 Controller를 검색하여 DispatcherServlet에 전달하게 됩니다.
HandlerAdapter는 Controller의 알맞은 메서드를 호출해서 요청을 처리하고 그 결과를 DispatcherServlet에 전달하는 역할을 합니다.
4의 경우 다국어를 지원하기위해 locale정보를 찾아주는 LocaleResolver를 사용하는데
이때 locale 정보를 cookie에서 사용할지, session에서 사용할지 , 클라이언트 브라우저에 설정된 locale 정보를 사용할지에 따라
CookieLocaleResolver, SessionLocaleResolver, AcceptHeaderLocaleResolver로 구분하여 사용 할 수 있습니다.
도움이 되셨길 바랍니다.
감사합니다.