티스토리 뷰
▶▶ 웹 어플리케이션의 개요
▶ 웹 프로그래밍
– 웹 상에서 사용자와 기업 또는 사용자들간의 연결을 가능하게 하는 프로그래밍 언어.
– 웹 기반의 언어로 가장 먼저 개발된 HTML(HyperText Markup Language)은
텍스트 기반의 웹 문서 작성이나 정적인 데이터들을 처리하는 데에는 편하지만, 동적인 데이터를 처리할 수는 없음
– 이러한 한계점을 극복하기 위해 CGI, ASP, PHP, JSP등의 기술이 개발됨.
▶ 웹 프로그래밍 언어
▸ CGI (Common Gateway Interface)
– 응용 프로그램과 웹 서버 사이의 정보를 주고받는 방식이나 규약들을 정해 놓은 것.
– 크게 보면 ASP, PHP, Perl, JSP등이 모두 CGI의 범주에 들어감.
– HTML방식만으로는 동적인 웹 페이지를 만들기 어렵기 때문에,
서버측에서 동적인 데이터를 처리, 클라이언트에 HTML문서로 전송해 줄 수 있는 응용 프로그램의 필요성으로 개발됨.
– 그러나 초기 CGI 기술과는 다르게 DBMS와의 간편한 연동, 객체 지향적인 특성, 편한 개발 환경 등
강력한 기능을 갖춘 ASP, PHP, JSP의 등장으로 현재의 웹 프로그래밍은 대부분 이를 이용한 것.
▸ JSP (Java Server Page)
– 초창기에 서버에서 실행할 수 있는 Java, 즉 서블릿(Servlet)이라는 동적 웹 구현 기술이 있었으나,
서블릿만으로 웹 프로젝트를 개발하자니 Java에 대한 지식요구, 인터페이스 구현에 너무 많은 비효율적인 코드 등의
이유로 개발자들이 쉽게 익히기 어려운 언어가 됨.
– 이에 서블릿과 함께 구동함으로써 서블릿의 기능을 그대로 사용할 수 있고,
자바 빈즈(JavaBeans), EJB같은 기술로 보다 강력한 객체지향적 지원이 가능한 JSP라는 기술이 개발됨.
– JSP는 JSTL을 지원하게 되면서 웹 프로그램의 가독성이 좋아지고, 유지 및 보수가 훨씬 쉬워지는 장점을 가지게 됨.
– 즉, JSP는 Java를 이용하여 동적인 웹 페이지를 만들 수 있음.
▶ 프로세스 (Process) & 스레드 (Thread)
▸ 프로세스 (Process)
– 실행중인 프로그램을 나타내는 말이며 태스크(Task)라고도 함.
– 윈도우와 같이 멀티태스킹을 지원하는 OS에서는 동시에 실행되고 있는 여러개의 프로세스에 대하여
CPU와 메모리 자원을 안정되게 분배해 주어야 하며, 이러한 역할은 OS의 성능을 결정하는 데 있어 아주 중요한 요소.
▸ 스레드 (Thread)
– 자원관리에 있어 비효율적인 단점을 극복하고자 나온 기술이 스레드 기반의 서블릿.
– 하나의 프로세스 내에서 해당 프로세스가 할당받은 자원을 공유하며 실행되는 독립적인 작업단위.
– 프로세스의 자원을 참조할 뿐, 새로 할당받을 필요가 없기 때문에 프로세스를 생성하는 것보다 훨씬 빠른 생성 속도를 가짐.
ex ) 카톡으로 친구랑 톡을 주고받으며 친구 프로필이 업데이트가 되는걸 거의 동시에 볼 수 있음.
이는 각각의 기능이 스레드로 작용하기 때문.

▶ 웹 어플리케이션 구조 (3–Tier 구조)
– 웹 프로그래밍을 통해 구축된 일반적인 웹 어플리케이션(사이트)은 클라이언트 / 서버의 방식으로 구축됨.
– 클라이언트(사용자)가 웹브라우저를 통해 어떤 결과를 보여달라는 요청(Request)을 웹 서버에 보내게 되면,
서버는 그 요청을 받아들여 데이터를 처리한 후 결과를 웹브라우저의 응답(Response)형태로 클라이언트에게 보내고,
사용자는 웹브라우저를 통해서 그 결과를 받아 보게 됨.

→ 클라이언트가 요청하면 Web서버 먼저 만나게 되고,
이 때 Web서버는 해당 데이터를 혼자 처리 가능한지 아니면 Was가 필요한지 판단함
→ 정적 데이터라면 Web서버에서 바로 응답하여 클라이언트엔게 돌려주게 되고,
동적 데이터라면 Was한테 정보를 요청하고 다시 받아서 클라이언트에게 응답함.
정적 데이터 |
동적 데이터 |
이미지, 동영상, HTML문서(홈페이지), CSS, JS등의 파일 데이터 |
데이터베이스에서 가져와 처리하는, 동적데이터 처리가 필요한 모든 데이터 (DB작업) |

✓ Web서버부터 Was서버까지를 통칭 '서버' 라고 하며, 현재 우리가 배우는 범위에 해당.
▶▶ JSP와 Servlet
▶ JSP의 개요
– 브라우저는 기본적으로 HTML형식의 문서만을 표시할 수 있기에 동적인 웹페이지,
즉 사용자의 요청에 맞는 결과를 동적으로 표시해주는 웹 페이지를 웹 서버측에서 사용자에게 전송해 주기 위해,
요청의 처리결과에 따라 자동으로 응답을 생성할 수 있는 역할을 하는 프로그램이 필요함.
– 클라이언트가 JSP페이지 요청을 하면 JSP페이지 코딩 내용이 HTML페이지 형태로 변환되고,
HTML형태로 변환된 내용이 최종적으로 브라우저에서 해석되어 사용자에게 보여지는 구조.
ex ) 현재 시각을 표시해주는 웹 페이지 → 현재 시간이 계속 바뀌어 나타남.

▶ Servlet의 개요
– 웹 서버측에서 사용자의 요구에 따라,
자동으로 생성된 HTML형식의 페이지를 생산하여 전송해 줄 수 있는 여러 기술 중 Java 진영의 기술이 바로 Servlet.
– 단적으로 말하자면 웹 서버 상에서 실행되는 Java의 클래스 파일이라 할 수 있음.
– 다만 일반적인 Java 클래스와 비교해 볼 때,
서블릿은 반드시 javax.servlet.Servlet 인터페이스를 구현해서 작성해야 하며,
입력과 출력을 HTTP 프로토콜의 요청과 응답의 형태로 다룬다는 점이 다름.
– 클라이언트가 요청을 보내오면 웹 서버는 그 요청에 해당하는 서블릿 클래스 파일을 실행,
서블릿 클래스에서는 요청을 처리해 결과물을 만들어 내면 웹 서버가 그 페이지를 클라이언트에 전송함.
– 'Server Side Applet' 즉, 서버 사이드의 Java 응용 프로그램이란 뜻.

▶ HTTP 프로토콜
– 인터넷 통신 프로토콜에는 TCP/IP, FTP, SMTP, HTTP 등 수없이 많은 종류의 프로토콜이 있음.
– 실제 사용자와 연결된 최상위 계층의 프로토콜로,
가장 대표적인 것이 웹 브라우저의 통신에 관한 프로토콜 HTTP.
▸ 구조
– 요청(Request)과 응답(Response)의 형태로 이루어져 있음.

→ 각 HTTP 메시지는 지금 작성된 메시지가 요청인지, 응답인지 나타내고,
요청 URL 등 / 기본적인 정보가 담겨있는 시작 라인,
수행 날짜 / 서버 정보 / 브라우저 버전 등 / 부가적인 정보를 담는 헤더(Header),
요청이나 응답에 필요한 내용을 담고 있는 본문(Body)으로 구성됨.
▸ 요청(Request)메시지
– 기본적으로 HTTP 메서드와 접근할 주소(URL) 정보, 서버에 전달할 데이터인 form 파라미터로 구성됨.
– HTTP 메서드는 클라이언트가 웹 서버가 해야 할 행동을 정해주는 정보라 할 수 있으며, GET방식과 POST방식이 있음.
1 ) GET
– 전송할 파라미터 값들을 시작 라인의 URL정보에 붙여서 같이 전송함.
– 파라미터의 길이가 256바이트를 넘을 수 없음.
– 본문(Body)이 필요 없으므로 전송 속도가 POST방식에 비해 빠름.
– 데이터가 적을 경우 유용함.
2 ) POST
– 파라미터 값들을 요청 메시지의 본문에 담아 전송하므로 길이의 제약이 없음
– GET방식의 경우 파라미터가 URL뒤에 붙어 전송되므로 사용자가 확인할 수 있는데 비해,
POST방식은 파라미터를 사용자가 확인할 수 없으므로 보안상 더 유용한 전송 방식.
▸ 응답(Response)메시지
– 요청에 대한 서벗의 처리 성공 여부를 표시하는 상태 코드(HTTP 404, 500 등) 번호와
웹 서버가 응답해주는 콘텐츠의 타입 정보(텍스트/HTML, 이미지 등), 콘텐츠의 내용으로 구성됨.
– 서블릿 클래스가 요청을 처리해 생성하는 페이지는, 웹 서버에서 응답 메시지의 형태로 작성되어 브라우저에 전송됨.
▶ 웹 컨테이너 (Web Container)
– JSP와 서블릿을 사용한 웹 서버는 크게 URL 주소의 해석을 담당하는 HTTP서버와
서블릿 클래스, 또는 JSP파일의 실행 요청을 처리해주는 웹 컨테이너로 구성됨.
1 ) HTTP서버는 단순히 어떤 주소(URL)요청이 들어왔을 경우,
그 주소에 미리 매핑되어 있는 콘텐츠(HTML파일이나 이미지)를
사용자의 브라우저에 응답 형태로 전송하는 역할을 함.
2 ) 이 때, 요청된 URL이 서블릿 클래스 또는 JSP파일일 경우,
HTTP서버는 이를 웹 컨테이너에서 처리하도록 클라이언트의 요청을 넘겨줌.
3 ) 웹 컨테이너에서는 요청된 URL에 맞는 서블릿 클래스 또는 JSP파일을 실행하여 그 결과를 HTTP서버에 넘겨주고,
이는 응답 메시지의 형태로 사용자의 브라우저에 전송됨.
→ 즉, 웹 컨테이너란, 웹 서버 내부에서 서블릿 클래스 또는 JSP파일을 실행하기 위한 실행 환경을 제공하는 역할.
ex ) Tomcat, WebLogic, Resin
▶ 서블릿의 동작 원리
1. 사용자의 URL 요청
2. request, reponse 객체 생성
3. 서블릿 인스턴스와 스레드 생성
4. service() 메서드 호출과 서블릿 클래스 실행
5. 응답과 스레드의 소멸

🐾 참조 도서 및 사이트 🐾
— JSP 2.3 & Servlet 3.1
'JSP' 카테고리의 다른 글
액션 태그 (forward / include / 템플릿 페이지 작성) (0) | 2023.02.23 |
---|---|
내장 객체 (영역 객체(Scope) / 속성(Attribute)) (0) | 2023.02.23 |
내장 객체 (form 태그 사용으로 입력 & 출력하기) (0) | 2023.02.23 |
내장 객체 (javax.servlet 패키지 / java.lang 패키지) (0) | 2023.02.22 |
JSP 기본 요소 (주석 / 지시어(Directive) / 스크립트 요소) (0) | 2023.02.21 |
- Total
- Today
- Yesterday
- 숫자형
- Method
- 문자형
- 다형성
- 데이터타입
- 논리형
- 업캐스팅
- github
- 출력문
- 로컬저장소
- Object
- 인자
- javascript
- gitbash
- 오버라이딩
- Java
- Dao
- 원격저장소
- 매개변수
- 내장객체
- null
- mysql
- JSTL
- model2
- jsp
- DB
- 주석문
- Git
- 단일행함수
- 제어문
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |