[JSP, 서블릿]

[JSP] 지시어, 스크립트요소, 내장객체

Jarvis2304 2023. 1. 10. 01:29

▶ JSP 코드 구조

● JSP 코드

- JSP란 HTML문서에 내부적으로 Java 문법을 사용할 수 있게 하는 웹페이지 스크립트 언어

- HTML태그안에 자바 코드가 삽입됨, 확장자가 .jsp

- JSP는 뷰(view) 페이지를 만들때 사용, 뷰는 단순히 클라이언트가 보는 화면으로서 클라이언트로부터 요청받거나 처리된 결과를 보여주는 페이지

 

 

● JSP 코드 구조

 

 

지시어 (Directive)

- JSP 페이지를 서블릿(자바) 코드로 변환 하는데 필요한 정보를 JSP 엔진에게 알려줌

- 지시어 종류는 다음 세가지 존재

 

● page 지시어 - JSP 페이지에 대한 정보를 설정

● include 지시어 - 외부 파일을 현재 JSP 페이지에 포함

● taglib 지시어 -  EL(표현 언어)에서 사용할 자바 클래스의 메서드를 호출하거나 JSTL(JSP 표준 태그 라이브러리)을 사용하기 위해 선언

 

 

▶ page 지시어

- JSP 페이지에 대한 정보를 설정

- 문서의 타입, 에러 페이지, MIME 타입과 같은 정보를 설정

 

▷ page 지시어의 속성들

속성

내용 

기본값

info 페이지에 대한 설명을 입력 없음
language 페이지에서 사용할 스크립팅 언어를 지정 java
contentType 페이지에서 생성할 MIME 타입을 지정 없음
pageEncoding charset과 같이 인코딩을 지정 ISO-8859-1
import 페이지에서 사용할 자바 패키지와 클래스를 지정 없음
session 세션 사용 여부를 지정 true
buffer 출력 버퍼의 크기를 지정. 버퍼를 사용하지 않으려면 "none"으로 지정 8KB
autoFlash 출력 버퍼가 모두 채워졌을 때 자동으로 비울 지를 결정.
buffer 속성이 none일 때 false로 지정하면 에러 발생
true
trimDirectiveWhitespaces 지시어 선언으로 인한 공백을 제거할지 여부를 지정 false
errorPage 해당 페이지에서 에러가 발생했을 때 에러 발생 여부를 보여줄 페이지를 지정 없음
isErrorPage 해당 페이지가 에러를 처리할지 여부를 지정 false

 

language,  contentType , pageEncoding 속성

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

- language: 스크립팅 언어는 자바를 사용

- contentType: 문서의 타입, 즉 MIME 타입은 text/html이고, 캐릭터셋은 EUC-KR

- pageEncoding: 소스의 인코딩 방식은 EUC-KR

(EUC-KR 캐릭터셋과 인코딩 방식은 한글이 깨질 수 있으므로 UTF-8로 설정해야함 추후 인코디 방식 지정 챕터에서 설명)

 

 

● import 속성

- JSP 파일은 자바 파일로 변환, 자바에서 외부 클래스를 사용하려면 import문으로 해당 패키지나 클래스를 가져와야 하듯이 JSP 파일에서도 필요한 클래스가 있으면 import 해야함

 

 

● erroPage, isErrorPage 속성

- JSP는 실행 도중에 에러가 발생하면 "HTTP Status 500" 에러 화면을 웹 브라우저에 표시

- 개발을 진행하는 중이라면 어떤 에러가 발생되었는지 확인할 수 있으므로 도움이됨

- 하지만 실제 서비스 하는 도중 에러 화면이 뜬다면 고객의 신뢰를 잃는 요인이며 에러가 발생한 코드가 노출된다면 보안 측면에서도 좋지 않음

 

 

● trimDirectiveWhitespaces 속성

- 앞의 예제을 실행한 후  →  마우스 우클릭  →  [페이지 원본 보기]를 클릭해서 보면 상단의 공백 존재

- 이는 page 지시어가 있던 부분이며 page 지시어가 웹 서버에서 처리된 후 공백으로 남게 되는 것

- 일반적으로 큰문제가 없지만 안드로이드와 같은 외부 기기와 연동 시 가끔 문제 일으킴

- 때문에 지시어 때문에 생성된 불필요한 공백을 제거하고 싶다면 trimDirectiveWhitespaces 속성을 사용

- 지시어에 trimDirectiveWhitespaces="true"로 설정 

 

 

 

 

 

 

 

▶ include 지시어

- 많은 웹 사이트에서 상단 메뉴나 하단 정보가 여러 페이지에서 반복되오 사용되는 것을 볼 수 있음

- 뒤에서 학습할 세션 확인과 같은 작업도 모든 페이지에 삽입해야하는 경우 발생

- 이럴 때 반복되는 부분을 별도의 파일에 작성해두고 필요한 페이지에서 include 지시어로 포함시킬 수 있음

 

 

 

▶ taglib 지시어

- EL(표현 언어)에서 자바 클래스의 메소드를 호출하거나 JSTL(JSP 표준 태그 라이브러리)을 사용하기위한 지시어

→ 지금 다루기에 어렵기때문에 추후 챕터에서 설명

 

 

 

 

 

스크립트 요소(Script Elements)

- 스크립트 요소는 JSP에서 자바 코드를 직접 작성할 수 있게 해줌. 용도에 따라 선언부, 스크립틀릿, 표현식으로 나눠짐

 

● 선언부 (Declaration)

- 스크립틀릿이나 표현식에서 사용할 멤버 변수나 메서드를 선언

- 서블릿으로 변환 시 _jspService() 메서드 '외부'에 선언

 

 

● 스크립틀릿(Scriptlet)

- JSP 페이지가 요청을 받았을 때 실행돼야 할 자바 코드를 작성하는 영역

- 서블릿으로 변환 시 _jspService() '내부'에 그대로 기술

 

 

● 표현식(Expression)

- 프로그래밍 언어에서 표현식은 '실행 결과로 하나의 값이 남는 문장'. 즉 상수,변수, 연산자를 사용한 식, '변환값이 있는' 메서드 호출 등이 모두 표현식에 속함

- JSP의 표현식도 마찬가지이며, 주로 변수의 값을 웹 브라우저 화면에 출력할 때 사용

- 스크립틀릿 안에서 변수를 출력할 때는 out.print()를 사용해야 하지만, 표현식은 좀 더 단순한 방법으로 출력하기 위해 사용