JSP는 자바 서버 페이지(JavaServer Pages)의 약자로서, HTML 페이지 안에 자바(Java) 코드를 직접 삽입하여 웹서버에서 동적으로 웹 페이지를 생성하여 웹브라우저가 표현할 수 있도록 전달해 주는 스크립트 프로그래밍 언어이다. 미국 썬 마이크로시스템즈사가 처음 개발했고, 2010년 오라클(Oracle)사에 인수되었다. HTML 문서 안에 <% ... %> 기호를 쓰고 그 안에 자바 코드를 삽입하는 방식으로 사용한다. 서블릿(Servlet)은 자바 소스 코드 안에 HTML을 삽입하지만, JSP는 반대로 HTML 문서 안에 자바 코드를 삽입한다. 한편 자바스크립트(JavaScript)는 사용자의 개인 PC에 설치된 웹브라우저에서 실행되지만, JSP는 웹서버에서 실행되어 그 결과값만 사용자의 웹브라우저에 전달된다는 차이점이 있다.
개요
JSP는 서블릿을 이용하여 웹페이를 직접적으로 제어하여 모양이나 내용을 변환하는 기술이다. 자바를 개발한 썬마이크로시스템즈에서는 이 기술이 서블릿 API라고 표현하며 JSP는 마치 마이크로소프트의 ASP의 기술과 필적한다. ASP는 페이지가 사용자에게 전송되기 전에 스크립트 인터프리터에 의해 해석될 스크립트를 포함시키지만 JSP는 웹서버에 의해서 실행되는 자바프로그램을 호출한다. Servlet 기술의 확장으로 사용자가 입력한 코드에 따라 페이지를 생성한다.
탄생배경
JSP가 탄생하게된 계기는 마이크로소프트사에서 출시한 웹 개발스크립트 엔진인 ASP(Active Server Page)에 대응하기 위해 1999년 썬마이크로시스템즈(Sun Microsystems)에서 발표한 Java Server Page 라는 스크립트 엔진이다. WAS(Web Application Server)는 클라이언트의 웹 브라우저로부터 JSP에 대한 요청이 오면 JSP코드를 Servlet코드로 변환 후 컴파일하여 실행하게 된다.[1]
JSP동작과정
JSP코드는 백그라운드에서 맞는 Servlet코드로 변환된다.
- JSP 실행 시 WAS에서 내부의 JSP파일을 Java Servlet(.java)로 변환한다.
- WAS는 변환한 Servlet을 실행시켜 사용자가 원하는 기능을 제공한다.
- 명령 수행 후 생성된 데이터는 웹페이지와 함께 클라이언트에게 보여진다.[2]
특징
성능과 확장성
JSP는 HTML 태그로 구현되는 부분과 JSP태그로 구현되는 부분으로 나누어지는데 JSP 태그에 포함되는 부분은 백그라운드에서 맞는 Servlet 소스로 생성되어 처리된다. JSP태그로 생성되는 Servlet클래스는 처음 요청 시에는 객체가 생성되며 두 번째 요청 시에는 처음 생성된 객체에서 멀티스레드로 동작하게 된다. 하나의 JSP파일에 대해서 여러 사용자의 다중 요청에 대해 멀티스레드로 동작할 수 있다. 여러 스레드끼리 쉽게 리소스를 공유할 수 있어 성능이 향상된다. 기존의 Java의 장점을 가져오면서 웹 서버에 독립적으로 운용할 수 있다.
Javabeans 컴포넌트의 활용
JSP는 Java언어를 활용해서 동적인 컨텐츠를 구현할 수 있는데 직접적으로 태그안에 Java의 소스 코드를 구현해도 되지만 Java언어를 알지 못해도 HTML수준의 기본 태그를 활용하여 서버 내부에 있는 Java 객체를 활용 할 수도 있다. 이것은 Java언러로 작성된 객체로 모듈성과 재사용성에 맞추어져 개발되었다. JavaBeans의 개발은 Java에서 클래스를 만들듯이 데이터와 동작원리에 대해 변수와 메서드로 나누고 약간의 규약을 첨부해서 구현한다. 컴포넌트의 내부구조를 모르고도 JavaBeans컴포넌트를 활용하여 원하는 기능을 구현할 수 있다.
프로그램구현의 용이성
자바서버페이지의 기능을 충분히 활용하면 프로그램을 구현하는 세션과 사용자에게 정보를 출력하는 세션을 분리하여 처리할 수 있다. 프로그래밍을 담당한 JavaBeans을 이용하여 코드를 어떠하게 작성하느냐에 따라 다양한 효과를 얻을 수 있다.
같이 보기
각주
참고자료
- KimWhale , 〈(웹언어) JSP소개 및 장단점〉, 《티스토리블로그》 , 2013
- 이강원 , 〈JSP〉, 《지형 공간정보체계 용어사전》,구미서관 , 2016-01-03
- Gren , 〈JSP - 탄생 배경 및 Life cycle〉, 《네이버블로그》, 2018-06-26
- heejeong Kwon , 〈<Web> JSP란(Java Server Pages)〉, 《github》, 2018-11-03
이 JSP 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.
|
개발 : 프로그래밍 □■⊕, 소프트웨어, 데이터, 솔루션, 보안, 하드웨어, 컴퓨터, 사무자동화, 인터넷, 모바일, 사물인터넷, 게임, 메타버스, 디자인
|
|
프로그래밍 언어
|
ASP • C 언어 • C++ • C# • CSS • D 언어 • HTML • HTML5 • JSP • PHP • R • XHTML • XML • XSLT • 고(Go) • 고급언어 • 기계어 • 델파이 • 러스트 • 루비 • 루아 • 리액트 • 리퀴디티 • 무브 • 미켈슨 • 베이직 • 브이비스크립트 • 비주얼 C++ • 비주얼베이직(VB) • 비주얼베이직닷넷(VB.NET) • 솔리디티 • 스몰토크 • 스위프트 언어 • 스칼라 • 스크립트 언어 • 알골 • 어셈블리 • 언리얼스크립트 • 얼랭 • 에이잭스(Ajax) • 엠에프씨(MFC) • 오브젝티브-C • 오브젝트 파스칼 • 오카멜 • 웹어셈블리(WASM) • 이와즘(eWASM) • 자바 • 자바스크립트 • 저급언어 • 제이슨(JSON) • 제이쿼리(jQuery) • 카멜 • 코볼 • 코틀린 • 콜드퓨전 • 타입스크립트 • 파스칼 • 파워스크립트 • 파이썬 • 펄(Perl) • 포트란 • 프로씨(Pro-C) • 피엘에스큐엘(PL/SQL) • 피엘원(PL/I) • 하스켈
|
|
개발방법론
|
CBD 개발방법론 • EA • 구조적 개발방법론 • 객체지향 개발방법론 • 라이브러리 • 람다 아키텍처 • 모듈 • 모듈화 • 벤치마킹 • 소프트웨어 개발방법론 • 스크럼 • 스프린트 • 아키텍처 • 아키텍트 • 애자일 • 웹개발방법론 • 정보공학 개발방법론 • 컴포넌트 • 테일러링 • 템플릿 • 폭포수 모델 • 프로젝트 • 프로토타입 • 피드백
|
|
코딩
|
EUC-KR • UTF-8 • 값 • 글루웨어 • 디버깅 • 디코딩 • 마크업 • 버그 • 부트스트랩 • 세이브포인트 • 소스코드 • 시큐어코딩 • 아스키 • 액티브엑스 • 오픈소스 • 유니코드 • 인코딩 • 재컴파일 • 주석 • 컴파일 • 컴퓨터 프로그램 • 코드 • 코딩 • 태그 • 테스트 • 테이블 • 텍스트 • 파싱 • 퍼블리싱 • 퓨니코드 • 하드코딩 • 하이퍼링크 • 하이퍼텍스트
|
|
프로그래밍
|
C 명령어 • 객체 • 객체지향 • 객체지향 프로그래밍 • 거짓 • 관계연산자 • 기본형 변수 • 널 • 논리 • 논리연산 • 논리연산자 • 다중상속 • 다형성 • 대입 • 대입문 • 대입연산자 • 더블 • 도스 명령어 • 디폴트 • 레지스터변수 • 루프 • 리눅스 명령어 • 리턴 • 메모리 주소 • 메소드 • 멤버 • 명령문 • 명령어 • 무한루프 • 문자 • 문자열 • 바이트 • 반복문 • 배열 • 변수 • 분기 • 분기문 • 불린 • 브레이크 • 비교연산자 • 비트연산자 • 산술연산자 • 상속 • 상수 • 생성자 • 선언 • 선언문 • 설정자 • 속성 • 스위치 • 스태틱 • 시프트연산자 • 실행 • 실행문 • 어노테이션 • 에코 • 역참조 • 연산 • 연산문 • 연산자 • 오버로딩 • 오버라이딩 • 외부변수 • 윈도우 명령어 • 유닉스 명령어 • 인스턴스 • 인스트럭션 • 인클루드 • 인터페이스 • 임포트 • 입력 • 입력문 • 입출력 • 입출력문 • 자료형(데이터 타입) • 자바 명령어 • 자바 예약어 • 자바 컬렉션 • 전역변수 • 접근자 • 접근제어자 • 정보은닉 • 정수형 • 정적변수 • 제어 • 제어문 • 제어자 • 조건 • 조건문 • 조건연산자 • 주소 • 증감연산자 • 지역변수 • 참 • 참조 • 참조변수 • 초기화 • 추상메소드 • 추상클래스 • 추상화 • 출력 • 출력문 • 캡슐화 • 케이스 • 클래스 • 파라미터(매개변수) • 파이널 • 패키지 • 퍼블릭 • 포인터 • 프라이빗 • 프로텍티드 • 필드(멤버변수) • 함수 • 환경변수
|
|
명령어
|
abstract • array • boolean • break • byte • case • char • continue • default • double • do while • echo • elif • else • else if • false • final • float • for • gosub • goto • if • if else • import • include • int • join • long • long long • null • print • printf • println • private • protected • public • return • scanf • short • stdio.h • static • string • switch • temp • then • true • unsigned • void • while
|
|
디자인패턴
|
구조패턴 • 동시성패턴 • 동시실행패턴 • 모델-뷰-컨트롤러 패턴 • 상태패턴 • 생성패턴 • 싱글톤패턴 • 아키텍처패턴 • 전략패턴 • 커맨드패턴 • 행동패턴
|
|
프로그래밍 인물
|
귀도 반 로썸 • 그레이스 머레이 호퍼 • 니클라우스 비르트 • 댄 브릭클린 • 더그 커팅 • 데니스 리치 • 리누스 토르발스 • 리처드 그린블라트 • 마거릿 해밀턴 • 마크 앤드리슨 • 빈트 서프 • 빌 게이츠 • 빌 조이 • 스티브 잡스 • 에이다 러브레이스 • 제임스 고슬링 • 척 벤턴 • 켄 톰슨 • 팀 패터슨
|
|
위키 : 자동차, 교통, 지역, 지도, 산업, 기업, 단체, 업무, 생활, 쇼핑, 블록체인, 암호화폐, 인공지능, 개발, 인물, 행사, 일반
|
|