11주차 Lab - Hello Spring

2020. 11. 15. 16:54카테고리 없음

  • JSP Model1 architecture 동작방식

  • 자바 웹 애플리케이션의 디자인 모델 중 하나로 view와 구성하는 로직을 모두 JSP페이지 하나에서 처리하는 구조를 의미합니다. 이 JSP 페이지에는 Logic과 Content로 구성이 되는데 이 content에 해당하는 것이 바로 소스코드입니다. 이 구조는 구조자체는 단순합니다. 그래서 저희같이 확실히 웹서비스에 대해 배우지 않은 초보 개발자들도 구현을 할 수 있다는 장점이 있지만 대신 JSP 파일을 구성하는 코드가 복잡하다는 단점이 있죠. 
  • 전체적인 동작 방식은 먼저 웹브라우저에서 JSP 페이지로 request를 보냅니다. 이는 http request입니다. 그 다음에 JSP에서는 JAVA bean에 접근을 시도하여 로직을 가동시키죠. 그러면 자바빈은 데이터베이스와 연결해서 해당 데이터를 저장하거나 가지고오는 로직을 수행합니다. 그러면 해당 데이터를 자바빈이 JSP에 넘겨주고 JSP는 HTTP Response의 형태를 통해 웹브라우저에 넘겨줌으로서 서비스를 해줍니다.
  • JSP Model2(MVC) architecture 동작방식

  • 앞서 설명한 JSP Model1과 다르게 모델 2는 모델1에서 JSP 페이지가 담당했던 것들을 분할시켜서 각각 Servlet, 클래스, JSP페이지로 구성이 되어있습니다. 
  • 전체적인 동작방식은 먼저 웹페이지에서 Request를 보냅니다. 그러면 그 Request를 Servlet이 든 Controller 부분에서 받아서 각각 View를 담당하는 JSP 페이지와 Model을 담당하는 자바빈에 보내줄 지 결정을 합니다. 그러면 Model에서는 웹페이지에 필요한 로직을 수행하는데 이 로직을 통해 데이터베이스에 접근하여 데이터를 저장 혹은 가져옵니다. 그러면 이 가져온 데이터를 컨트롤러에 전달하고 컨트롤러에서 받은 데이터를 View를 담당하는 JSP 페이지에 보냅니다. 그러면 JSP페이지에서 사용자에게 Response를 보내줌으로서 서비스가 일어납니다.
  • Model/View/Controller의 역할

  • Model : 데이터를 가져오고 저장하는 로직을 주로 처리합니다.
  • View : 웹브라우저에서 보여지는 화면단을 출력합니다.
  • Controller : input을 처리하고 흐름을 제어합니다.
  • Spring framework란?

  • java로 되어있는 플랫폼(JVM)들을 위해서 개발된 오픈 소스 어플리케이션 프레임워크로서 다이나믹(동적)한 웹 사이트 개발을 위해 여러 서비스를 제공합니다.
  • Spring framework 장점

  • 밑의 POJO방식으로 동작하는 프레임워크이므로 다른 인터페이스를 구현하거나 상속을 받을 필요가 없이 라이브러리를 자유롭게 사용할 수 있고 객체 자체가 무겁지 않습니다.
  • 관점지향프로그래밍(AOP)를 지원함으로써 코드를 수정하지 않고 기존의 코드에 추가 동작을 추가하여서 코드 핵심 부분을 복잡하고 어수선하게 하지 않고 여러 동작들을 프로그램에 추가를 할 수 있습니다.
  • IoC(Inversion of Control): 번역하면 제어를 거스르는, 즉 제어 역행이라는 뜻으로 제어를 하는 주체가 바뀌는 것을 의미합니다. 기존에는 제어를 하는 제어권이 사용자에게 있는 프레임워크가 대부분이었지만 제어역행 개념이 도입된 프레임워크는 반대로 프레임워크 자체에서 사용자의 코드를 호출합니다.

  • POJO: Plain Object Java Object의 준말로서 사용자가 만들어낸 객체를 의미합니다. 

  • Spring project의 폴더 구조 설명

  • src/main/java: 자바 파일들을 모아놓는 곳으로 보통 패키지 단위로 구별한 뒤 해당 패키지 내에 자바 파일을 저장시킵니다.
  • src/main/resources: 자바 클래스 파일에서 사용하는 리소스들을 저장하는 공간으로 클래스 파일에서 필요할 때마다 호출해서 사용합니다. xml 파일 등이 들어갑니다.
  • src/test: 여러 자바 코드와 리소스를 저장하는 곳입니다.
  • Maven dependencies: Maven에서 자동으로 라이브러리들을 관리해주는 폴더로서 jar과 같은 파일들을 다운받아서 저장합니다. dependency에 코드만 적으면 자동으로 다운을 받아서 적용시켜줍니다.
  • src: 웹과 관련된 리소스들을 저장한 루트 폴더입니다. 하위폴더들을 통해 웹과 관련된 리소스들을 저장해둡니다.
  • src/main/webapp/resources: 웹에 필요한 여러 리소스들을 보관해두는 공간으로 위의 src의 하위 폴더입니다. 이 폴더는 사용자가 직접 접근이 가능합니다. img, js, css 파일 등이 보관이 되어있습니다.
  • src/main/webapp/WEB-INF: 웹을 구성하는 코드 파일들과 컴파일된 파일, 환경설정과 관련된 파일들이 들어있는 폴더로 이 파일들은 보안을 중요시하기에 외부의 사용자가 직접적으로 접근할 수 없고 컨트롤러를 통해 간접적으로 접근할 수 있는 폴더입니다. 이 폴더의 하위 폴더로는 classes, spring, views 가 있는데 각각 컴파일 된 파일과 스프링 환경설정 파일, JSP와 HTML파일이 보관이 되는 공간입니다.