본문 바로가기

Back_end/JSP || Servlet

[ STUDY ] 1 ~ 4 장

안녕하세요. 김고릴라 입니다.

이번주부터 개강하시는 분들이 여럿 계시더라구요,
저는 다음주면 개강을 하게되는데요 
개강하기전에 예습차원에서 수업 교재인 
"프로젝트로 배우는 자바 웹 프로그래밍"을 지금부터 
종강날까지 포스팅하고자 합니다.

저와 같은 책으로 수업을 들으시는 분들께 도움이 되셨으면 합니다 ^^




제목 : 프로젝트로 배우는 자바 웹 프로그래밍



1장 - [웹 프로그래밍에 대한 이해]

  • 한줄 설명이번 장은 웹프로그래밍에 들어가기에 앞서 이와 관련된 지식들을 선행하는 페이지 입니다.

  • 목표이번 장에서는 웹 기반이 되는 인터넷의 기술적 배경을 이해하고, 대표적인 웹 프로그래밍 언어와 기술을 배웁니다.


< 기술적 배경 >

1. 네트워크

  • 의미: 컴퓨터와 컴퓨터를 연결해주는 망

  • TCP/IP

    • 네트워크를 구축하려면 컴퓨터 간의 연결규격 즉, 프로토콜 이라는 것이 필요하다.여러 프로토콜 중에서 가장 대표적으로 널리 쓰이고 또한 인터넷에서도 사용되고 있다.

    • 의미: Transmission Control Protocol / Internet Protocol 인터넷이 기반을 두고 컴퓨터간에 통신할 수 있도록 만든 포로토콜중 하나이다. 인터넷 기반의 프로토콜로 자리잡은 이유는 하드웨어, 운영체제, 접속매체와 관계없이 동작할 수 있는 개방형 구조이기 때문이다.

    • 계층

      응용계층
      전송계층각 시스템을 연결하고 TCP 프로토콜을 이용하여 데이터를 전송한다
      인터넷계층IP프로토콜을 이용하여 데이터를 정의하고 경로를 배정한다
      물리계층실제 네트워크에 접근할 수 있도록 하는 물리적인 부분

2. 인터넷

(IP, 인터넷의 역사등 내용은 생략했습니다.)

웹서버와 HTTP

  • 서버와 클라이언트: 네트워크에서 서비스를 제공하는 컴퓨터를 Server라고 하고, 서비스를 이용하는 컴퓨터를 Client라고 합니다.

  • 프로토콜: 프로토콜은 서버들이 클라이언트와 통신하기 위한 규격으로 HTTP는 웹의 통신 프로토콜이다.

    • 예시: 웹서버로 URL을 보내면, 내부적으로는 GET이라고 하는 HTTP프로토콜의 명령이 요청된다.


< 대표적인 웹 프로그래밍 언어와 기술 >

  • 대표적인 웹 개발 기술

    구분종류
    클라이언트HTML, CSS, js(JavaScript)
    서버Servlet, JSP, ASP, PHP, Ruby, Node.js, Python
    클라이언트 서버 공통JAVA, C, C#.Net

    여기서 저희가 이번 수업에 집중적으로 배울 내용은 Controller를 만들기 위한 Servlet Model을 만들기 위한 JAVA 그리고 View를 만들기 위한 JSP가 되겠습니다.

    (※여기서 Model/ Controller/ View는 다음 수업에서 다루도록 하겠습니다.)

    • < Honey Tip: 기본적으로 알고쓰자! >

      • javascript

        비동기적 JavaScript

        비동기적이라 함은 전 명령의 수행이 끝나지 않아도 다음 명령을 실행한다는 의미이다.일반적으로 학부생이 사용하게되는 C나 Java같은 절차적 언어의 경우 어떤 특정 명령을 실행하면 그 명령이 끝날 때 까지는 다음 명령을 실행하지 않는다. 별도의 스레드나 프로세스를 사용하지 않는 경우..

        이와 다르게 JavaScript는 특정 명령이 실행된 후 그 명령이 끝나기 전에 다음 명령이 실행될 수 있다.

      • HTML

        웹의 전반적인 골격을 만들어주는 언어라고 생각하면 된다.Hyper Text Markup Language 로서 하이퍼 링크를 통해 여러페이지들을 한 페이지에 엮어두는 모습을 상상하면 되겠다. 건물을 지을때도 골격이 제일 중요하듯 웹을 설계시에도 HTML 설계를 잘하는것도 중요하다.

      • CSS

        HTML이 골격을 만드는 언어라면, CSS는 그 건물 골격위에 꾸며주는 건설자제와 같은것이라고 생각하면 되겠다. 골격을 새운뒤에 뭔가 허전한 바탕에 미적인 요소를 첨가해주는 용도라고 생각하면 되겠다.





2장 - [자바 웹 프로그래밍 개발환경 구축]

..이번 장은 블로그 Spring 스터디에서도 다룬 내용과 흡사함으로 생략하도록 하겠습니다.
책을 보면서 환경설정을 하던중 발생한 오류는 참고페이지 를 클릭하셔서 참고해 해결하시거나, 댓글이나 개인적으로 메일주시면 도와드리겠습니다 ^^



3장 - [ JSP를 알아보자 ]


  • 한줄 설명이번 장은 JSP가 무엇이고 JSP와 함께 사용되는 Servlet이 무엇인지 배우게 됩니다. 더 나아가 JSP를 간단한 예제를 통해 실습하는 경험을 가집니다.

  • 목표이번 장에서는 JSP를 이해하고 가장 유명한 디자인 패턴 중 하나인 MVC패턴에 대하여 공부합니다.




  • JSP (Java Server Page)란?: 자바로 구현된 기술로서, 특히 서블릿이라는 서버 프로그래밍 기술에 기반한 웹 프로그래밍 언어다.

  • 그렇다면 Servlet은 무엇일까?: 서블릿은 자바를 이용한 서버 프로그래밍 기술로서, 일반 애플리케이션을 개발하기 위해 만들어진 자바를 웹 환경에서 사용하려고 등장하였다.

  • JSP를 배우기 위해서 선행해야 할 기술: HTML, JS, CSS

  • Model 과 Controller를 만들기 위해 선행되야 할 기술

    • 자바 (JAVA)

      • 자바 기본

      • 객체지향 개념 OOP

      • 상속, 오버로딩, 오버라이딩

      • 스레드 등..

    • JDBC (Java DataBase Connactivity)

      • JDBC 드라이버 세팅

      • 기초 SQL문

    • 서블릿 (Servlet)

      • 서블릿 구조 이해

      • 간단한 서블릿 프로그래밍

      • requet, response 처리

      • GET/POST 처리


JSP 처리과정의 이해


< JSP 전체 동작 과정 >

  1. 웹 브라우저가 URL을 입력한다.

  2. DNS 서버로부터 입력한 URL을 변환한 IP주소를 받는다.

  3. 받은 IP주소의 웹 서버 8080번 포트에 JSP페이지를 요청한다.

  4. 웹 서버가 요청 내용을 분석하고 서블릿 컨테이너에 요청을 넘겨 처리한다.

  5. 화면에 보일 내용을 HTML 문서 형태로 웹 브라우저에 전송한다.


< 서블릿 컨테이너 내부 과정 >

JSP가 HTML과 같은 일반적인 텍스트 파일 구조인데 비해, 서블릿은 자바 소스로 작성된 클래스 파일 구조로 되어 있다. 서블릿 컨테이너는 JSP 파일을 서블릿 소스로 변환해서 컴파일 하는데, 일단 컴파일된 JSP는 단순한 파일이 아니라 컨테이너에서 서블릿 객체로 관리된다.

< JSP 서블릿 컴파일과 처리 과정 >

  1. 웹 서버로부터 JSP에 대한 사용자 요청이 컨테이너로 전달된다.

  2. 요청 JSP에 대한 서블릿이 존재하면 다음 단계로 진행하고, 존재하지 않을 경우 JSP를 .java 파일로 변환한 다음 .class 파일로 컴파일 한다.

  3. 컴파일된 서블릿 클래스를 컨테이너의 메모리에 적재하고 실행한다.

  4. 데이터베이스 처리 혹은 별도의 기능을 위한 클래스 호출이 있다면 실행하고 결과를 취합해 HTML 형태로 구성한다.

  5. HTML 형태의 결과를 웹 서버를 경유해 사용자 브라우저에 전달한다.


< MVC 패턴 >

  • 기본개념: MVC 패턴의 기본 개념은 사용자에게 보일 (View)데이터 처리(Model), 그리고 이들 상호간의 흐름을 제어(Controller)하는 모듈을 분리하는 것이다.

  • MVC 패턴 구현은 패턴에서 요구하는 규칙에 따라 개발자가 직접 구조를 설계할 수도 있고, 스프링3 @MVC와 같은 검증된 오픈소스 프레임워크를 사용할 수도 있다.(프레임워크란? 목적에 맞게 잘 설계된 구조와 미리 구현된 라이브러리가 포함된 소프트웨어 형태)

  • MVC 패턴은 웹 프로그램을 역할에 따라 기술 요소를 구분해서 구현하는 프로그래밍 모델로 이 후 웹 프로그램 개발의 기본 모델로 정착되었다.




4장 - [Servlet을 알아보자]

  • 한줄 설명이번 장은 Servlet이 무엇이고 어떻게 동작이 이루어지는지를 배우고, 간단한 계산기 예제를 통해 실습하는 경험을 가집니다.

  • 목표이번 장에서는 JSP실행시 컨테이너 내부에서 일어나는 과정을 이해합니다. 서블릿 코드를 이해에 중점을 두고, JSP와 Servlet의 관계를 이해합니다.


< Servlet이란? >

  • 정의: 서블릿은 자바 플랫폼에서 컴포넌트를 기반으로 하는 웹 애플리케이션을 개발할 때 사용하는 핵심 기술이다.

  • Servlet의 장점

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

    2. 운영체제나 하드웨어에 영향을 받지 않으므로, 한 번 개발된 애플리케이션은 다양한 서버 환경에서더 실행할 수 있다.

    3. 웹 애플리케이션에서 효율적인 자료 공유 방법을 제공한다.

    4. 다양한 오픈소스 라이브러리와 개발도구를 활용할 수 있다.

  • 웹 애플리케이션을 개발시 Servlet의 장점

    1. MVC 패턴을 쉽게 적용할 수 있고 컨테이너와 밀접한 서버 프로그램을 구현할 수 있다.

    2. MVC 패턴을 적용할 때 콘텐츠와 비즈니스 로직을 분리할 수 있으며 컨트롤러와 뷰가 역할을 분담함으로서, 웹 디자이너와 개발자 간에 작업을 원활하게 할 수 있다.

    3. 리스너 및 필터 서블릿 등 고급 프로그래밍 기법을 통해 더욱 효과적인 웹 애플리케이션을 설계할 수 있다.

< 서블릿과 서블릿 컨테이너 >

서블릿은 컨테이너라고 불리는 서버 소프트웨어에 의해 동작한다.서블릿 컨테이너는 웹서버와 마찬가지로 URL을 기반으로 한 요청에 따라 해당 서블릿을 실행한다.

쉽게 말해 JSP 나 Servlet을 사용하지 않는 웹프로그램 개발에는 웹 서버만 있으면 되지만, JSP나 서블릿으로 개발하려면 아파치 톰켓과 같은 서블릿 컨테이너가 필요하다.( 서블릿 컨테이너 = 아피치 톰켓 )

< 서블릿 구조와 API >

모든 서블릿은 javax.servlet.Servlet 인터페이스를 구현해야 한다. 하지만 개발자가 직접 Servlet 인터페이스를 구현하는 것은 아니고 일반적으로 미리 정의된 javax.servlet.GenericServlet javax.servlet.http.HttpServlet 클래스 중 하나를 상속해서 구현한다.

HttpServlet은 GenericServlet 의 하위 클래스로서 HTTP 처리와 관련된 부가 기능이 추가된 구조이다.

[ javax.servlet.Servlet(인터페이스) ◀◀ GenericServlet(클래스) ◀◀ HttpServlet(클래스) ]

클라이언트의 요청에 딸라 서블릿 컨테이너는 service() 메서드를 호출하고, service() 메서드는 요청이 GET 인지 POST인지를 구분하여 각각 doGet(), doPost() 메서드를 호출한다.

service() 메서드는 컨테이너가 자동으로 호출하므로 개발자가 구현해야 할 부분은 doGet(), doPost()메서드이다.

< 서블릿 생명주기 >

  1. 클라이언트가 웹 브라우저에 URL을 입력하면 해당하는 HTTP Request를 해당하는 서버의 Servlet Container에 보낸다.

  1. Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다.

  1. 클라이언트가 요청한 URL을 DD(배포서술자, Deplyment Descriptor)를 참조해서 분석하여 어느 서블릿에 대한 요청인지 찾는다.

  1. Servlet Container는 service() 메소드를 호출하며, POST, GET여부에 따라 doGet() 또는 doPost()가 호출된다.

  1. doGet() 또는 doPost() 메소드는 동적인 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보낸다.

  1. 응답이 완료되면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.

이벤트생명주기 메서드실행
서블릿 초기화init()초기에 한번만 실행
요청/ 응답

service()
doGet() doPost()

스레드를 통해 동시에 실행된다.
서블릿 종료destroy()종료할 때 한번만 실행된다.


'Back_end > JSP || Servlet' 카테고리의 다른 글

[디자인 패턴] DAO/DO 패턴  (0) 2018.09.09
[ JSP ] 2. 쿠키와 세션  (0) 2018.07.21
[ JSP ] 1. Action tag 종류  (0) 2018.07.21