JSP의 등장배경
문제점
- 웹 프로그램의 화면 기능이 복잡해지므로 서블릿의 자바 기반으로 화면 기능 구현시 어려움이 발생한다.
- 디자이너 입장에서 화면 구현 시 자바 코드로 인해 작업이 어렵다.
- 서블릿에 비즈니스 로직과 화면 기능이 같이 있다 보니 개발 후 유지관리가 어렵다.
해결책
- 서블릿의 비즈니스 로직과 결과를 보여주는 화면기능 분리
- 비즈니스 로직과 화면을 분리함으로써 개발자는 비즈니스 로직 구현에 집중, 디자이너는 화면 기능 구현에 집중
- 개발 후 재사용성과 유지관리가 훨씬 수월해진다.
JSP의 구성요소
JSP는 HTML과 CSS와 자바스크립트를 기반으로 JSP에서 제공하는 여러 가지 구성 요소들을 사용해 화면을 구현하는 기술이다. 주로 웹 프로그램의 화면 기능과 모델2 기반 MVC에서 뷰(view) 기능을 담당한다.
[ JSP의 구성 요소 ]
- HTML태그, CSS , 자바스크립트 코드
- JSP 기본 태그
- JSP 액션 태그
- 개발자가 직접만들거나 프레임워크에서 제공하는 커스텀 태그
JSP의 3단계 작업 과정
1. 변환 단계 : 컨테이너는 JSP 파일을 자바 파일로 변환
2. 컴파일 단계 : 컨테이너는 변환된 자바 파일을 클래스 파일로 컴파일
3. 실행 단계 : 컨테이너는 class 파일을 실행하여 그 결과를 브라우저로 전송해 출력한다.
브라우저에서 JSP파일을 요청하면 톰캣 컨테이너는 요청된 JSP파일을 자바 파일(.java)로 변환한다.
그리고 변환된 자바 파일을 클래스 파일(.class)로 컴파일 한다.
이 클래스 파일을 실행하여 브라우저로 결과값을 전송하면 jsp가 브라우저 화면에 표시된다.
즉, 브라우저로 전송되는 결과는 HTML, CSS, 자바스크립트로 변환된 파일이다.
JSP 페이지 구성 요소
jsp의 여러 구성요소는 다음과 같다
- 디렉티브 태그
- 스크립트 요소 : 주석문, 스크립트릿, 표현식, 선언식
- 표현언어
- 내장 객체(내장 변수)
- 액션 태그
- 커스텀 태그
디렉티브 태그
디렉티브 태그는 주로 jsp페이지에 대한 전반적인 설정 정보를 지정할 때 사용하는 태그
- 페이지 디렉티브 태그 : jsp 페이지의 전반적인 정보를 설정할 때 사용한다.
- 인클루드 디렉티브 태그 : 공통으로 사용하는 jsp페이지를 다른 jsp 페이지에 추가할 때 사용한다.
- 태그라이브 디렉티브 태그 : 개발자나 프레임워크에서 제공하는 태그를 사용할 때 사용한다.
페이지 디렉티브 태그 정의와 사용법
속성 | 기본값 | 설명 |
---|---|---|
info | 없음 | 페이지를 설명해 주는 문자열을 지정 |
language | java | jsp 페이지에서 사용할 언어를 지정 |
contentType | text/html | jsp 페이지 출력 형식을 지정 |
import | 없음 | jsp 페이지에서 다른 패키지의 클래스를 임포트할 때 지정 |
session | true | jsp 페이지에서 HttpSession 객체의 사용 여부를 지정 |
buffer | 8kb | jsp 페이지 출력시 사용할 버퍼 크기를 지정 |
autoFlush | true | jsp 페이지의 내용이 출력되기 전 버퍼가 다 채워질 경우 동작을 지정 |
errorPage | false | jsp 페이지 처리 도중 예외가 발생할 경우 예외 처리담당 jsp페이지 지정 |
isErrorPage | false | 현재 jsp 페이지가 예외처리담장 jsp페이지 인지 지정 |
pageEncoding | ISO-8859-1 | jsp페이지에서 사용하는 문자열 인코딩을 지정 |
isELIgnored | true | jsp 2.0 qjwjsdptj cnrkehls rlsmddmfh EL 사용 유무를 지정 |
페이지 디렉티브 태그
페이지 디렉티브 형식은 <%@page %>안에 속성과 값을 나열하면 된다.
<%@ page 속성1="값1" 속성2="값2" 속성3="값3".... %>
이클립스에서 jsp 페이지를 만들면 자동으로 페이지 디렉티브 태그가 생성된다.
<%@ page contentType="text/html; charset=utf-8"
import="java.util.*" // 임포트할 패키지
language="java" // 사용할 언어
session="true" // 페이지에서 HttpSession 객체의 사용여부
buffer="8kb" // buffer의 크기 jsp페이지의 출력 크기
autoflush="true" // buffer가 다 채워질 경우 동작을 지정
isThreadSafe="true" // 하나의 jsp페이지가 동시에 여러부라우저의 요청을 처리할수 있는지 여부
info="(shoppingMall..............)" // 페이지를 설명해주는 문자열
isErrorPage="false" // 현재 페이지가 에러 처리를 담당하는 페이지 인지
errorPage="" $>
인클루드 디렉티브 태그
JSP 페이지로 웹을 만들다 보면 제목이나 로고를 표시하는 상단,
메뉴를 표시하는 왼쪽단은 화면이 바뀌더라도 일정하게 유지되는 경우가 많다.
그래서 jsp에서는 공통으로 사용되는 jsp 페이지를 미리 만들어 놓고 다른 jsp페이지 요청시 인클루드 디렉티브 태그를 사용한다.
인클루드 디렉티브 태그란 여러 jsp 페이지에서 사용되는 공통 jsp페이지를 만든 후 다른 jsp 페이지에서 공통 jsp 페에지를 포함시켜 사용하는 기능을 말한다.
특징
- 재사용성이 높다
- JSP 페이지의 유지 관리가 쉽다.
인클루드 디렉티브 태그 형식
<%@ include file="공통기능.jsp" %>
사용예시
파일명 : 예시.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>제목</h1>
<%@ include file="iamge.jsp" %>
</body>
</html>
브라우저에 요청하게 되면 위의 예시.jsp 파일 안에 image.jsp가 포함되어 표시된다.
인클루드 디렉티브 태그를 이용해 JSP 페이지를 요청하면 포함되는 image.jsp의 자바코드가 위의 예시.jsp 파일과 합쳐져 브라우저로 전송되는 것이다.
'개발공부 > WEB' 카테고리의 다른 글
AJAX란? (0) | 2022.03.27 |
---|---|
@ReuquestParam (0) | 2022.03.26 |
Spring : JSP 스크립트 요소 기능(2) (0) | 2022.03.05 |
Spring : JSP 스크립트 요소 기능(1) (0) | 2022.03.03 |
Spring : 서블릿(servlet)이란? (0) | 2022.03.01 |