웹 프로그래밍을 하려면 웹이 어떻게 동작하는지를 알아야한다.

 

 

목차

1. 개발도구 STS, Eclipse
2. 스프링 동작방식 - LifeCycle
3. Servlet / Container란?

 

1. 개발도구 STS, Eclipse

자바 프로그래밍 수업을 들을때 대부분 Eclipse를 사용한다. 그리고 웹 개발할때도 Eclipse를 사용할 수 있다. 그러면 이 둘의 차이는 무엇이고 둘 중 무엇을 선택해야하는가?

-> 회사에서 쓰는거 쓰면 됨ㅎ
Eclipse로는 필요한 패키지를 설치, 적용시키며 원하는 형태의 JAVA 프로그램을 만들 수 있다.
반면 STS는 JAVA 웹 개발에 최적화 되도록 만들어진 형태이다. Eclipse에서 제공하는 패키지, Spring에서 제공하는 패키지 둘 다 쓸 수 있음

Eclipse에서 웹 개발하려면 톰캣 설치하고 연동하는 환경 설정이 필요하지만, STS에서는 이런 환경설정이 기본으로 셋팅되어 있기때문에 따로 설정 안해주고 바로 개발을 시작할 수 있다. 
Eclipse Marketplace에서 STS 다운로드 후 사용 가능
따라서 둘 다 똑같음. 그냥 쓰고싶은거 쓰면 된다. 

 

2. Servlet / Container란?

하나의 이야기로 알아보자.

1.  자바를 이용해서 웹페이지를 만드려고 했다. 
2.  JSP 등장 => html파일이 java로 바꾸기 위해 jsp가 탄생
3.  완성된 jsp 파일을 이제 컴파일 해야함. 
4.  .java를 컴파일 하면 .class파일이 된다. 이 class파일들이 servlet이 된다.
5.  이렇게 jsp -> servlet으로 바꾸고,  servlet -> jsp로 바꾸어 주는것을 만듬
    이 과정들을 하나로 묶어논 것을 웹 컨테이너라고 부름 서블릿들을 묶어논것이니 서블릿 컨테이너 라고도함
6.  암튼 servlet(java 클래스)을 컴퓨터가 동작시키려면? -> 컴파일 해야함
7.  컴파일에 필요한것 = 컴파일러 - JDK 필요
그래서 WAS 설치할때 환경 변수에 JDK 컴파일러 경로를 써주는것이다.

8.  아파치 회사에서는 원래 WS(웹서버)를 통해 html로 정적 웹을 운영하는 웹서버를 가지고 있었다.
여기에다가 이렇게 개발된 웹 컨테이너를 합침 -> 웹 서버 + 웹 컨테이너 = Tomcat(톰캣) 탄생~

9. 이런것을 아파치사에서만 만든게 아니고 다른 회사에서도 만들었는데 암튼 이렇게 동작하는것들을 WAS(Web Application Server)라고 함. 그래서 WAS의 대표 종류중 하나를 Tomcat이라 한다.

따라서 웹 컨테이너는 아래 역할을 한다.
---------------------------------------------------------------------------------------------------
jsp 파일 -> 서블릿 변경 -> 서블릿 JDK로 컴파일 
서블릿 파일 -> jsp로 변경
=> html로 보이게 된 jsp 파일은 웹서버로 던져줌 = 웹 서버와 통신 기능
jsp 서블릿 관리함 
=> 서블릿의 생애주기 관리
요청이 오면 하나씩 생성하면 겁나 비효율적이겠져? -> 
요청할 때마다 쓰레드를 생성함
=> 멀티쓰레드 관리
프로그램이 메모리에 올라와서 동작하면 객체를 생성하고 끝내면서 동작한다.
그런데 뭘 생성하고 뭘 끝내는건가를 결정하는것을 XML 파일에 작성을 한다.
(XML 파일의 유래와 왜 사용되는지는 시간나면 정리)
그래서 프로그램이 동작하면 첫빠따로 보는것이 XML 파일보고 설명서대로 행동한다.
=> 선언적 보안관리(?)
---------------------------------------------------------------------------------------------------

첨부터 자바 파일(.class) 안에다 html썻으면 편했잖아 라고 하면 설명 길어짐
GooGle 검색창에 "JSP 탄생배경" 검색하면 우리 개발 고수님들이 깔끔하게 정리한 내용들이 많이 나옵니다!

암튼 그래서.

jsp파일을 java파일로 바뀌어진것을 서블릿 이라고 부른다.
그리고 이와 같이  프로그램이 동작할 수 있도록 환경을 하나로 묶어논 것들을 Container라고 부른다.

- 결론
Servlet : jsp파일을 Java 환경에서 실행시키기 위해 변경된 .java 파일
Container : (서블릿) 파일을 실행 시킬 수 있는 환경

객체를 생성하고 동작하고 다 사용하면 죽인다. 그래야 한정된 메모리 공간을 효율적으로 사용하는 것이다.
이것을 프로그램의 생애주기(Life Cycle)이라고 한다.

 

3. LifeCycle

스프링은 컨테이너에 Bean객체를 만들어 이것을 실행시키는 것이다. 이 라이프 사이클이 어떻게 돌아가는건지를 알아보도록 한다.
LifeCycle이 어떻게 돌아가는지 알아보도록 한다.
InitializingBean( 생성 ) -> servlet 객체 동작 -> DesposalBean( 종료 )

GenericXmlApplicationContext gxac = new GenericXmlApplicationContext("classpath:DispatchServlet.xml");

'WEB 개발 > Spring 개념' 카테고리의 다른 글

Spring - DB 연동방법  (0) 2019.04.24
MVC 패턴  (0) 2019.03.28
웹 서비스 과정 - Client - Server 구조  (0) 2019.03.28

+ Recent posts