Web/Web

[Web] JSP란? JSP 호출과정 / 기본객체 / EL / JSTL

728x90

 

 

 

1. JSP 란?

Java Server Page

- HTML 코드에 Java 코드를 넣어 동적 웹페이지를 생성하는 웹 애플리케이션 도구

- JSP가 실행되면, Java Servlet으로 변환되며 웹 애플리케이션 서버에서 동작되면서

   필요한 기능을 수행하고 생성된 데이터를 웹 페이지와 함게 클라이언트로 응답한다

- HTML 코드 작성이 편해지지만, 비즈니스 로직 또한 JSP 파일에 같이 존재 (→ SRP 어긴다 → 유지보수가 어려워진다)

 

 

 

 

 

2. JSP 호출과정

JSP 호출과정

- 확장자가 *.jsp인 요청은 모두 JspServlet이 받는다

- 첫 번째 호출에만 JSP를 변환 → 컴파일 → 객체 생성 (시간 지연 有)

   두 번째 호출부터는 객체 생성 없이 service() 메서드 응답

- JSP가 변경되면 다시 변환 → 컴파일 → 객체 생성

- JSP나 Servlet은 호출됐을 때 객체를 생성하고 초기화

    • 첫 호출 시 시간 지연 : Lazy-init

    • Spring은 이를 개선하여 요청이 오지 않아도 미리 객체를 만들어 초기화 : Early-init

 

 

 

 

 

3. JSP의 기본 객체

- 객체 생성 없이 사용할 수 있는 객체

    • service() 메서드의 지역변수로 선언되어 있다

기본 객체 타입 설명
request javax.servlet.http.HttpServletRequest 요청 정보가 담겨있는 객체
response javax.servlet.http.HttpServletResponse 요청에 응답을 작성할 때 사용
session javax.servlet.http.HttpSession HTTP session을 구현한 객체
세션 정보 저장에 사용
application javax.servlet.ServletContext Web Application 전체에서 공유하는 객체
config javax.servlet.ServletConfig JSP 페이지에 대한 설정 정보가 담긴 객체
page java.lang.Object JSP 페이지 객체 자신
pageContext javax.servlet.jsp.PageContext JSP 페이지의 context 정보를 제공
out javax.servlet.jsp.JspWriter 응답에 포함될 내용을 출력할 때 사용
exception java.lang.Throwable 예외가 발생했을 때 생성되는 예외 객체

- 위 표에서 초록색 4개의 기본 객체는 각기 다른 영역(Scope)를 가진다

- 각 영역에 저장되는 데이터(속성; Attribute)는 저장 및 가져오는 메서드가 동일하다

 

 

3.1. 기본 객체의 유효 범위(Scope)

- 위 표에서 4개의 기본 객체들은 각각 다른 생명 주기를 가지고 생성 / 소멸된다

    • pageContext, request, session, application

pageContext request session application
1개 JSP 페이지 1+개 JSP 페이지 n개 JSP 페이지 context 전체
페이지당 1개 요청마다 1개 클라이언트마다 1개 context마다 1개
- JSP 페이지의 시작부터 끝까지
- 페이지 내부에서만 접근 가능
- 요청마다 초기화


- 요청의 시작부터 응답까지
- 다른 JSP로 전달 가능


- session의 시작부터 종료까지
   (로그인 ~ 로그아웃)
- 사용자 수만큼 객체 생성
   → 서버 부담 큼

- Web App 시작부터 종료까지
- context 내부 어디서나
   접근 가능
- 모든 클라이언트가 공유

 

 

3.2. 기본 객체의 속성(Attribute) 관련 메서드

- 위 기본 객체의 데이터는 속성(Attribute)라고 부르며, 각각의 속성에 접근하는 메서드는 동일하다

속성 관련 메서드 설명
void setAttribute(String name, Object value) 지정된 값(value)을 지정된 속성 이름(name)으로 저장
Object getAttribute(String name) 지정된 이름(name)으로 저장된 속성의 값을 반환
void removeAttribute(String name) 지정된 이름(name)의 속성을 삭제
Enumeration getAttributeNames() 기본 객체에 저장된 모든 속성의 이름을 반환

 

 

 

 

 

4. EL 표현식

Expression Language

- JSP 2.0에서 추가된 스크립트 언어

- 기존 스크립트 태그의 표현식 <%= 정보%> 태그에서 업그레이드 된 버전 : ${정보} 

${requestScope.test.name}
${test.name}	<!-- requestScope는 생략 가능 -->

 

- 주요 특징

    • JSP 기본 객체에 저장된 속성(Attribute)의 property를 출력 가능

    • 리터럴 데이터, 다양한 연산결과 출력 가능

    • JSTL과 연동 가능

 

- [참고] EL 표현식 잘 정리된 블로그 : https://atoz-develop.tistory.com/entry/JSP-EL-%ED%91%9C%ED%98%84%EC%8B%9D-%EB%AC%B8%EB%B2%95%EA%B3%BC-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95

 

JSP - EL 표현식 문법과 사용 방법

JSP - EL 표현식 문법과 사용 방법 EL(Expression Language)은 자바 빈의 프로퍼티, 값을 JSP의 표현식 이나 액션 태그 를 사용하는것 보다 쉽고 간결하게 꺼낼수 있게 하는 기술이다. 또한 static 메소드를

atoz-develop.tistory.com

 

 

 

 

 

5. JSTL

JSP Standard Tag Library

- JSP에서 자주 사용하는 기능(반복문, 조건문, 데이터 표현 등)을 미리 구현해 놓은 커스텀 태그 라이브러리 모음

- JSTL 라이브러리 (접두어) : core (c), formatting (fmt), function (fn), database (sql), xml (x)

- JSTL은 EL을 사용하여 표현

- 주요 Core 태그

태그 설명
<c:set> JSP에서 사용될 변수 설정
<c:remove> 설정한 변수 제거
<c:choose> 다중 조건 처리 (else if)
<c:forEach> 반복문 제어. collection 또는 map의 각 항목을 처리할 때 사용
<c:forTokens> 구분자로 분리된 각각의 토큰을 처리 시 사용
 <c:url> URL 생성
<c:import> 지정한 주소로 요청하고 응답 결과를 받아 반환
<c:redirect> Redirect 처리 시 사용

 

 

 

 

 

 

 

 

 

 

📌  References

- [Fastcampus] 나도 할 수 있는 Java&Spring 웹 개발 종합반 강의

- https://creamilk88.tistory.com/117#google_vignette

 

[JSP] EL / JSTL 표현식 한 방에 정리 ! (문법과 사용방법)

EL과 JSTL을 사용하는 이유? 1. design tool에서는 jsp 코드가 깨질 수 있다. [ EL ] EL 이란? Expression Language의 약자 JSP 2.0에서 새롭게 추가된 스크립트 언어 기존의 Script tag의 표현식() tag에서 업그레이드

creamilk88.tistory.com

- https://velog.io/@nemo/JSTL

 

[Java] JSTL 정리

JSTL이란? JSTL(JSP Standard Tag Library)은 표준 태그 라이브러리로, JSP의 기본 태그가 아닌 JSP 확장 태그이다. JSTL은 반복, 조건 로직이나 formatting 작업, XML 문서, SQL 태그의 조작을 위한 태그에 사용된다

velog.io

 

 

 

 

 

728x90