■ 스프링(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가지만 사용한다.)
  1. Jsp View : HTML 로 응답한다. *InternalResourceView
  2. Redirect View : 다른 주소로 이동하라고 응답한다.
  3. 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 설정을 해줘야한다.

최근 글