본문 바로가기
Web/JSP

JSP(1) - 웹프로그래밍 소개

by SeleniumBindingProtein 2022. 1. 28.
728x90
반응형

1. Internet & Web
    1) 인터넷
        - 연결시킨 네트워크을 의미
        - 하드웨어적인 개념
        - ARPANET
    2) 웹
        - WWW의 약자
        - 인터넷에서 동작하는 서비스 중 하나
        - 소프트웨어적인 개념
        - Hyper Link를 이용하여 문서 사이를 이동할수 있도록 해주는 서비스.
        - 팀 버너스 리
        - 웹 서비스에 이용되는 프로토콜 : HTTP 
            - HTML 문서를 연결하여 콘텐츠를 제공함.
        - 목적 :  흩어져 있는 정보를 손쉽게 정리하고 공유하기 위함.   

2. Web의 동작 원리
    1) 기본적으로 클라이언트-서버 구조를 지님
    2) client-server 간 통신을 위해 HTTP 이용   
        - 하이터 텍스트(Hyper-Text)를 전송하기 위한 프로토콜(통신을 위해 정의된 규약)
    3) 클라이언트 : 주로 웹 브라우저 
        - URL(Uniform Resource Locator) : 웹 페이지 주소
            - 프로토콜 :// 서버 주소 : 포트 번호 / 파일 경로 
       서버 : 웹 서버 

3. 웹 프로그래밍 


    1) 프런트엔드 : 클라이언트 중심의 프로그래밍(HTML/CSS/JS) 영역       
    2) 백엔드 : 서버를 구성하며 서비스를 제공하기 위한 서버쪽 프로그래밍 영역

4. 백엔드 중심 개발


    1) 전통적인 웹 개발 모델
    2) 서버에서 모든 것을 담당하는 방식임.
    3) 특히 자바 서블릿/JSP가 가장 인기 있는 백엔드 개발 기술임.
    4) 장점
        - 서비스 연동에 필요한 다양한 서버 환경에 대응할수 있음.
        - 검색 엔진 최적화에 유리함
        - 기술이 안정적이고 검증됨
        - 기존에 개발된 시스템이 많고 레거시 시스템은 오랫동안 유지됨
    5) 단점
        - 서버에 화면 갱신의 과도한 요청이 발생시 문제가 될수 있음.
        - 기존의 대규모로 구축된 모놀리틱 아키텍쳐 방식으로 서버가 적용이 됨
            => MSA(Micro Service Architecture) 방식이 확산되고 있음

5. 프런트엔드 중심 개발


    1) 클라이언트에서 HTML을 가지고 있거나, 
       서버로부터 화면 구성에 필요한 데이터만 자바스크립트(Nodejs)로 받아와
       화면을 조합해 보여줌
    2) 이러한 방식을 CSR(Client Side Rendering)이라고도 함.
    3) 장점
        - 필요한 부분의 데이터만 갱신이 가능하기 때문에 
          서버로부터 매번 갱신된 전체 화면을 받아올 필요가 없음.
        - 실시간 데이터 갱신이 자유로움
        - SPA(Single Page App), PWA(Progressive Web App)등의 구현에 적용할수 있음.
        - React.js, Vue.js 등 다양한 프레임워크을 사용할수 있음.
    4) 단점
        - 프런트엔드 중심 개발이라 하더라도 데이터 제공을 위한 서버는 필요함.
        - 백엔드 작업은 당연히 존재함.
        - SSR(Server Side Rendering)을 접목해야함.

6. 웹 개발 트랜드


    1) 스프링 프레임워크이 대세.
        - 국내에서는 자바 기반 대표적인 백엔드 개발 방식 자리잡음
        - 전자정부 프레임워크 역시 스프링 기반임.
        - 스프링 부트(Spring Boot)의 경우 JSP 사용에 제약이 있음.
    2) 전통적인 모놀리식 아키텍쳐 중심 서버 운영 
        ==> 소규모 분산 운영 방식인 MSA로 전환되기 시작함.          
    3) Nodejs, 파이썬을 이용한 서버 프로그램 개발이 늘어나고 있음.
    4) REST API 형태의 개발이 주를 이루게 되면서 백엔드에서 화면을 다루어야 하는 경우는
       점점 줄어들고 있음.
    5) on-Premise : 서버를 직접 운영하는 방식 
        ==> Serverless  :  서버 작업을 서버내부가 아닌 클라우드 서비스로 처리 

7. 동적 웹 프로그래밍 


    1) 정적 웹 프로그래밍 
        - 사용자의 입력 없이 텍스트만 보여주는 HTML 페이지 작성
    2) 동적 웹 프로그래밍
        - 사용자의 입력에 따라 제공되는 페이지가 달라지도록 HTML을 동적으로
          생성하는 작업을 포함
        - 1993년 CGI (Common Gateway Interface)로부터 시작.
        - CGI 문제 보안
            - ASP (Active Server Page) : IIS ==> 특정 제품 의존적임.
            - 서블릿 --> JSP <== Java 언어 사용, 플랫폼 독립적임. 오픈 소스.
            - PHP 

8. 컨테이너(Container)
    1) html이 아닌 다른 형식의 파일이 URL에 포함되었을 때 처리하기 위한 모듈.   
    2) JSP 컨테이너 (jsp-api.jar)
        - JSP 형식을 처리하는 모듈          
            - JSP 파일의 변환과 컴파일 
            - URL 해석을 통한 JSP 파일 실행 및 입력 파라미터 값 전달 
            - JSP 파일로부터 동적으로 생성된 HTML 코드를 브라우저로 전송.

9. JSP 프로그램 구동 
    1) 하나의 클라이언트와 2개의 서버가 필요
        - 브라우저 (HTML)
        - 웹 서버와 데이터베이스 서버 
            - 웹 서버 : JSP 컨테이너를 포함한 웹 서버가 필요. 
                - 톰캣 : 실제 톰캣의 내부 구현 또한 아파치 소스 코드를 기반으로 JSP 처리 부분을 추가한 형태.


            - DB 서버 : SQL(Structured Query Language) 형식의 명령어(쿼리) 필요.

10. JSP 특징
    1) 서블릿 기술의 확장임.
    2) 유지 관리가 용이함.
    3) 코드 길이 줄일수 있음.

11. 서블릿 (Servlet)
    1) Server + let (작은 프로그램)     
    2) Java 기반의 동적 웹 프로그래밍 솔류션 
    3) 서블릿을 기반으로 JSP가 개발
        - JSP는 내부적으로 서블릿으로 변환되어 실행됨.
        - JSP 동작 방식 이해를 위해서 서블릿 이해가 필수.           

728x90
반응형

댓글