ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. 웹 프로그래밍 소개
    개발자 수업/JSP 2021. 11. 22. 17:58

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

     


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

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

     

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        
    <!-- 
    	* 웹 브라우저에서 웹 애플리케이션 요청
    	http://localhost:8080/FirstJSP/hello.jsp
    	http://IP주소:포트번호/컨텍스트(context)이름/요청파일이름
    	
    	* 컨텍스트
    		1) 톰캣의 server.xml에 등록하는 웹 애플리케이션을 컨텍스트라고 함
    		2) 톰캣 입장에서 인식하는 한 개의 웹 애플리케이션임
    		3) 웹 애플리케이션 당 하나의 컨텍스트가 등록됨
    		4) 웹 애플리케이션 이름과 컨텍스트 이름이 같을 수도 있고 다를 수도 있음 (프로젝트 이름)
    		5) 컨텍스트 이름은 중복하면 안 됨
    		6) 웹 애플리케이션의 의미를 가장 잘 나타낼 수 있는 명사형으로 지정함
    		7) docBase : 컨텍스트에 대한 실제 웹 애플리케이션의 위치 경로
    		   path : 컨텍스트 이름. 브라우저에서 실제 웹 애플리케이션을 요청하는 이름
    		   reloadable : 실행 중 소스코드가 수정될 경우 바로 갱신할지 설정함
     -->    
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>hello</title>
    </head>
    <body>
    	<h1>안녕하세요 JSP 페이지입니다.</h1>
    </body>
    </html>

     

    <%@page import="java.util.Calendar"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>Insert title here</title>
    	<%-- 
    		<%  %> : 스크립트릿
    		<%= %> : 표현식 (expression), 값을 나타내고자 할 때
    				 끝에 ;을 붙이지 않음
    	 --%>
    	 
    	 <%
    	 	Calendar calendar = Calendar.getInstance();
    	 	int hour = calendar.get(Calendar.HOUR_OF_DAY);
    	 	int minute = calendar.get(Calendar.MINUTE);
    	 	int second = calendar.get(Calendar.SECOND);
    	 %>
    	 <h1>현재 시간 : <%=hour %>시 <%=minute %>분 <%=second %>초</h1>
    </head>
    <body>
    
    </body>
    </html>

     

    '개발자 수업 > JSP' 카테고리의 다른 글

    6. 회원정보 등록, 삭제하기  (0) 2021.11.27
    5. JDBC 연동과 관련객체  (0) 2021.11.27
    4. 서블릿 비즈니스 로직 추가  (0) 2021.11.25
    3. 서블릿  (0) 2021.11.24
    2. 웹 애플리케이션과 서블릿 이해  (0) 2021.11.24

    댓글