HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에게 돌려주는 언어이며 애플리케이션 서버에서 동작한다.
Java의 웹 서버 프로그램 servlet으로 변환되어 서비스 된다
프로그래머가 직접 코딩한 servlet보다 최적화된 servlet 을 생성시켜 효율적인 코드를 생성한다.
서블릿보다 쉽고, 빠르다.
디자인(HTML,JS) 부분과 로직(JSP)를 분리시킬 수 있 다.(디자이너와 프로그래머의 일을 분업화할 수 있다.)
웹프로그래밍은 기본적으로 클라이언트(Client)/서버 (Server) 방식으로 이루어짐
클라이언트(웹 브라우저)가 특정페이지를 웹 서버에 요 청(Request)하게 되면 웹 서버가 이를 처리한 후 결과를 클라이언트(웹 브라우저)에게 응답(Response)을 하게 되는 구조이다.
JSP 동작구조
① 사용자의 웹 브라우저에서 http://서버주소/xxx.jsp와 같은 형태로 해당 페이지를 요청한다.
② 웹 서버는 요청한 해당 페이지를 처리하기 위해서 jsp컨테이너에 처리를 넘긴다.
③ 해당 jsp화일이 처음 요청된 것이면 jsp파일을 서블릿으로 파싱(변환)한다. 이전에 요청되었 던 페이지일 경우 다시 파싱할 필요가 없으므로 바로 5단계로 넘어간다.
④ 서블릿 파일은 자바에서 실행가능한 상태인 클래스 파일로 컴파일이 된다.
⑤ 클래스 파일은 메모리에 적재가 되어 실행된다.
⑥ 이 실행 결과는 다시 웹 서버에게 넘겨진다.
⑦ 웹서버는 웹브라우저가 인식할 수 있는 HTML형태로 결과를 웹 브라우저에게 응답한다. 웹 서버로부터 응답받은 결과물인 HTML 페이지를 웹 브라우저에서 실행시켜서 해당 웹 페 이지가 웹 브라우저에 표시된다.
요약 URL - DNS 서버 - 웹서버(jsp 페이지요청) - 웹서버 는 .jsp로 들어온 요청에 대해서 jsp컨테이너로 전송 - jsp파일 파싱 – 서블릿생성 - 생성된 서블릿 컴파일 - 컴 파일된 클래스 파일을 메모리에 적재 - html 형태인 응답 을 사용자에게 전송 - 사용자의 브라우저에서 html실행된다
JSP 일반 태그
요소
TAG
설명
Directive
%@ 지시어 %>
JSP 페이지의 설정 정보에 대한 설정/셋팅
Declaration
<%! 선언문 %>
전역 변수 및 메소드 선언
Scriptlet
<% 스크립트릿 %>
변수, 제어문, 프로그램 코드 구현
Expression
<%= 표현식 %>
변수의 결과 값, 메소드의 리턴 값 등
Comments
<%-- 주석 --%>
페이지 지시어
정의
JSP 페이지 실행시 필요한 정보를 지정하기 위하여 사용
해당 페이지를 어떻게 처리할 것인가에 대한 설정 정보
JSP가 서블릿으로 변환될 때 전반적인 영향을 줄 수 있는 정보를 제공
지시어
설명
page
JSP 전체적인 페이지에 대한 정보 현재 JSP 페이지에 대한 처리 방식/정보를 제공하는데 사용 생성 문서의 타입, 스크립팅 언어, import할 클래스, 세션의 사용 여부 등
include
현재 파일에 다른 파일을 넣고자 하는 경우 공통적으로 사용이 되는 파일을 별도로 만들고 필요하면 인서트하는 개념 <%@ include file="포함될 파일의 url" %> 일반적으로 조각 코드를 삽입할 때 사용 조각 코드는 소스 코드와 구분 짓기 위해서 jspf를 사용할 수도 있다
taglib
태그 사용을 통한 자바 소스를 대체하고자 하는 경우에 사용 사용자에 의해서 만든 tag를 이용할 때 사용된다 (사용자 정의 태그) 태그 라이브러리를 JSP에서 사용하고자 하는 경우에 사용
선언문(Declaration)
표현 가능한 내용
out, request, response 등의 내장 객체 사용 불가
서블릿으로 변환될 때 서블릿의 멤버로 선언된다.
사용형식
– <%! 문장 %>으로 표시 – 선언문 태그는 여러 군데서 중복이 가능하다
<%! private String name = "태연" ; private int year = 2013 ; public String getName(){ return name ; } %>
스크립트릿(scriptlet)
JSP에서 많이 쓰이는 스크립트 요소
자바 문장 사용(제어문, 반복문, 지역(로컬) 변수 선언)
블록 문장인 {, }를 닫지 않고 해당 라인의 코딩을 종료할 수 있기 때문에 제어문 등에서 처리 시에 유연하게 사용 할 수 있다
주로 프로그래밍의 로직을 구현할 때 많이 사용된다
일반적으로 가장 많이 사용되는 태그이다
_jspService() 메소드로 변환이 된다
세미콜론을 붙여야 한다
서블릿의 서비스 메소드안에 선언된다
사용형식
– <% 문장 %>으로 표시
표현식
의미
웹 브라우저에 출력할 부분을 표현한 것
스크립트릿 코드 내에서는 표현식을 쓸 수 없고, 스크립트릿내에서 출 력한 부분은 아래와 같이 내장 객체인 out객체를 사용해서 출력한다
<% out.println() ; > 과 동일한 결과
표현 가능한 내용
간단한 계산, 변수, 메소드(함수) 호출
메소드의 결과 값
특징
세미콜론은 사용하지 않는다
JSP가 서블릿으로 변환시 out.print() 메소드로 자동 변환시 세미콜론이 붙음
사용형식
– <%=변수 %> – <%=리턴값이 있는 메소드 %> – <%=수식(변수 또는 리턴 값이 있는 메소드를 포함할 수 있음) %>
주석
HTML 주석
<!-- -->
실행은 안되지만, 소스보기하면 주석의 내용을 볼 수 있다
HTML 주석내의 표현식 및 스크립트릿은 주석문 내에서 실행된다
JSP주석
<%-- --%>
실행도 안되고, 소스보기해도 표시되지 않는다
자바, 자바 스크립트 주석
// or /* */
스크립트릿이나 선언문에서 사용되는 주석
표현식에도 자바 주석을 포함시킬 수 있으나 다른 코드없이 주석만 으로 표현식이 이루어져 있으면 컴파일시 에러 발생한다