Tomcat은 JSP 환경을 포함하고 있는 Servlet 컨테이너


Servlet과 jsp를 이용하여 로직을 처리한다


웹서버와 WAS는 이 처럼 동적데이터를 처리해주는 웹컨테이너의 유무 차이라고 보면 된다 


WAS = 웹 서버 + 웹 컨테이너

이미지 출처: http://gap85.tistory.com/45


사용자 요청(웹 브라우저) -> 웹 서버 -> WAS(동적 처리) -> 웹 서버 -> 사용자 응답 메세지(웹 브라우저)


웹 서버에서 JSP를 요청하면 톰캣에서는 JSP 파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿의 수행결과를 웹 서버에서 전달하게 된다. 



출처: http://unabated.tistory.com/


Servlet이란

Servlet은 웹에서 JAVA 프로그래밍을 구현하기 위해 탄생 함.



서블릿(Servlet)

 - 자바 플랫폼에서 컴포넌트를 기반으로 한 웹 애플리케이션을 개발할 때 사용하는 핵심 기술.

   이러한 서블릿을 이용하면 웹 애플리케이션 확장이 용이하고 플랫폼에 독립적인 개발이 가능하다.

 - 쉽게 말하면 "클라이언트의 요구를 받아 그에 대한 처리를 한 후, 결과를 되돌려주는 서버 모듈"이다.


서블릿의 장점

1) 스레드를 기반으로 하기 때문에 웹 애플리케이션 운영에 효율적이다.

2) 자바를 기반으로 하므로 자바 API를 모두 사용할 수 있다.


웹 애플리케이션 개발시 서블릿 이용의 장점

1) 컨텐츠와 비즈니스 로직을 분리

2) 컨트롤러와 뷰 역할 분담으로 인해 웹 디자이너와 개발자간의 원활한 작업이 가능.

3) 유지보수가 수월, 기능 확장이 용이하다.

4) 현재와 같이 프로그래머가 HTML, 자바스크립트, 스타일 시트와 같은 복잡한 기술을 모두 알아야 할

    필요는 없다.

5) JSP에 HTML, CSS, 자바스크립트와 자바 소스 코드가 뒤섞이는 문제를 막는다.


동작 과정
1) 웹 서버는 클라이언트 요청을 컨테이너로 전달한다. 컨테이너는 서블릿이 메모리에 있는지 확인하고 없을시
   클라이언트 요청을 처리할 스레드를 생성해서 처리한다.
2) 서블릿은 JDBC를 이용해 데이터베이스에 접근할 수 있고, 별도로 제작된 자바 클래스를 통해 다양한 기능을 구현한다.
3) 서블릿에서 수행된 결과는 HTML 형식으로 클라이언트에 전달된다.

서블릿(Servlet)도 하나의 자바프로그램이긴 한데, 서블릿의 주된 업무는 사용자에게 정보를 입력받아 적절한 HTML 문서를 돌려주는 역할을 한다. 이러한 일을 하는 프로그램을 자바로 구현한 것이다. 사용자의 입력에 따라서 다른 HTML문서를 만들어내므로 동적인 HTML 문서를 구현할 수가 있게 된 것이다.

서블릿 규칙은 꽤 복잡하다. 따라서 이를 좀 더 쉽게 프로그래밍하기 위하여 나온 것이 JSP이다. JSP 문서를 실행시켜면 이 문서가 자동적으로 서블릿으로 컴파일되어 실행되게 된다.


이미지 출처: http://wiki.gurubee.net/pages/viewpage.action?pageId=26740202

.jsp -> .java -> .class -> .jsp


Servlet Container란

Servlet을 실행하고 생명주기를 관리하는 역할을 한다.

멀티 스레딩을 지원하여 클라이언트의 다중 요청을 알아서 처리해준다.

대표적인 Conatainer에는 Tomcat, jetty, jboss 등이 있다



출처: http://wan00ny.tistory.com/11

1. 기본적 타이핑실력과 영어실력

2. 버전관리의 습관

3. 알아보기 쉬운 변수명, 파일명, 디렉토리관리

4. 
반복되는 과정은 추상화할생각
반복되는 로직은 함수화, 클래스화 할 생각
반복되는 계산은 따로 저장해 두고 빠르게 꺼내기
반복되는 개념들은 따로 머릿속에 통암기하기

5.
이 코드가 하루 뒤, 일주일 뒤, 한달뒤, 일년 뒤쓰일 수 있는가?
이 코드가 남에게 알아보기 쉬운가?
내일 내가 이 코드를 남들에게 설명할 수 있는가?

그러니까 핵심은 - 
속도를 줄이는 생각을 습관하하라는거다(유지보수의 속도, 실제 코드의 속도)

6. 
'모른다'라는 말을 함부로 입에 달고살지 않기
대신에 '찾아보고 따라하면 구현할 수 있다' 라는 마인드셋 가지기 
이해가 안되면, 내일은 이해할 수 있다 라는 생각을 가지고 일단 눈에 익혀두기

이게 기본기다

이모든 자동화들과 리팩토링들이 귀찮은 일이 아니라 자연스럽고 당연한 일이라고 받아들이는게 프로그래머의 기본기임.

가끔씩 현업에서 보면 git commit조차 귀찮아하는 사람들이 있는데, 그런사람들이 대표적으로 기본기가 안되어있는 사람임

항상 이슈를 보면 더 간단하고 간명한 해결책이 있을거라 생각해라

그리고 그 과정은 반복되는 일과 계산을 줄이려는 사고에서 부터 출발하라

그러다 보면 언젠가 너의 머리가 shortest path를 찾는 머신이 되어

코딩이 귀찮은 일이 아니라, 귀찮은 일을 도와주는
행복한작업이 될 것이다






프로그래밍 갤러리에서 퍼온 글인데.. 여기서 의외로 괜찮은 글을 발견한 것 같다.


가끔씩 보면 내가 잘 나아가고 있는지 확인할 수 있을 것 같다.

웹 개발을 배우다보면 Spring or JSP의 환경설정을 할때 web.xml파일을 자주 사용합니다.


web.xml파일에서 서블릿의 url mapping과 같은 간단한 환경 설정부터 복잡한 환경설정까지 모두 가능합니다.


그래서 XML이 무엇이고 어디에서 사용하는지 궁금해졌습니다.


대부분 그저 Spring에 xml파일이 있고,  그 파일을 이용해서 Spring 환경설정을 한다. ! 


이정도로 끝내지만, 좀 더 파고들면 XML은 문서로써 사용할 수 있고 파서로써도 사용할 수 있습니다.


아래 링크의 설명도 조금 부족하지만, 나중에 책을 구입하여 자세하게 알아봐야할 것 같습니다.



http://itstory07.tistory.com/125

사실 모델1, 모델2의 차이점은 Servlet의 사용 유무라고 해도 과언이 아니다. 하지만, 처음 웹개발을 공부하던 당시를 생각해보면


왜 JSP와 Servlet을 같이 사용하며, 각각의 차이는 무엇인가? 라는 물음에 정확한 답을 찾기 어려웠다.


하지만 최근 다시 복습을 하는 과정에서 나의 궁금증을 해결해 줄 수 있는 좋은 사이트를 찾았다.


http://anster.tistory.com/128


이런 소중한 자료를 남기고, 공유해주는 많은 프로그래머 분들에게 감사하다.


나도 제대로 된 개발자가 된다면 내가 알고 있는 많은 지식들을 공유하고 알려주고싶다.


그 날이 올때까지 블로그 운영을 꾸준히 해야겠다.


'점프 투 자바'는 인터넷에 자바의 문법에 대해 잘 설명되어있다. 대학생때 자바책을 들고 공부했지만 책의 두깨에 놀라서 자주 보지 않았던 것 같다.


하지만, 점프 투 자바는 읽기 편하고 핵심만 요약되어 있다. 물론, 객체지향 프로그래밍에 대한 구체적인 내용은 C++공부로 어느정도 틀이 잡혀있었기 때


문에 수월했던 것 같다. 정말 C++책만.. 7회정도 정독한 것 같다. 머리가 안좋아서..


나중에 기회가 된다면 JAVA책을 한권 사서 읽어야겠다.


https://wikidocs.net/book/31

'STUDY > IT' 카테고리의 다른 글

[IT] 정적분석도구들의 차이점  (0) 2019.01.07
[IT] jenkins란? 개념 및 설치방법(2)  (0) 2019.01.04
[IT] jenkins란? 개념 및 설치방법  (0) 2019.01.03
[IT] 프론트엔드 공부사이트  (0) 2019.01.02
[IT]리펙토링이란?  (0) 2018.09.01

+ Recent posts