📍 4.1 지시어 개요
지시어 (Directive Tag)
- JSP 컨테이너에게 해당 페이지를 어떻게 처리해야 하는지 내용을 전달
- JSP 파일의 속성을 기술하는 JSP 문법
지시어의 종류 3가지
디렉티브 태그 | 형식 | 설명 |
page | <%@page ... %> | JSP 페이지에 대한 정보를 설정 |
include | <%@include ... %> | JSP 페이지의 특정 영역에 다른 문서를 포함 |
taglib | <%@taglib ... %> | JSP 페이지에서 사용할 태그 라이브러리를 설정 |
📍 4.2 page 지시어
<%@ page contentType="text/html;charset=UTF-8"
import="javax.sql.*, java.util.*" errorPage="error.jsp"%>
<%@ page import="java.util.*" %>
- 현재 JSP 페이지를 컨테이너에서 처리하는데 필요한 각종 속성을 기술하는 부분
- 보통 JSP 페이지 맨 앞에 위치함
page 지시어 한글 처리 부분
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
- pageEncoding 속성 : 컨테이너에서 처리할 JSP 파일 자체의 문자 인코딩 방식을 설정
- contentType의 charset 속성 : 브라우저가 받을 HTTP 응답 페이지의 무자 인코딩 방식을 설정
- language 속성 : JSP 페이지에서 사용할 프로그래밍 언어를 설정 (디폴트 값은 java)
import 속성
- JSP에서 사용할 자바 클래스 또는 패키지를 설정하는 데 사용
<%@ page import="java.sql.*,java.util.*" %>
<%@ page
import="java.sql.*,
java.util.*"
%>
session 속성
- 웹 브라우저와 웹 서버가 지속적인 클라이언트 인식을 위해 필요한 정보를 임시로 저장해 주는 방법
- 기본 값이 true이다. (디폴트로 세션을 사용한다는 의미)
<%@ page session="true" %>
buffer 속성
- JSP 페이지 데이터를 출력하기 위한 JspWriter
- 즉, out 내장 객체의 버퍼 크기를 지정
autoFlush 속성
- 버퍼를 자동으로 비울 것인지 지정하는 속성
- 버퍼 속성에 지정되어 있는 크기만큼 버퍼를 유지하고 있다가, 버퍼가 다 차면 자동으로 전송
<%@ page autoFlush="true" %>
isThreadSafe 속성
- JSP 페이지에서 멀티스테르의 동작을 제어하는 데 사용
<%@ page isThreadSafe ="true" %>
info 속성
- 해당 JSP에 대한 간단한 설명으로, 저작권이나 작성일 등 간단한 정보 기술에 사용
<%@ page info=“JSP Example" %>
errorPage, isErrorPage 속성
- JSP 파일의 오류 처리를 위한 설정
- errorPage는 현재 페이지에 오류 발생 시 호출할 페이지를 지정하는 속성
- isErrorPage는 오류 처리를 위한 전용 페이지임을 알리는 속성
<%@ page errorPage=“myErrorPage.jsp” %>
<%@ page isErrorPage=“true” %>
contentType 속성
- 현재 JSP 페이지를 클라이언트에서 처리하기 위한 콘텐츠 유형을 지정하는 부분
<%@ page contentType=“text/html” %>
pageEncoding 속성
- 컨테이너에서 처리할 JSP 파일 자체의 인코딩 설정
<%@ page pageEncoding=“UTF-8” %>
extends 속성
- JSP가 서블릿으로 변환될 때 상속받을 슈퍼클래스를 지정할 수 있는 속성
- 사용할 일이 없는 톰캣의 경우 org.apache.jasper.runtime.Http.JspBase 클래스를 상속받는다.
isELIgnored 속성
- JSP 페이지의 표현 언어 사용 여부를 설정
<%@ page isELIgnored=“true” %>
isScriptingEnabled 속성
- 스크립트 태그 사용 여부를 설정
<%@ page isScriptingEnabled=“false” %>
📍 4.3 include 지시어
- 여러 정보의 조합으로 한 화면을 구성할 때 유용하게 사용
- 기능 혹은 화면을 모듈화 할 수 있어 화면 구성이나 재활용에 용이
- 현재 JSP 파일에 다른 HTML이나 JSP 문서를 포함하기 위한 기능을 제공
<%@ include file=“포함할 파일_이름” %>
📍 4.4 taglib 지시어
- JSP 기능을 확장하기 위해 만든 커스텀 태그 라이브러리를 사용하기 위한 지시어
<%@ taglib uri=“/META-INF/mytag.tld” prefix=“mytag” %>
📍 4.5 액션 태그 개요
액션 태그
- 자바 빈즈 연동 및 동적 페이지 관리를 위한 기능 제공
<jsp:action_tag_name attribute=“value” />
액션 태그 주요 기능
주로 사용하는 액션은 userBean, get/setProperty이며, 자바 빈즈와의 연동을 지원
액션 태그 주요 기능 | 관련 태그 |
JSP 페이지 간 흐름 제어 | include, forward, param |
자바 빈즈 컴포넌트 상호작용 | userBean, setProperty, getProperty |
자바 애플릿 지원 | plugin |
📍 4.6 include 액션 태그
- 현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그
- 단순히 페이지를 포함하는 것뿐만 아니라, param 액션 태그를 사용하여 포함된 페이지로 파라미터를 전달하는 것도 가능
<jsp:include page=“footer.jsp”>
<jsp:param name=“email” value=“test@kpu.net” />
<jsp:param name=“tel” value=“000-777-0000” />
</jsp:include>
page 속성
- 현재 JSP 페이지 내에 포함할 내용을 가진 외부 파일명
flush 속성 (default = false)
- 설정한 외부 파일로 제어가 이동할 때 지금까지 출력 버퍼에 저장한 결과를 처리
include 액션 태그 vs. include 디렉티브 태그(지시어)
- include 액션 태그는 실행 시점에 해당 파일을 호출하며 결과를 포함 (동적인 페이지를 포함할 때)
- include 디렉티브 태그는 해당 파일을 포함시킨 후에 컴파일 (정적인 페이지를 호출할 때)
구분 | include 액션 태그 | include 디렉티브 태그 |
처리 시간 | 요청시 자원을 포함 | 번역시 자원을 포함 |
기능 | 기능 별도의 파일로 요청 처리 흐름을 이동 현재 페이지에 삽입 | 현재 페이지에 삽입 |
데이터 전 달 방법 | Request 기본 내장 객체나 param 액 션 태그를 이용하여 파라미터를 전달 | 페이지 내의 변수를 선언한 후 변수에 값을 저장 |
용도 | 화면 레이아웃의 일부분을 모듈화할 때 주로 사용 | 다수의 JSP 웹 페이지에서 공통으로 사용되 는 코드나 저작권과 같은 문장을 포함하는 경우에 사용 |
기타 | 동적 페이지에 사용 | 정적 페이지에 사용 |
📍 4.7 forward 액션 태그
- 요청 페이지를 다른 페이지로 전환할 때 사용
- MVC 패턴의 컨트롤러와 가티 특정 기능 수행 후 다른 페이지로 이동해야 하는 경우 유용하게 사용
- param 액션 태그를 사용하여 전환할 페이지로 파라미터를 전달하는 것이 가능
<jsp:forward page=“footer.jsp” />
<jsp:param name=“email” value=“test@tukorea.net” />
<jsp:param name=“tel” value=“000-777-0000” />
</jsp:forward>
📍 4.8 param 액션 태그
- 현재 JSP 페이지에서 다른 페이지에 정보를 전달하는 태그
- 단독으로 사용할 수 없기 때문에 <jsp:forward> 또는 <jsp:include> 태그 내부에 사용
<jsp:forward page=“포워딩할 파일이름” />
<jsp:param name=“매개변수명1” value=“매개변수값1” />
<jsp:param name=“매개변수명2” value=“매개변수값2” />
</jsp:forward>
📍 4.9 자바 빈즈와 액션 태그
자바 빈즈
- JSP와 연동하기 위해 만들어진 컴포넌트 클래스
- 동적 콘텐츠 개발을 위해 자바 클래스로 로직을 작성하는 방법
- 컨테이너에 위치하며, JSP에 데이터베이스 연동 등 프로그램 요소를 모듈화 할 수 있도록 도와준다.
자바 빈즈 작성 규칙
- 자바 클래스를 java.io.Serializable 인터페이스를 구현해야 한다. (생략 가능)
- 인수가 없는 기본 생성자가 있어야 한다.
- 모든 멤버 변수인 프로퍼티는 private 접근 지정자로 설정해야 한다.
- 모든 멤버 변수인 프로퍼티는 getter/sertter 메서드가 존재해야 한다.
자바 빈즈 주요 액션 태그
액션 태그 | 설명 |
userBean | JSP에서 빈즈 클래스를 사용하기 위한 구문 |
setProperty | JSP에서 빈즈 클래스의 멤버 변수로 값을 저장하기 위한 구문 |
getProperty | JSP에서 빈즈 클래스의 멤버 변수로 값을 가져오기 위한 구문 |
1. userBean 액션 태그
- JSP 페이지에서 자바 빈즈를 사용하기 위해 실제 자바 클래스를 선언하고 초기화
<jsp:useBean id=“자바빈즈 식별이름” class=“자바빈즈 이름” scope=“범위” />
<jsp:useBean id="date" class="java.util.Date"/>
속성 | 설명 |
id | 자바 빈즈를 식별하기 위한 이름 |
class | 패키지 이름을 포함하는 자바빈즈 이름 |
scope | 자바 빈즈가 저장되는 영역을 설정 |
2. setProperty 액션 태그
- 프로퍼티 값 저장하기
<jsp:setProperty name=“자바빈즈 식별이름” property=“프로퍼티 이름” value=“값” />
속성 | 설명 |
name | name useBean 태그에서 id 속성 값으로 설정된 자바빈즈를 식별하기 위한 이름 |
property | 자바빈즈의 프로퍼티 이름. 프로퍼티 이름이 ‘*’을 사용하면 모든 요청 파라미 터가 자바 빈즈프로퍼티의 Setter()메소드에 전달됨을 의미 |
value | 변경할 자바빈즈의 프로퍼티 값. 프로퍼티 값이 null이거나 존재하지 않는 요 청 파리미터인 경우에는 SetProperty 액션 태그가 무시됨 |
param | form을 통해 전달된 요청 파라미터의 이름. param과 value를 동시에 모두 사용할 수 없으며 하나를 선택해서 사용 가능 |
폼 페이지를 통해 입력 데이터를 전달할 때, 자바 빈즈에 저장하는 방식
- 요청 파라미터 이름과 자바빈즈 프로퍼티 이름이 일치하는 경우
<form name=form1 action=“/jspbook/CalcController" method=post>
<input type="text" NAME="num1" width=200 size="5">
</form>
<jsp:useBean id="calc" class="jspbook.ch02.CalcBean"/>
<jsp:setProperty name="calc" property="num1" />
3. getProperty 액션 태그
- 프로퍼티 값 가져오기
<jsp:getProperty name=“자바빈즈 식별이름” property=“프로퍼티 이름” value=“값” />
<p> 계산 결과 : <jsp;getProperty name=“calc” property=“result” />
속성 | 설명 |
name | userBean 태그에서 id 속성 값 |
property | 자바 빈즈의 프로퍼티 이름 |
'CS > 웹서비스' 카테고리의 다른 글
[웹서비스] 서블릿 구조 (0) | 2023.09.30 |
---|---|
[웹서비스] JSP 기본 구조 (0) | 2023.09.29 |
[웹서비스] 웹 기술 환경에 대한 이해 (0) | 2023.09.29 |