6-3) 글로 적는 웹개발 공부 - 스프링(Spring)
2019. 9. 28. 19:51
■ 스프링(Spring)
- 빈(Bean) 은 웹서비스 관점에서 객체이다. 빈(Bean) 에서 프로퍼티(Property) 는 멤버필드이다.
- 스프링 프레임워크는 빈 팩토리(Bean Factory) / 빈 컨테이너(Bean Container) : 우리가 설정한대로 객체들을 전부 생성해주고, 그 객체들간의 의존성을 주입시켜준다. *빈 와이어링(Bean Wiring) = 빈 묶기
- 위에서 설명한 특징이 바로 DI(Depandency Injection)
- 그 외에 관점지향프로그래밍 : AOP(Aspect Orientied Programming)을 지원한다.
■ 스프링 WEB MVC
- MVC 는 모델(Model) / 뷰(View) / 컨트롤러(Controller) 로 이루어진다.
- 모델(Model 은 뷰(View) 에서 출력한 데이터 : 내부적으로 Map 으로 구현되어 있다.
- Map 은 키(Key) 와 값(Value) 을 가진다. HttpSession 등 '이름=값' 으로 구성된 형태들이 전부 Map 인터페이스의 구현체(구현클래스)이다.
- 뷰(View) 는 서버(Server) 에서 클라이언트(Client) 로 응답(Response) 하는 것이다.
- 뷰(View) 는 대표적으로 3가지가있다. (수업이나 프로젝트에서 99.9% 이 3가지만 사용한다.)
- Jsp View : HTML 로 응답한다. *InternalResourceView
- Redirect View : 다른 주소로 이동하라고 응답한다.
- Json View : ajax 요청시 json 으로 응답한다. Mapping Jackson Json View
- 컨트롤러(Controller) 는 Controll 타워의 역할을 담당한다. 유저의 요청을 받고, 그 요청에서 필요한 데이터를(파라미터나 헤더의 정보들)을 얻고, 비지니스 로직(Business Logic) 을 수행하는 서비스를 선택하여 메서드를 호출하여 뷰(View)에 필요한 데이터(Data) 를 얻어서 Model 에 attribute 로 add 한다. 또한 적절하게 뷰(View) 를 선택한다.
- 컨트롤러(Controller) 에서 비지니스 로직(Business Login) 을 수행하는 것은 아니다. 단 파일 업로드 / 세션 처리등은 이 곳에서 담당한다.
- jsp 뷰를 응답하려면 jsp 의 이름을 String 으로 리턴(return) 한다. *만약 주소와 jsp 의 이름이 같다면 리턴이 없어도 됨(void)
- redirect 뷰를 응답하려면 redirect 에 주소를 더해서 String 으로 리턴한다.
- json 뷰를 응답하려면 잭슨제이슨(Jackson Jason) 라이브러리 3개를 추가한다 / @Responsebody 로 응답해야한다.
- 파일업로드를 처리하려면 라이브러리를 추가한다. / SpringFrameWork 에서 제공하는 MultipartFile 클래스와 MultipartHttpServletRequest 클래스를 사용해서 File 업로드 기능을 구현할 수 있다. * 중요한 점은 MultipartFile 의 이름과 <input type="file"> 요소의 이름이 반드시 같아야 한다.
- 프런트 컨트롤러 (Front Controller) 는 개념이고 이 개념을 구현한게 바로 DispatcherServlet 이다.
■ RESTful (API or Web Service)
- REST 의 개념 : 하나의 uri 는 하나의 고유한 리소스(Resource) : 자원을 대표할 수 있도록 설계해야 한다는 개념이다.
- REST는 리소스(Resource) / 메서드(Method) / 메세지(Message) 로 분류한다.
- 리소스(Resource) 는 uri(Uniform Resource Identifier)
- 메서드(Method) 는 폼요소의 method 로 get / post / put / delete
- "20번 영화의 이름을 '월E' 로 변경한다. 라는 비지니스 로직이 있다면, 리소스(Resource) 는 movie / 메서드(Method) 는 put / 메세지(Message) 는 movie/20
- 45번 영화를 삭제하는 URI 및 메서드를 표헌하세요.
DELETE /movie/45
- GET /user/2/follow 는 어떤 의미인지 설명해보세요.
2번 유저의 follow 리스트를 불러오는 의미이다.
- 영화 목록 3페이지 / 정렬기준 : 새로운 순서로 URI 를 나타내보세요.
GET /movie/page/3
- 현재 브라우저의 폼에서는 PUT / DELETE 가 적용되지 않는다. 그렇기 때문에 web.xml 에 filter 를 설정해야한다.
- 영화를 수정하려고 합니다. 폼을 완성하세요.
<form action="/movie" method="post">
<input type="hidden" name="_method" value="delete"/>
</form>
■ 인터셉터(Interceptor)
- 인터셉터(Interceptor) 는 DispatcherSevlet 에서 우리가 만든 Controller 의 method 호출전에 작동된다.
- HandlerInterceptor 를 구현하여 클래스를 생성하면 인터셉터(Interceptor) 가 된다.
- preHandle() 메서드는 전처리 / postHandle() 메서드는 후처리
- preHandle() 메서드의 리턴값이 true 면 Controller 의 method 호출이 된다.
- xxx-servlet.xml 에 Interceptor 설정을 해줘야한다.
'개발자의 길 > 글로 적는 웹개발' 카테고리의 다른 글
6-2) 글로 적는 웹개발 - 스프링(Spring) (0) | 2019.09.28 |
---|---|
6) 글로 적는 웹개발 - 스프링(Spring) (0) | 2019.09.23 |
5-3) 글로 적는 웹개발 공부 - 복습 (0) | 2019.09.22 |
5-2) 글로 적는 웹개발 공부 - 복습 (0) | 2019.09.18 |
5) 글로 적는 웹개발 공부 - 복습 (0) | 2019.09.17 |