sungwony

[웹프로그래밍]JSP 본문

development/웹프로그래밍

[웹프로그래밍]JSP

일상이상삼상 2017. 5. 23. 16:34


JSP는 MVC모델의 'View'를 담당한다.

PHP나 파이썬(Python)은 인터프리팅 방식으로 소스를 바로 읽어서 실행하지만, JSP 파일은 그 자체로 실행되지 않고 자바 서블릿 클래스로 만들어진 다음에 실행된다. 실행 속도 역시 스크립트 기반 서버 애플리케이션보다 JSP가 더 빠르다. 중요한 것은 JSP가 직접 실행되는 것이 아니라 JSP로부터 만들어진 서블릿이 실행된다는 사실이다.


JSP 엔진은 JSP 파일로부터 서블릿 클래스를 생성할 때 HttpJspPage 인터페이스를 구현한 클래스를 생성한다.


*상속 관계

<<interface>> Servlet <- <<interface>> JspPage <- <<interface>> HttpJspPage


HttpJspPage를 구현한다는 것은 결국 Servlet 인터페이스도 구현한다는 것이기 때문에 JSP 파일로부터 생성된 클래스틑 '서블릿'이 된다.


_jspService()


: HttpJspPage에 선언된 _jspService()는 JSP 페이지가 해야 할 작업이 들어 있는 메서드이다. JSP 파일에 작성된 대부분의 내용이 이 메서드 안으로 들어가게 된다. 서블릿 컨테이너가 service()를 호출하면 service() 메서드 내부에서는 이 메서드를 호출함으로써 JSP 페이지에 작성했던 코드들이 실행된다.


_jspInit(), _jspDestroy()


JSP의 주요 구성요소


JSP를 구성하는 요소는 크게 두 가지로 나눌 수 있다.


템플릿 데이터 : HTML, 자바스크립트, 스타일 시트, JSON 형식 문자열, XML, 일반 텍스트 등

JSP 전용 태그 : 자바 명령문으로 바뀌는 태그


page 지시자

<%@ page

language="java"

contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"

%>


① language 속성은 스크립트릿(Scriptlet)이나, 표현식(Expression element), 선언부(Declaration element)를 작성할 때 사용할 프로그래밍 언어를 지정한다.


② contentType 속성은 출력할 데이터의 MIME 타입과 문자 집합을 지정한다. 예제 코드에서 값 'text/html'은 출력할 데이터 HTML 텍스트임을 가리킨다. 예제 코드에서 값 'charset=UTF-8'은 출력할 데이터를 UTF-8로 변환(encoding)할 것을 지시.


③ pageEncoding 속성은 출력할 데이터의 문자 집합을 지정한다. 기본값은 'ISO-8859-1'이다.


JSP 전용 태그 - 스크립트릿


<% 자바 코드 %>


: 스크립트릿 태그 안에 작성한 내용은 서블릿 파일을 만들 때 그대로 복사된다.


JSP 전용 태그 - 선언문


<%! 멤버 변수 및 메서드 선언 %>


: JSP 선언문은 서블릿 클래스의 멤버(변수나 메서드)를 선언할 때 사용하는 태그로 JSP 페이지에서 선언문을 작성하는 위치는 위, 아래, 가운데 어디든 상관없다. 왜냐하면 선언문은 _jspService() 메서드 안에 복사되는 것이 아니라, _jspService() 밖의 클래스 블록 안에 복사되기 때문이다.


JSP 전용 태그 - 표현식


<%= 결과를 반환하는 자바 표현식 %>


: 표현식 태그는 문자열을 출력할 때 사용한다. <% %> 안에는 결과를 반환하는 자바 코드가 와야 한다. 서블릿 파일 안에서는 out.print(값) 으로 변환이 된다.


JSP 내장 객체


: JSP페이지에서 스크립트릿 <% %> 이나 표현식 <%= %>를 작성할 때 별도의 선언 없이 사용하는 자바 객체가 있는데 request, response, pageContext, session, application, config, out, page, exception 객체가 이에 해당한다.