[공공 데이터 개발] 0516 서버

송경근·2023년 5월 16일
0
post-thumbnail

서블릿

웹페이지 만드는 프로그램

웹브라우저(웹기반) 프로그램

클라이언트 pc 기반 프로그램

cd로 개개인의 집에 사용하는 프로그램

클라이언트 서버 프로그램

개개인이 서버에 접근해 사용하는 프로그램
모두가 동일한 화면을 봄 정적
서버에서 변경사항이 있으면 점검해야함

웹 기반 프로그램

화면과 데이터 처리를 모두 서버에서 수행

클라이언트(사용자) :

사용자 pc에서 실행되면서 클라이언트로부터 데이터를 입력받는 기능. 그리고 서버에서 전송돈 데이터를 화면에 출력해주는 기능(데이터 송수신기능만 제공)

클라이언트 pc 기반 프로그램

환율 계산 프로그램이 있다고 생각해보자~
프로그램이 설치된 후에 파운드와 유로화 계산을 추가한다고 했을 때, 다시 모든 클라이언트 pc에 설치하거나, 업그레이드를 해야한다

클라이언트-서버 기반 프로그램

서버 :

모든 중요한 실제 기능 실행

pc기반 프로그램의 단점을 보완하기 위해 나옴
기능이 변경되어도 모두 서버에서 처리하므로 클라이언트 프로그램은 수정할 필요없음
중요한 기능은 서버에서 처리 - 보안에 우수
사용자에 관련된 화면기능이 바뀌면 클라이언트 프로그램도 수정해서 다시 설치해야함

웹 기반 프로그램

브라우저에서 웹페이지 요청
브라우저는 서버에서 전송된 html을 화면에 표시

하나의 프로젝트 안에 들어가는 내용들

분리되어 저장될 것임! 어디에? 서버에!

화면과 로직을 서버에서 모두 처리, 클라이언트는 접속만!
모든 기능이 서버에서 처리, 보안 측면에서도 매우 유리

웹 기반 프로그램이 인기있는 이유 ( 왜 웹기반 프로그램개발로 발전했을까 )

플랫폼 독립성 :

웹 기반 프로그램은 특정 운영체제나 플랫폼에 종속되지않음

쉬운 배포와 업데이트:

사용자가 소프트웨어를 설치할 필요가 없음 사용자는 항상 최신버전을 사용가능

다중 사용자 접근:

여러 사용자가 동시에 접속하여 데이터 공유, 협업 가능

업데이트와 버그 수정 용이 :

서버에서 실행되어 사용자들은 새로운 기능과 개선 사항을 빠르게 받아볼 수 있음

접근성과 편의성 :

지리적 제약이 없음! 이동중에도 엑세스가능
사용자 경험이 간소화되고 사용이 편리해짐

상호 운용성 :

다른 시스템과 api를 통해 다른 앱과 데이터를 공유하고 통합 가능 (상호운용성)

UX 개선 :

최신 웹기술과 디자인을 활용하여 풍부하고 직관적인 UI를 제공
AJAX, HTML5, CSS3등의 기술을 통해 반응형 웹 구축

웹 프로그래밍의 발전과정

정적 웹 프로그래밍

웹 서버에 파일을 저장해두고 브라우저에서 요청할 때 그대로 전달!
페이지가 변경되지않는한 고정된 웹페이지를 보게됨
화면의 디자인을 구성하거나 클라이언트의 이벤트를 처리
실시간 정보를 표시하는데에는 적합하지않음

구성 요소

고정된 화면이나 정보 표시에 사용
웹 서버 :
각 클라이언트에게 서비스를 제공하는 컴퓨터
클라이언트 :
서버로부터 서비스를 제공받는 사용자(USER)
HTTP 프로토콜 :
서비스를 제공하는 통신 규약을 의미
HTML :
WWW서비스를 제공하기 위한 표준 언어
태그 형식으로 된 언어(마크업랭귀지)
자바 스크립트:
HTML 웹 페이지에 여러가지 동적인 기능을 제공
CSS :
HTML 문서에서 서체나 색상, 정렬등 세부적인 페이지의 디자인 관련 기능

문제점

실시간으로 변하는 정보는 수작업으로 주기적으로 업데이트 해야함

동적 웹 프로그래밍

실시간 정보를 DB에 미리 저장해놓고 클라이언트 요청시 결과 전송
정적 웹 프로그래밍에서 관리자의 역할을 웹 애플리캐이션 서버(WAS)가 수행
클라이언트의 요청이 있을 때 마다 DB에 접근해 실시간정보를 클라이언트에게 제공
CGI : 동적방식으로 프로그램을 제공하는 기능, PERL등이 있다

WAS : 환율 조회 기능을 메모리에 업로드 해서 데이터 뷰에 연동 후 조회한 결과를 반환

CGI의 문제점

같은 기능을 수행하더라도 각 경우에 대해 처음부터 메모리에 로드해서 수행해야함
사용자가 늘며 메모리에 과부하 걸림!
JSP, ASP, PHP로 대체

JSP 프로그램

브라우저 요청시 스레드 방식으로 실행해 CGI보다 효율적으로 기능을 수행
다수의 사용자가 동시에 요청하는 웹 프로그램에 적합
스레드 방식 :
프로그램이 동시에 여러가지 작업을 처리할 수 있는 실행 모델
동기화 처리에 주의해야 하고 프로그래머가 직접 추가적인 동기화 기능을 구현해야함
재사용을 함으로 서버 메모리에 부하를 줄임

각각의 요청에 대한 기능을 메모리에 따로 로드하지않음 ( 재사용 )

JSP 동작의 특징

프로세스 방식이 아닌 스레드 방식으로 실행
클라이언트 요구를 처리하는 기능은 최초 한번만 메모리에 로드
클라이언트가 동일 기능을 요구하면 기존에 사용한 기능을 재사용
프로세스 방식으로 동작하는 것 보다 빠르게 수행가능
프로그램 실행에 가장 많이 시간이 걸리는 부분은 메모리에 로드하는 과정

%% 사담
STS - 동적 웹 개발을 도와주는 프로그램
이클립스 + STS 추가 설치할거야~
%%

웹 애플리케이션 이해하기

jsp의 구조에 대해 이해해보았다

톰캣같은 컨테이너에서 실행되는 웹 애플리케이션은 일정한 디렉토리 구조를 가져야한다

톰캣 9 버전 이상을 사용하려면 web.xml을 써야한다!

기존의 정적 웹 애플리케이션을 그대로 사용하면서 서블릿,jsp, 자바 클래스들을 추가하여 사용자에게 동적인 서비스를 제공하는 프로그램

서블릿 : 
	자바 언어를 사용해 웹 애플리케이션을 개발하는데 사용하는 서버파트의 컴포넌트(구성요소)
jar(Java Achive) 파일 :
	자바 언어로 작성된 애플리케이션, 라이브러리 또는 모듈을 하나의 파일로 묶어서 배포하는 압축 파일 형식
	자바 애플리케이션을 패키징하고 실행하는데 사용
	


js 윗 부분은 직접 생성이 필요함!
bin, conf, src 는 이클립스가 자동 생성해줌


컨텍스트 :
	톰켓의 server.xml에 등록하는 웹 애플리케이션
	톰캣 입장에서 인식하는 한 개의 웹 애플리케이션
	
특징
	웹 애플리케이션 하나당 하나의 컨텍스트 등록
	웹앱과 일므이 같을수도 다를수도 있음
	컨텍스트 이름은 중복 x
	웹 앱의 의미를 가장 잘 나타낼 수 있는 명사형으로 지정
	대소문자 구분
	server.xml에 등록

톰캣은 모든 설정 정보를 xml로 저장후 읽어와 실행

이클립스에서 웹 앱 실습하기!
profile
개발자가 되려는 학생입니다

0개의 댓글