알고리즘 스터디 방에서 현업자 분께 추천받아 구매 후 장 별로 정리하고자한다.
🍰 학습 목표
JSP의 개념, 탄생 배경, 동작 원리를 이해하고 JSP 파일의 기본 구조와 핵심 요소 익히기.
1장 JSP 기본 -1 게시글과 이어진다.
JSP의 주된 목적 은 웹 브라우저에 띄울 HTML 파일을 생성하는 것
일반적인 HTML 파일에 몇 가지 요소가 추가된 형태
JSP 페이지를 자바(서블릿) 코드로 변환하는데 필요한 정보를 JSP 엔진에 알림
주로 스크립트 언어
, 인코딩 방식
등을 설정
기본 구문
<%@ 지시어 종류 속성1="값1" 속성2="값2" ... %>
사용할 수 있는 속성은 지시어 마다 다름
1) page 지시어
JSP 페이지에 대한 정보 설정
문서의 타입, 에러페이지, MIME 타입과 같은 정보 설정
속성 | 내용 | 기본값 |
---|---|---|
info | 페이지에 대한 설명 입력 | X |
language | 페이지에서 사용할 스크립팅 언어 지정 | java |
contentType | 페이지에 생설할 MIME 타입 지정 | X |
pageEncoding | charset과 같이 인코딩 지정 | ISO-8859-1 |
import | 페이지에서 사용할 자바 패키지와 클래스 지정 | X |
session | 세션 사용여부 지정 | true |
buffer | 출력 버퍼의 크기 지정, 미사용 시 none | 8KB |
autoFlush | 출력 버퍼가 모두 채워졌을 때 자동으로 비울 지 결정 | true |
trimDirectiveWhitespaces | 지시어 선언으로 인한 공백 제거 여부 지정 | false |
errorPage | 해당 페이지에서 에러 발생 시 에러 발생 여부 보일 페이지 지정 | X |
isErrorPage | 해당 페이지가 에러를 처리할지 여부 지정 | false |
- Buffer, AutoFlush 속성
JSP 파일
이 서블릿 코드
로 변환된 후 컴파일 되어 class 파일
로 만들어짐이 과정에서 응답 결과를 웹 브라우저로 즉시 전송x, 출력할 내용을 버퍼에 저장했다가 일정량이 되었을 때 전송
버퍼란?
유튜브 스트리밍 서비스 처럼 네트워크로 영상 데이터를 전송할 때, 작은 단위로 여러 번 전송하는 것보다 큰 단위로 묶어서 한 번에 보내는 편이 효율적임따라서 버퍼라는 임시 저장소를 두어 데이터들이 충분히 쌓일 때까지 기다렸다가 보냄
JSP에서는 버퍼를 사용함으로써 포워드
와 에러 페이지
를 처리할 수 있음.
JSP가 생성한 결과는 일단 버퍼에 저장된다.
만약 실행 도중 에러가 발생하면 버퍼에 저장된 내용을 삭제하고 에러 화면을 표시함.
2) include 지시어
다양한 웹 사이트에서 상단 메뉴나 하단 정보(회사 연락처 등)가 여러 페이지에서 반복되어 사용됨.
위처럼 반복되는 부분을 별도의 파일에 작성해두고 필요한 페이지에서 include 지시어로 포함시킨다.
<%@ include file="포함할 파일의 경로" %>
3) taglib 지시어
EL
(표현 언어)에서 자바 클래스의 메서드를 호출하거나 JSTL
(JSP 표준 태그 라이브러리)을 사용하기 위한 지시어
스크립트 요소는 JSP에서 자바 코들르 직접 작성할 수 있게 해준다.
용도에 따라 선언부
, 스크립틀릿
, 표현식
으로 나뉜다.
1) 선언부
스크립틀릿이나 표현식에서 사용할 멤버 변수나 메서드 선언
서블릿으로 변환 시 _jspService() 메서드 외부에 선언된다.
<%! 메서드 선언 %>
2) 스크립틀릿
JSP페이지가 요청을 받을 때 실행돼야 할 자바 코드를 작성하는 영역
서블릿으로 변환 시 _jspService() 메서드 내부에 기술됨
<% 자바 코드 %>
자바에서 메서드 내부에 또 다른 메서드를 선언할 수 없듯이,
스크립틀릿에서도 마찬가지로 새로운 메서드를 선언할 수 없고 선언부에서 작성한 메서드만 호출할 수 있다.
3) 표현식
실행 결과로 하나의 값이 남는 문장.
상수, 변수, 연산자를 사용한 식, '반환값이 있는' 메서드 호출 등이 모두 표현식에 속한다.
주로 변수의 값을 웹 브라우저 화면에 출력할 때 사용
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%! // 선언부
public int add(int n1, int n2){
reutrn n1+n2;
}
%>
<html>
<head>...</head>
<body>
<% // 스크립틀릿
int result = add(10,20);
%>
덧셈 결과: <%= result %> // 표현식
덧셈 결과: <%= add(40,30) %>
</body>
</html>