본문 바로가기

2018 공부/Studies

[JSP] JSP 웹 프로그래밍의 이해

출처 : JSP 웹프로그래밍 활용 입문 + 활용 (앤써북)


01. 웹과 동적 페이지

#웹 : Hypertext라는 기능에 의해 인터넷 상에 존재하는 온갖 종류의 정보를 통일된 방법으로 찾아볼 수 있게 하는 광역 정보 서비스 및 소프트웨어 / 그물의 형태를 띠고 있는 네트워크

#브라우저 : 웹 서버에 있는 하이퍼텍스트를 볼 수 있게 하는 응용 소프트웨어 (인터넷 익스플로러, 모자이크 등)

>클라이언트: 네트워크에서 정보를 요구하는 쪽 (사용자의 브라우저)

>서버: 요구받은 정보를 제공하는 쪽 

>웹 프로그래밍의 대상: HTML 태그로 작성되어진 웹 페이지

1-1. 웹의 동작

요청과 응답으로 이루어진다. 

쉽게 말해, 클라이언트가 웹 서버에 정보를 요구하는 요청을 보내면 웹 서버는 요청에 맞게끔 처리를 한 후 클라이언트에게 요청결과를 응답으로 보내게 된다. 

#요청: 클라이언트가 서버로 정보를 요구하기 위해 보내는 메세지 (GET/POST 방식)

#응답: HTTP에서 요구된 메시지에 대한 응답, HTML, 이미지 등 

1-2. 정적 페이지와 동적 페이지

#동적 페이지: 동적인 정보(일기예보 등)를 웹 페이지에 포함시켜 자동으로 생성되는 웹 페이지

#정적 페이지: 서버에 미리 저장된 정보가 그대로 전달되는 웹 페이지

>웹 서버는 클라이언트로부터 요청을 받은 뒤 요청을 수행할 수 있는 "웹 서버 프로그램"으로 요청을 재전송한다.

웹 서버 프로그램은 요청결과를 만들고 이를 받은 웹 서버가 클라이언트에게 결과를 응답하는 방식을 가지고 있다.

(1) CGI (Common Gateway Interface)

: 동적 웹 페이지를 구현하기 위한 기술 

: 웹 서버와 웹 서버 프로그램사이에서 정보를 주고 받는데 사용되는 인터페이스

(2) 확장 CGI

:기존의 CGI 방식의 단점들을 보완한 기술

-ASP (Active Server Page) : Microsoft사에서 만들어진 확장 CGI, 특정 웹 서버와 OS에서만 동작한다

-PHP (Personal Homepage Tools):  C언어와 유사하여 접근성이 좋음, 적은 명령어들로 프로그래밍 가능

-Servelt (Server + Applet) : Sun사에서 만들어진 확장 CGI이며 Java 코드 안에 HTML 태그를 작성한다

-JSP(Java Server Page): Java언어를 기반으로 하며 HTML 태그 안에 java코드가 들어가 있는 형태

 용어

설명 

CGI 

-전통적인 동적 컨텐츠 처리 기술

-CGI 규약만 지키면 어떤 언어라도 가능하다

-프로세스 기반 프로그램이므로 시스템의 효율성 측면에서 시스템에 많은 부하를 가져온다 

ASP

-비쥬얼 베이직 언어의 문법 중 일부를 사용한다

-Active X 컴포넌트로 접근 가능

-IIS 서버 사용 (윈도우 운영체제) 

PHP 

-C언어와 문법 체계가 비슷하다

-리눅스처럼 소스가 공개되어 있다

-윈도우, 유닉스 OS, 아파치, IIS 서버 지원 

Servlet/JSP 

-Java 언어 기반

-플랫폼에 독립적이며 컴파일된 파일을 재컴파일 없이 즉시 이식 가능

-사용자 정의 태그로 기능 확장 가능 

>서버 측 스크립트: 서버 측에 위치해서 실행되는 스크립트 언어

>클라이언트 측 스크립트 : 클라이언트의 웹 브라우저에서 실행되는 언어

>이식: 특정 시스템에서 개발한 소프트웨어를 다른 시스템에서 설치해서 동작하게 하는 작업 

(자바의 경우 JVM만 설치되어 있으면 윈도우, 리눅스 등 어디에서나 잘 작동한다)


02. JSP 란?

#JSP: J2EE(Java 2 Enterprise Edition) API의 한 부분으로 웹 어플리케이션을 개발하기 위한 웹 프로그래밍 언어

: 동적인 페이지를 생성하기 위한 서버 측 스크립트

#간단한 JSP 프로그래밍 소스 (책 참고)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page import="java.util.*,java.text.*" %>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="EUC-KR">
        <title> JSP Example</title>
    </head>
        
    <body>
        <%
        Date date=new Date();
        SimpleDateFormat simpleDate=new SimpleDateFormat("yyyy-MM-dd");
        String strdate = simpleDate.format(date);
        %>
        오늘 날짜는 <%=strdate %>입니다.
    </body>
</html>
cs


# 결과

<%~ %>, <%= ~%> 와 같은 부분이 웹 페이지에서 동적인 부분을 처리하는 영역이다. 

해당 기호 부분이 서버에서 실행이 되어 요청 결과를 생성한 뒤, 해당 페이지에 결과가 나타난다.

즉, 위와 같은 코드가 서버에서 실행이 되고 클라이언트의 브라우저로는 일반적인 웹 페이지(결과)의 형태만 보이게 된다.


03. JSP의 특징

(1) JSP는 동적 웹 페이지를 생성하기 위한 웹 프로그래밍 언어

: JSP는 HTML태그 안에 Java 코드를 작성하여 동적인 페이지를 구축할 수 있도록 한다. 클라이언트는 JSP 코드를 보는 게 아니라 순수한 HTML 코드만을 볼 수 있도록 웹 서버 프로그램은 동작한다.

(2) JSP는 컴포넌트 기반에서 개발할 수 있는 언어

: 자바빈즈를 통해 컴포넌트 기반으로 개발할 수 있고, 컴포넌트 기반의 개발을 통해 효율적인 개발 작업이 가능하다.

개발 업무의 분업화와 재활용이 가능한 코드를 작성할 수 있게 된다.


04. Servlet 

#Servlet: 확장 CGI방식이며 Java코드 안에 html 태그가 작성된 형식을 가진다. 하나의 자바 프로그램이라 java 확장자를 가진다.

정적으로 생성돼야할 HTML 부분과 동적으로 생성돼야할 JSP 코드가 한 프로그램 안에 섞여 있어 업무 분업에 어려움이 있고, 자바 언어에 대한 전문성이 요구되므로 개발이 어렵다는 단점이 있다.


하나의 JSP 페이지는 하나의 서블릿으로 변환이 되고, 컴파일 되어 실행된다.

서블릿은 자바 프로그램이므로 컴파일 된 후 실행이 가능해진다.

>그렇기 때문에 JSP 만으로도 동적인 페이지를 구축할 수 있고, 서블릿만으로도 동적인 페이지를 작성할 수 있다.