Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

JAVA 웹 프로그래밍 6주차 정리 (JSP) 본문

2-2/JAVA 웹 프로그래밍 실무

JAVA 웹 프로그래밍 6주차 정리 (JSP)

김브래 2023. 10. 11. 20:47

JSP 소개



JSP 개요


정의

- 스크립트 방식으로 동작하는 서블릿 기반 웹 개발 기술이다. 

- HTML 표현 처리의 어려움을 해결하고, 컴파일 방식과 비교하여 편리한 유지보수를 목표로 서블릿이 개발되었다.

 

특징

- JSP서블릿을 확장한 것이다

- JSP는 빠른 개발 적용이 가능하다.

- 간결한 코드 작성이 가능하다.

 

- 다른 스크립트 방식처럼 매번 스크립트를 해석하는 것이 아니라 최초 요청 시 서블릿으로 변경하여

컴파일된 코드가 메모리에 적재되면 이후 요청은 서블릿과 동일한 수준의 빠른 서비스를 제공할 수 있다.

 

- JSP서블릿처럼 컨트롤러 역할을 수행할 수 있지만 오늘날 주로 컨트롤러로부터 전송된 결과를 처리하여

콘텐츠를 생성하는 (view) 역할을 담당한다.


JSP 동작 과정과 생명 주기


동작 과정

1. 사용자가 웹 브라우저를 이용하여 요청을 하면 웹 서버는 요청에 해당하는 정적인 웹 페이지를 찾는다.

 

2. 정적인 웹 페이지에 대한 요청이 아니므로 웹 컨테이너에게 동적인 웹 페이지를 생성하도록 요청 정보를 전송한다.

 

3. 웹 컨테이너는 요청받은 index.jsp 페이지를 index_jsp.java 라는 서블릿 파일로 변환한다.

 

4. 웹 컨테이너는 해당 서블릿 객체로부터 서블릿 스레드를 생성하며, 이 때 생성된 요청, 응답 객체를 매개변수로 전달한다.

 

5. 웹 컨테이너는 JSP를 변환한 서블릿 스레드의 _jspService 메서드를 호출한다.

 

6. 동적인 웹 페이지를 생성한 후, 이를 응답 객체에 저장한다.

 

7. 웹 컨테이너는 동적인 웹 페이지를 웹 서버에서 전송한다.

 

8. 웹 서버는 동적으로 생성된 웹 페이지에 응답 헤더를 추가하여 HTTP 응답을 작성하고 이를 웹 브라우저에게 전송한다.

 

마지막으로 웹 브라우저는 전송받은 HTTP 응답을 분석하고, 화면에 표시한다.

 

JSP 생명 주기

1. JSP서블릿으로 변환하고, 컴파일한다.

 

2. 클래스 파일을 메모리에 적재(loading)하고, 생성자를 호출하여 인스턴트 생성한다.

 

3. 객체의 초기화를 위해 _jspInit() 메서드 호출한다.

 

4. 요청마다 새로운 스레드를 생성하고, _jspService() 메서드를 실행한다. (GET, POST, HEAD 메서드만 허용됨)

 

5. 서블릿 소멸화를 위해 _jspDestroy() 메서드 호출한다.


JSP 기본 구성 요소


지시자(directive)

 

스크립팅 요소

- 스크립틀릿(scriptlet)

- 표현식(expression)

- 선언문(declaration)

 

주석(comment)

 

표준 액션(standard action)




지시자


정의

지시자(directive)JSP 페이지의 속성을 지정하는데 사용하는 태그로

웹 컨테이너가 처리 방법을 결정하는데 필요한 정보를 제공

 

종류

Page 지시자

pageEncoding

- 현재 JSP 페이지의 문자 인코딩 지정하는데 사용

- JSP 페이지의 기본 문자 인코딩은ISO-8859-1’이다. 한글을 사용하는 경우 정상적인 처리가 되지 않는다.

contentType

- 현재 JSP 페이지가 실행한 후 생성되는 콘텐츠의 유형을 지정

 

errorPage

- 현재 JSP 페이지에서 오류가 발생하면 오류를 전달할 페이지를 지정

 

isErrorPage

- 현재 JSP 페이지를 오류 페이지로 사용할 것인지를 지정


include 지시자


기능

현재 JSP 페이지의 지정한 영역에 포함하고자 하는 외부 파일을 지정한다
 

사용법

<%@ include file=“<파일명>“ %>

- file’속성의 값은 포함하고자 하는 외부 파일 경로이다.

같은 경로인 경우 파일 이름만 사용하면 가능하지만, 그렇지 않은 경우 파일 경로 정보를 지정해야 한다.


taglib 지시자


역할

현재 JSP 페이지에 표현 언어, JSTL(JSP Standard Tag Library), 커스텀 태그(custom tag)

태그 라이브러리(tag library)를 지시한다.

사용법

<%@ taglib uri=“<경로>“ prefix=”<태그 식별자>“ %>
 

uri

- 커스텀 태그들을 가진 태그 라이브러리 경로

- ) uri="http://java.sun.com/jsp/jstl/core"

 

prefix

- 커스텀 태그를 구분하기 위한 식별자

- ) prefix=“c”

 

예를 들어 JSTL를 사용하려면 JSTL 태그 라이브러리가 필요하다.


스크립팅 요소


종류와 의미

주석


표준 액션(standard action)


구분

액션 태그(action tag)XML 태그 형태이고, 기존의 JSP 문법을 확장하는 기법으로

서버나 클라이언트에게 지정한 동작을 지시한다.

정의

액션 태그 중에서 별도의 선언 없이 JSP에서 바로 사용이 가능한 태그를 표준 액션(standard action)이라고 한다.


JSP 기본 객체


배경

객체지향 언어에서는 클래스로부터 객체를 생성해서 사용해야 한다.
JSP에서는 사용의 편리성을 위해서 생성, 선언 과정 없이 사용할 수 있는 객체를 제공한다.

정의

JSP 페이지에서 생성이나 선언 없이 개발자가 바로 사용가능한 객체를 의미한다

request 객체


정의

클라이언트의 요청 정보를 저장하고 있는 객체

주요 기능

클라이언트 및 서버 정보 처리
HTML 폼과 요청 매개변수 처리
HTTP 요청 메시지의 헤더 처리

관련 클래스

javax.servlet.http.HttpServletRequest
javax.servlet.ServletRequest

 

클라이언트 및 서버 정보 처리에 관련된 메서드

HTML 폼 요청 매개변수 처리에 관련된 메서드


Response 객체


정의

클라이언트에게 전송될 응답 정보를 저장하고 있는 객체

주요 기능

응답 페이지에 대한 설정 정보 처리
응답 메시지 헤더 설정 처리
다른 웹 페이지로 이동

관련 클래스

javax.servlet.http.HttpServletResponse
javax.servlet.ServletResponse

 

응답 페이지에 대한 설정 정보 처리 관련

페이지 이동 관련

응답 헤더 처리 관련


페이지 모듈화


배경

하나의 웹 애플리케이션은 다수의 페이지들로 구성된다.
 

다수의 페이지를 살펴보면 다수의 공통 코드가 존재함을 확인할 수 있다.

- 각 페이지의 최상단 영역, 즉 헤더(header)최하단 영역, 푸터(footer) 뿐 아니라

메뉴 영역이나 내비게이션 영역이 공통됨을 알 수 있다.

 

공통 코드가 각각의 페이지에 존재하는 경우 관리가 어렵다.

- 예를 들어 메뉴가 일부 변경이 되었는데, 해당 웹 애플리케이션에 포함된 페이지들이 모두 같은 메뉴를 사용하는 경우 모든 페이지의 해당 부분을 변경해야 한다. 이는 매우 불편할 뿐 아니라 코드 관리 측면에서도 효율적이지 못하다.

 

방법

공통 코드를 별도의 JSP 페이지로 구성하고, 구성된 페이지를 필요로하는 JSP 페이지가 include 지시자나 <jsp:include> 표준 액션을 이용하여 특정 영역에 포함하는 방법

 

특징

공통 코드 관리의 편리성을 기대할 수 있음