마트철수

[TIL_2] KB 부트캠프: 컴포넌트 백엔드 본문

KB IT's Your Life/KB 기자단

[TIL_2] KB 부트캠프: 컴포넌트 백엔드

마트스 2024. 8. 4. 09:54

 

[TIL_2] KB 부트캠프: 컴포넌트 백엔드

 

 

안녕하세요,

 

'Today I Learned' 2주차에서는

컴포넌트 백엔드에 대해

작성해보고자 합니다.

 

JSP와 Servlet의 개념에 집중하여 작성하였으니,

좀 더 세부적인 내용은 가장 하단의 타임라인을 참고해주세요!

 


목차

  1. 백엔드 그리고 컴포넌트
  2. 웹 애플리케이션의 이해
  3. JSP와 Servlet의 역할

현재 KB IT's Your Life에서 다루는 내용을 기반으로 작성하였으며,

하단엔 '~다' 체를 사용하였습니다.

#KB부트캠프 #KB코딩 #KB코딩테스트

 


0. 들어가기 앞서

왜 JSP, Servlet를 배우는가?

  • JSP와 Servlet은 자바 기반의 웹 애플리케이션 개발에 있어 기본적인 기술입니다.
  • 이서버 사이드 프로그래밍의 기초이면서, 웹 애플리케이션의 동적 콘텐츠 생성과 클라이언트 요청 처리를 담당하기 때문에 서버 측 프로그래밍에 들어가는 데 중요한 개념이다.

Spring의 역할

  • JSP와 Servlet의 불편함을 이해하고 나면, Spring Framework가 이러한 문제를 어떻게 해결하는지 알 수 있다.
    • 간결한 코드: 복잡한 설정을 줄이고, 코드의 가독성과 유지 보수성을 향상
    • 자동화된 처리: Spring은 의존성 주입(DI)과 같은 자동화된 기능을 제공하여, 객체 생성과 관리를 쉽게 함
    • 통합된 프레임워크: Spring은 웹 애플리케이션의 다양한 측면을 통합적으로 관리할 수 있는 기능을 제공하여, JSP와 Servlet의 단점을 보완

 

JSP와 Servlet을 공부하는 이유에 대해 고민할 필요가 있습니다.

 

1. 백엔드 그리고 컴포넌트

백엔드

  • 웹 애플리케이션의 서버
  • 클라이언트와 서버 간의 데이터 처리와 비즈니스 로직을 담당

백엔드의 주요 구성 요소

  • 서버: 웹 애플리케이션을 호스팅하고 클라이언트의 요청을 처리하는 서버
    예) Apache Tomcat, Jetty 등

  • 응용 프로그램 서버: 비즈니스 로직을 처리하고, 클라이언트 요청을 처리하는 서버
    예) Spring, Node.js, Django 등

  • 데이터베이스: 애플리케이션에서 데이터를 저장하고 관리하는 시스템
    예) MySQL, PostgreSQL, MongoDB 등 다양한 데이터베이스

  • API (Application Programming Interface): 클라이언트와 서버 간의 데이터 전송과 기능 호출을 정의하는 인터페이스
    예) RESTful API, GraphQL 등

  • 서블릿: Java 기반의 서버 측 기술로, HTTP 요청을 처리하고 응답 생성
    웹 서버와 애플리케이션 서버에서 실행된다.

  • JSP (JavaServer Pages): HTML 내에 Java 코드를 삽입하여 동적인 웹 페이지 생성
    서블릿으로 변환되어 실행된다.

  자바 → JSP → Spring

 

2. 웹 애플리케이션

  • 웹 브라우저와 서버 간의 상호작용을 통해 작동하는 소프트웨어
    • 클라이언트는 HTTP 요청을 통해 웹 서버에 데이터를 요청
      • 서버는 이를 처리하여 응답 반환
    • 웹 애플리케이션은 HTML, CSS, JavaScript를 활용해 사용자 인터페이스 구성
      • JSP나 Servlet 같은 서버 측 기술을 통해 동적 콘텐츠 생성

웹 애플리케이션(WAS)

 

★ 웹 어플리케이션 처리 방식
여러 명의 사용자가 동일한 페이지를 요청하여 같은 어플리케이션 프로그램을 처리할 때,
1개의 프로세스를 할당하고, 다른 사용자의 요청을 Thread 방식으로 처리한다.

  웹 서버와 WAS의 관계
: 웹 서버는 주로 정적 콘텐츠를 처리하고, WAS는 동적 콘텐츠를 생성한다. 실제로 많은 시스템에서는 웹 서버와 WAS를 함께 사용하여 웹 서버가 정적 콘텐츠를 처리하고, 동적 콘텐츠는 WAS에서 처리하도록 구성되어 있다.

 

3. JSP와 Servlet

JSP과 Servlet (출처: JSP)

JSP (Java Server Pages)

  • 개념:
    • JSP는 HTML 코드에 Java 코드를 삽입하여 웹 페이지를 동적으로 생성하는 기술
    • JSP 파일은 서버에서 실행될 때 서블릿으로 변환되어 처리
    • 이 방식은 웹 페이지 디자인과 Java 코드의 결합을 가능하게 한다.
🤓 쉽게 말하자면, HTML 코딩에 어려움이 있어, HTML 안에 JAVA 코드를 삽입!
Servlet의 단점을 보완한 포장된 Servlet이라고 할 수 있다.
  • 동작 흐름:
    1. JSP 요청: 클라이언트가 JSP 페이지 요청
    2. 서블릿으로 변환: JSP 파일이 서블릿으로 변환
    3. 서블릿 실행: 변환된 서블릿이 실행되어 HTML과 데이터를 생성
    4. 응답 전송: 생성된 HTML이 클라이언트에 전송

  • 자바 개발 환경:
    • 자바 개발 환경 : JDK
      JSP는 HTML 코드 내에 자바 코드를 삽입하여 동적 웹 페이지를 생성하는 기술로, 자바 코드를 실행하기 위해 JDK의 설치가 필수임

    • 웹서버 : Tomcat
      웹 서버는 웹 애플리케이션을 실행하고 클라이언트의 요청에 응답하기 위한 소프트웨어입니다. 특히 JSP를 실행하기 위해서는 웹 컨테이너가 필요
      # Apache Tomcat은 오픈소스 소프트웨어로 무료로 제공중임

    • 통합개발환경 (IDE) : Eclipse
      자바 개발에 널리 사용되는 IDE로, JSP 코드를 작성하고, 이를 컴파일하여 오류를 검사하며, 결과를 실시간으로 확인할 수 있음
  • JSP Scripting Elements:
    • 스크립트릿 (<% %>): 서버에서 실행되는 Java 코드 삽입
    • 선언 (<%! %>): JSP 페이지에 선언적인 변수나 메서드 정의
    • 표현식 (<%= %>): 클라이언트에게 출력할 값 삽입
    • 주석 (<%-- --%>): JSP 페이지에서만 사용되는 주석 추가
  • JSP 지시자 (Directives):
    • page: JSP 페이지의 설정 정의 (예: 문자 인코딩, 세션 사용 여부).
    • include: 다른 JSP 파일을 포함시켜 재사용 가능
    • taglib: JSP 태그 라이브러리 정의
  • 기본 객체:
    • request: 클라이언트의 요청 정보 포함
    • response: 서버의 응답 처리
    • session: 클라이언트와의 세션 정보 유지
    • application: 웹 애플리케이션의 컨텍스트 정보 제공
    • out: 클라이언트에게 출력할 데이터 작성

 

JSP 모델2 (출처: 위키백과)

Servlet

  • 개념:
    • Servlet은 Java로 작성된 서버 사이드 프로그램으로, 클라이언트의 요청을 처리하고 동적인 웹 페이지를 생성
    • JSP와 달리 HTML을 직접 생성하고 응답하는 역할
    • 주로 비즈니스 로직을 처리하며, 데이터베이스 연동, 계산 등의 작업을 수행
쉽게 말하자면, Web과 Java가 소통할 수 있게 해주는 기술!
Tomcat 위에서 동작하는 JAVA 프로그램
  • 동작 흐름:

    1. 클라이언트 요청: 웹 브라우저가 서블릿에 HTTP 요청을 보낸다.
    2. 서블릿 객체 생성: 서블릿 컨테이너가 서블릿 객체를 한 번만 생성한다.
    3. 초기화: init() 메서드가 호출되어 서블릿을 초기화한다.
    4. 요청 처리: doGet() 또는 doPost() 메서드를 사용하여 요청을 처리한다.
    5. 응답 전송: 처리 결과를 클라이언트에 전송한다.
    6. 종료: 서블릿 객체가 더 이상 필요 없을 때 destroy() 메서드가 호출되어1 종료된다.

 

JSP 동작흐름 (출처: 위키피디아)

  • 주요 메서드:
    • init(): 서블릿 초기화 시 호출
    • doGet(HttpServletRequest req, HttpServletResponse res): GET 요청 처리
    • doPost(HttpServletRequest req, HttpServletResponse res): POST 요청 처리
    • service(HttpServletRequest req, HttpServletResponse res): 요청을 처리하기 위해 doGet()이나 doPost()로 분기
    • destroy(): 서블릿 종료 시 호출
  • 파라미터 처리:

    GET: 요청 URL의 쿼리 문자열로 데이터 전송, URL에 노출되며 데이터 크기에 제한이 있습니다.
    POST: 요청 본문으로 데이터 전송, 데이터 크기 제한이 없으며 URL에 노출되지 않습니다.

 

JSP/서블릿 컨테이너

  •  
🤓 서블릿은 비즈니스 로직과 데이터 처리를 담당하고,
JSP는 프레젠테이션과 사용자 인터페이스를 담당하여 서로 보완적으로 사용된다.

 

5. 컴포넌트 백엔드 교육 타임라인 정리

이번 TIL에서는 컴포넌트 백엔드 교육만

핵심 내용만을 축약해 보았습니다.

 

Servlet, JSP,JSTL 기반

서버 프로그래밍입니다.

 

다음주부터는 Spring Framework를 활용한

애플리케이션 개발에 대한 정보로 찾아오겠습니다!

 

👩‍💻타임라인

 

1일차. 웹 애플리케이션 프로젝트 + JSP

2024.07.25 - [KB IT's Your Life/교육] - [055] 웹 애플리케이션 프로젝트 + JSP

 

2일차: JSP 그리고 HTML5 Form 태그화 서블릿

2024.07.29 - [KB IT's Your Life/교육] - [057] JSP 그리고 HTML5 Form 태그화 서블릿

 

3일차: 세션, 쿠키, 포워딩

2024.07.30 - [KB IT's Your Life/교육] - [058] 세션, 쿠키, 포워딩

 

4일차: EL과 JSTL

2024.07.31 - [KB IT's Your Life/교육] - [059] EL과 JSTL

 

5일차: FrontController 그리고 Spring 시작

2024.08.01 - [KB IT's Your Life/교육] - [060] FrontController 그리고 Spring 시작

 

 


 

 

KB IT's Your Life 부트캠프에서는 5일 동안

백엔드 개발의 기초인 JSP와 Servlet을 깊게 공부할 기회가 주어집니다.

Spring Framework를 배우기 전, JSP와 Servlet의 이론과 실습을 완벽하게 마무리하면,

Spring의 역할과 기능을 이해하는 데 큰 도움이 될 것입니다.

 

이 과정에서는 웹 애플리케이션의 기초를 다지면서,

서버 사이드의 동적 페이지 생성과 요청 처리 방식에 대한 깊은 이해를 쌓을 수 있습니다.

이 과정을 통해 얻은 경험은 Spring의 고급 기능과 개념을 보다 쉽게 이해하고!

효과적인 웹 애플리케이션 개발에 큰 도움이 될 것이라 생각하기에,

Spring 시작 전 기자단의 과제가 오히려 좋은 기회가 되었다고 생각합니다.

 


 

📒TIL을 마무리하며..

 

2주차 TIL을 작성하면서,

JSP와 Servlet의 개념에 대해 약간의 혼동이 있었던 부분을 다시 한 번 복습하였습니다.

.
특강에서 다룬 쿠키와 세션에 대한 개념

매일 작성한 TIL에서 자세히 확인하실 수 있습니다.

궁금한 점이나 조언이 있으시면 언제든지 문의해 주시기 바랍니다.
감사합니다!

 

KB 부트캠프 기자단 국민은행 비전공자 KDT 교육