[JSP] 태그, 지시자
JSP vs 서블릿
* 서블릿은
- Java 코드로 만들어진 겁니다.
- Java코드에는 HTML 코드가 없습니다. 그래서 HTML 코드를 출력하기 위해 PrintWriter 객체를 사용하였습니다.
- 즉 Java 코드 안 에 HTML 이 있는 형태
- MVC 모델에선 (주로) Controller의 역할을 합니다.
* JSP 는
- HTML 코드 내에 Java 코드가 있는 형태 (스크립트 태그의 형태로)
- MVC 모델에선 View의 역할을 합니다
- 내부적으로 JSP는 서블릿으로 변환된 뒤에 컴파일, 실행됨.
<% ~ %> 태그 안에 Java코드 삽입 가능
즉, Java 코드는 ‘서버’ 쪽에서 처리가 된 뒤에 결과물만 클라이언트에 보이는 겁니다
* JSP 의 태그 종류
1. 지시자 (Directive) 태그 <%@ %>
: 페이지에 대한 정보 나타내는 태그
2. 스크립팅 요소 태그 (스크립트릿, 익스프레션, 선언부)
: 스크립트릿 <% %> 자바코드
: 익스프레션식 <%= %> 결과값(평가값)
: 선언부 <%! %> 변수나 메소드 선언
3. 주석태그
<%-- --%>
4. 액션태그 : JSP에 어떤 동작을 지시, 자바빈을 연결해서 사용함
형식: <prefix:action> … </prefix:action>
- 표준액션 예) <jsp:include> .. </jsp:include>
- 커스텀액션 예) <c: set var="i" value="0"/> .. </c:set>
* ‘지시자 Directive 태그’ 의 3가지 종류
1. page 지시자 : 페이지의 속성
2. include 지시자
3. taglib (태그 라이브러리) 지시자
* Page 지시자의 속성들
- info 속성 : 페이지를 설명해주는 문자열 <%@ page info = “copyright of ~” %>
- languege : jsp 에서 사용할 언어 지정 <%@ page language=”java” %>
- contentType : jsp페이지내용을 어떻게 출력할지 브라우저에 알려주는 역할, 문자셋도 알려줌
<%@ page contentType="text/html; charset=UTF-8" %>
- extends 속성 : jsp 파일이 서블릿으로 변환되는 시점에서 자신이 상속받을 클래스를 지정 (일반적으로 jsp 컨테이너가 적절하게 상속시켜주기 때문에, 거의 사용할 일은 없음)
- import 속성 : 패키지를 불러옴. 자바의 import 와 동일하다고 봐도 됨.
<%@ page import=”java.util.*, java.sql.*” %>
<%@ page import=”java.io.*” %>
** JSP 가 기본으로 import 하는 패키지 : 서블릿 관련 패키지 javax.servlet javax.servlet.jsp javax.servlet.http
- session 속성 : HttpSession 속성의 사용여부 ( true / false)
<%@ page session = “false” %>
- buffer 속성 : jsp 의 출력 크기를 kb 단위로 지정, 기본값은 8kb.
- autoflush 속성 : buffer 가 다 차있으면 자동적으로 버퍼를 지울지 여부 설정 : 기본값은 true
- isThreadSafe 속성: 거의 사용 안함. 여러 요청을 동시에 처리할지 여부 (jsp 페이지 차원에서!) true / false
- errorPage 속성: jsp 처리도중 발생한 예외처리를 위한 페이지 지정
- isErrorPage 속성 : 에러처리 담당하는 페이지 인지 여부 true / false
- pageEncoding 속성: 현재 페이지의 인코딩 (일반적으로 contentType 의 charset 과 동일)
* include 지시자
- 현재의 jsp 페이지에 다른 jsp 페이지나 html 파일을 불러와서 현재페이지의 일부로 사용.
- 불러오는 대상은 파일의 형태. file 속성으로 지정.
ex) <%@ include file="b/aaa.jsp" %>


* taglib 지시자
‘액션’ 을 사용할때 필요한 지시자. (나중에 배움)
참고로, 액션을 사용할때는
1. 기본적으로 사용할 수도 있고,
2. 액션이 속한 라이브러리를 설치해야만 사용할수 있기도 합니다.
taglib 지시자는 바로 이 경우 필요합니다
<%@ taglib prefix=”c” uri=”http://oracle.com/jsp/jstl/core” %>
* 지시자 (Directive) 태그 <%@ .. %>
- page 지시자 <%@ page .. %>
info , contentType, pageEncoding, import, errorPage, isErrorPage, … ....
- include 지시자 <%@ include file=” .. “ %>
- taglib (태그 라이브러리) 지시자 <%@ taglib prefix=”c” .. %>
* 스크립팅 요소 태그
- 스크립트릿 <% .. %> : 자바코드
- 익스프레션식 <%= .. %> : 결과값, 평가값
- 선언부 <%! .. %> : 변수, 메소드 선언
* 주석태그 <%-- --%>
* 액션태그
- 형식: <prefix:action> … </prefix:action>
- 표준액션 <jsp:include> .. </jsp:include>
- 커스텀액션 예) <c: set var="i" value="0"/>