일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- directx
- I/O장치
- 운영체제
- DirectX 12
- Direct12
- OS
- 락
- 스케줄링
- 컨디션 변수
- 영속성
- 그리디알고리즘
- codility
- 그리디 알고리즘
- 다이나믹 프로그래밍
- 알고리즘
- 파일시스템 구현
- 멀티쓰레드
- 자료구조
- 병행성 관련 오류
- 쓰레드
- DirectX12
- 타입 객체
- 멀티프로세서
- 백준
- 병행성
- 프로그래머스
- 동적계획법
- 다이나믹프로그래밍
- 렌더링 파이프라인
- 디자인패턴
- Today
- Total
기록공간
JSP(Java Server Page) 간단정리 본문
JSP(Java Server Page) ?
JSP는 웹 프로그램 작성 언어의 한 종류이다. JSP는 동적(Dynamic)인 웹 페이지를 비교적 간단히 만들 수 있는 방법을 제공하는 자바를 기반으로 하고 있는 스크립트 언어(Server Side Script)로 자바 엔터프라이즈 어플리케이션에서 UI(User Interface) 영역을 담당하고 있다.
JSP는 자바를 서버 환경에서 사용하는 스크립트 방식의 언어로 단일 스레드로 클라이언트의 요청에 대한 서비스를 제공한다. 프로세스를 생성하는 기존의 CGI(Common Gateway Interface)와는 달리 하나의 메모리를 공유하면서 서비스 되는 원리를 가지고 있다. 이런 작동 방식은 서버측 부하를 줄여주며, JSP 내부에는 보여주는 코드만 작성하고 직접 작업하는 부분은 자바 빈으로 구성하여 둘을 분리시킬 수 있다. 이는 서로 영향을 주지 않으면서 수정할 수 있는 장점을 취하며, 자바가 가지고 있는 장점인 재사용성을 높일 수 있게 된다.
클라이언트 <-----------------> 서버
HTML, CSS, JavaScript <-----------------> JSP(JAVA)
브라우저(IE, CR, FF 등) <-----------------> 웹서버(톰캣), 오라클
요청 <-----------------> 응답(HTML 웹 페이지)
JSP 실행 구조
-
웹 클라이언트에서 웹 서버에 웹 프로그램(페이지) 요청
-
웹 서버에서 웹 클라이언트가 요청한 JSP 프로그램(페이지) 다운로드
-
JSP 페이지에 대한 변환 실행 (※ 이 과정에서 일반 『.java』 인 파일로 변환된다. [서블릿] )
-
『.java』 인 파일로 변환된 Servlet 의 컴파일 및 실행
-
실행 결과로 동적 생성된 HTML Document 를 클라이언트 측에 응답
-
웹 클라이언트는 응답받은 HTML Document 를 브라우저에서 웹 페이지 형태로 출력
JSP 특징
-
최초 서블릿으로 컴파일 된 후에는 메모리에서 처리되기 때문에 많은 사용자 접속도 원할히 처리된다.
-
JSP 또한 다른 Servlet 간 데이터 공유가 용이하다.
-
자바를 기반으로 하고 있으므로 플랫폼에 독립적이다.
-
(자바)빈즈라는 자바 컴포넌트를 사용할 수 있다.
-
대규모 어플리케이션을 구현할 때 사용되는 EJB(Enterprise Java Bean) 기술과 완벽하게 호환된다.
-
사용자 정의 태그를 만들어 사용할 수 있으며 JSTL과 같은 태그 라이브러리를 이용할 수 있다.
-
HTTP와 같은 프로토콜에 따라 클라이언트의 요청을 처리하고 응답한다.
-
HTML, XML 등 웹 서비스와 관련된 문서를 생성하는 데 주로 사용된다.
-
JDBC(Java DataBase Connect) API를 사용하여 웹 어플리케이션에서 데이터베이스에 연결할 수 있다.
-
표현 언어, 표현식, 스크립트릿 등의 다양한 스크립트 요소와 액션 태그 등을 제공함으로써 더욱 쉬운 프로그래밍을 구현할 수 있다.
-
서블릿 컨테이너(ex. Tomcat)가 필요하다.
JSP 구성 요소
1. 디렉티브(지시어)
- 페이지에 대한 설정 정보 지정. 클래스 속성을 변경.
<%@ %>
* page
페이지에 대한 기본 정보 입력 (생성하는 문서 타입, 출력 버퍼 크기, 에러 페이지 등..).
현재 문서를 나타내는 객체 page 디렉티브는 JSP 페이지와 관련된 속성을 정의한다. 이 속성들은 웹 컨테이너에 정보를 제공한다. 한 페이지에 page 디렉티브는 한 번 이상 나올 수 있고 위치도 관계가 없다. 하지만 보통 페이지 상단에 기술하는 것이 일반적이다.
*주요 속성*
- language : 스크립트 코드에서 사용되는 프로그래밍 언어 지정
- contentType : 생성할 문서 타입
- import : 사용할 자바 클래스 지정
- session : 세션 사용 여부 지정
- buffer : 출력 버퍼 크기 지정
- autoFlush : 출력 버퍼가 다 채워졌을 경우 자동으로 버퍼에 있는 데이터를 비우게 만들지의 여부 지정
- info : 페이지에 대한 설명
- errPage = 실행 도중 에러 발생 시 보여줄 페이지 지정
- pageEncoding : 페이지 자체의 캐릭터 인코딩 지정
* tablib
태그 라이브러리(tag library)
사용자가 만든 태그 모음(사용자가 직접 기능 설정)
* include
다른 문서를 포함하는 기능.
여러 JSP 페이지에서 공통적으로 포함하는 내용이 있을 때 이러한 내용을 매번 반복해서 입력하지 않고,
별도의 파일에 저장해 두었다가 JSP 파일에 삽입하도록 하는 것 (→ 생산성 향상)
include 디렉티브의 처리 과정은 정적으로 include 지시자를 사용한 JSP 페이지가 컴파일 되는 과정에서
include 되는 JSP 소스 내용을 그대로 포함해서 컴파일한다. 즉, 복사 & 붙여넣기 방식으로 두 개의
파일을 하나로 구성한 후 같이 변환되고 컴파일된다.
2. 스크립트 요소
- 스크립트 릿(Scriptlet), 스크립 릿, 스크립틀릿 이라고도 불린다.
- JSP에 자바 코드를 기술할 수 있다.
<% %>
JSP 문서 내에 JAVA 코드를 기술하는 부분이기 때문에 오로지 자바 코드만 올 수 있다. 스크립트 릿에 선언된 변수는 지역 변수의 성격을 가지게 되며 (서블릿 안에 있는 service() 메소드 안에 선언된 변수이므로...) 자바에서 메소드 내에 선언된 변수라고 할 수 있다.
- 표현식(Expression)
HTML 문서 결과값에 포함시키고자 할 때 사용된다.
<%= %>
(즉, 브라우저에 등장시킬 수 있는 영역)
- 선언부(Declaration)
스크립트 릿이나 표현식에서 사용할 수 있는 함수 작성 시 사용한다.
<%! %>
스크립트 릿이나 표현식에서 사용할 수 있는 변수나 메소드를 정의하는 부분이기 때문에 선언부에서
선언된 변수는 서블릿으로 변환되는 과정에서 멤버 변수의 입장을 취하게 되며 전역 변수의 성격을 가지게 된다. 또한 『_jspInit()』, 『_jspDestroy()』 와 같은 생명주기 운영을 위해 메소드를 재정의 할 수 있다.
3. 주석
- HTML 주석 : 클라이언트에게 전달된다.
<!-- -->
- JSP 주석 : 클라이언트에게 전달되지 않는다.
<%-- --%>
- 스크립트 릿에서의 주석 : 자바 주석과 동일
// /* */ /* * */
4. 표현 언어(Expression Language : EL)
페이지 내부에서 사용되는 간단한 스크립트 언어
5. 기본 객체(Implicit Object, 내장 객체)
- request : 요청 파라미터 읽어오기
- response : 응답 결과 전송하기
- session : 세션 처리하기, 공용 저장 공간
- application : 웹 어플리케이션 전체 공용 공간
- page : 페이지에 대한 정보 입력
6. 액션 태그와 커스텀 태그
- 액션 태그
<jsp:include page="">
특정 문서를 현재 위치에 포함시킨다.
- 커스텀 태그
개발자가 직접 개발. 중복되는 것을 모듈화하여, 복잡한 소스를 간편화시켜준다.