Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/9월

22.09.07 - [ Spring ] DispatcherServlet, spring legacy 프로젝트 생성 및 구조 살펴보기

giggs 2022. 9. 14. 11:24

 

 

 

 

--- INDEX ---

 

 

1. Dispatcher Servlet 2. legacy 프로젝트 생성 3. legacy 프로젝트 구조 4. 프로젝트 실행
DS, 대장서블릿
연결, context
도메인역순.도메인역순.앱이름 java, resources
webapp, view , xml파일들
@RequestMapping
return

 

 

 


 

 

 

1. Dispatcher Servlet

 

 

  • 지금까지 우리가 한 방식으로는
  • 요청마다 담당 서블릿이 있고 – 이 서블릿은 컨트롤러의 역할도 한다.
  • 서블릿의 원래 역할은 – 요청을 받고 – 응답을 해주고 – 하는 것이다.
  • 이제 서블릿은 원래의 그 역할만 하게 만들 것이다.
  • 데이터를 뭉치고 처리하는 것은 컨트롤러에서 처리할 것이다.
  • 앞으로는 서블릿은 서블릿으로 / 컨트롤러는 컨트롤러로 만들 것이다.

 


 

1-1 : 대장 서블릿

 

  • ex) 지금은 짜장면 주문을 전문으로 받는 애가 있고, 탕수육 주문을 전문으로 받는 애가 있는 상황이다.
  • 굳이 그럴필요없잖아요? 이제는 주문 전체를 관리하는 직원 한 명을 두고 처리하도록 해 줄 것이다.

 

 

 

대장 서블릿을 만들어서

들어오는 모든 요청을 받아가지고 처리하게 해줄 것이다.

 

 

처리한다는 내용은 

지금 이런 요청 들어왔으니까 이 요청 담당자 컨트롤 누구 일해라 이런 식으로

 

 

 

 

 

대장 서블릿의 이름은

--- DispattcherServlet ---

 

 

 


 

 

 

1-2 : 대장 서블릿을 활용한 스프링의 전반적인 흐름 체크

 

 

  • 어떤 대장 서블릿이 ( 디스패쳐서블릿이 ) – 컨트롤러들을 호출한다
  • - 컨트롤러들을 태어나게 해 주기 위해서는 컨트롤러마다 태어날 때 필요한 것들 채워주어야 한다.
  • 컨트롤러/서비스/dao 객체들을 만들어서 컨트롤러 태어날 때 넣어준다. ( 자동으로 )
  • 그럼 우리는 작업하면서 직접 new () 해서 객체 만들일이 없다!
  • 대장 서블릿은 객체들을 미리 다 만들어놓고 가지고 있다.

 

 

 

 /member/login 요청이 들어온다면 ?

  • 이 요청을 처리하는데 필요한 객체들을 뽑아서
  • 객체들을 순서대로 배치해서 잘 흘러갈 수 있게 해준다.
  • 멤버컨트롤러객체 / 멤버서비스객체 / 멤버dao객체 필요하구나. - 판단해서 뽑아와서 연결해준다.
  • 여러 개의 객체를 조합하는 것을 spring 이 알아서 해준다.
  • 이제 개발자가 할 일은?
  • 대장 서블릿이 다룰 context 바구니에 어떤 객체들이 들어있어야 하는지 알려주어야 한다.
  • =  어떤 객체를 가지고 있어야 하는지 알려주어야 한다.
  • =  바구니에 필요한 객체들을 넣어주는 작업이 개발자가 할 일이다.

 

 

 

 

 

 

 

 


 

 

1-3 : 정리

  • 모든 요청받아주는 대장 서블릿이 존재하고
  • 요청에 맞게 필요한 객체들을 뽑아서 연결해서 작업시켜준다.
  • 객체들을 가지고 있는 바구니 – context
  •  
  • 객체들을 어떻게 가지고 있나?
  • 특정 클래스를 통해서  [메서드/필드/생성자/어노테이션]등을 가져올 수 있고 ( private도 가능)
  • 이것을 이용해서 객체를 만들어서 context 바구니에 가지고 있는다
  •  
  • 즉, 우리가 만들어놓은 클래스/메서드/변수/어노테이션 등등 다 가져와서
  • 필요한 작업에 맞게 뽑아서 연결해준다.

 

 

 

 

 


 

 

 

 

 

2. 프로젝트 생성해보기 ( spring legacy project )

 

 

 

 

 


 

 

 


 

 

 

 

 

 

 

 


 

 

 

 

 

3. 플젝 디렉토리 구조 구경하기 

 

 

 

 

3-1 : src로 사용했던 ( java 파일들 넣어주던 곳 )

 

 

 

 

우리가 클래스 파일들(컨트롤러,서비스,다오) 작업했던 경로

- src 해주었던 폴더가 = 이거 구나 생각

java작업 여기다가 하면 된다..

 

 

 


 

 

 

3-2 : Source Folder 만들어서 최상단 경로로 인식 - Mybatis 설정해주었던 곳

 

 

 

 

mybatis관련 설정해주었던 것들 여기다가 작업

 

 

 


 

 

 

 

3-3 : Spring을 테스트해보는 공간 

 

 

 

 

springtest 해보는 공간 당분간은 사용할 일 없을 것이다.

spring을 테스트할 때

어떤 정형화된 방법을 사용하니까 기본적인 방법을 만들어준 것이다.

 

 

 

 


 

 

 

3-4 : WebContent , webapp 으로 사용하던 프로젝트 최상단 경로 - webapp

  • Spring 최상단 경로는 src/main/webapp 이다.
  • /WEB-INF/views/home.jsp 요청하면 ㅡ 홈 화면 나온다.
  • web-inf 하위에 views 도 자동으로 만들어준다~ 사람들이 많이 쓰니까

 

 

 

 

 


 

 

3-5 : 우리가 열심히 수정할 애들 4개

 

 

 

 

# servlet-context.xml에서 하는 작업

  • 대장 서블릿이 관리하는 context에 대한 작업들

 

 

# root-context.xml에서 하는 작업

  • 대장 서블릿도 결국엔 내 프로젝트 안에서 존재하는 직원
  • 모든 직원이 사용하는 바구니 context에 대한 설정

 

 

# web.xml에서 하는 작업

  • web application 과 관련된 설정

 

 

# pom.xml에서 하는 작업

  • 웬만한 lib 다운받는 작업 진행
  • build와 관련된 작업들 ,
  • 현재 프로젝트 관련 모든 정보 작업들( version, compile 등)
  • pom 이 무엇의 약자인지 보면 알 수 있다.

 

 

 

 

 

 


 

 

 

 

4. 프로젝트 실행해보기

 

 

4-1 : 프로젝트 생성할 때 - 3번째 경로에 사용한 - 앱이름이 - 프로젝트네임으로 인식된다!

 

 

 

 

 

 

web.xml에서 jstl사용하는 태그 없애주면  ( 아직 jstl연결 안함 )

화면이 잘 나온다

 

잘 나오는 이유를 알아보자

 

 

 


 

 

 

4-2 : app01 요청을 처리하는 애가 있어서 화면이 나오는 것일 텐데 누구인가?

 

 

# 여기 안에 우리가 만들지 않은 패키지와 컨트롤러가 만들어져 있다..

 

 


 

이 파일이 어떻게 보여준 것인지 체크해보자.

 

 

어노테이션의 value / 이걸로 요청을 받은 것이고

home()이라는 메서드 하나 존재한다.

 

 

return “home” 이라고 해주면 처리해준다. 

얘가 화면을 보여주는구나

 

 

 

 

 

 

지금 수준에서는

 

app01/ --- 요청은 --- @RequestMapping 과 관련이 있고

 

return home 은 --- 응답해주는 거와 관련이 있구나

 

정도로 체크