JSP는 크게 주석(Comment), JSP 지시어(Directive), 스크립트 요소(Scripting Elements), 액션 태그(Action Tag)의 4가지 기본 요소로 구분한다.
개발자가 개발한 코드를 다른 개발자가 디버깅 하거나 수정할 때 이해하기 쉽도록 코드의 해설을
적어 놓은 글을 뜻한다. (프로그램의 실행에는 영향을 미치지 않는다)
<!--HTML 주석입니다.-->
숨겨진 주석(Hidden Comment)
로 JSP 파일 내에서 완전히 무시되어 처리되므로 서버 상에서 컴파일 되지 않으며 클라이언트에 전송되지 않는다.<%--JSP 주석입니다.%-->
<%
/* 여러 줄을 사용할 때의
자바 주석입니다. */
%>
<% // 한줄을 사용할 때의 자바 주석입니다. %>
JSP 파일 내에서 JSP를 실행할 컨테이너에서 해당 페이지를 어떻게 처리할 것인가에 대한 설정 정보를 지정해 주는 데 사용된다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.Enumeration"%>
<%@ page language="java" %>
extends
속성이다. <%@ page extends="javax.servlet.jsp.HttpJspBase" %>
<%@ page import="java.io.*,java.util.ArrayList" %>
Stateless
Stateless
특성으로 커넥션을 매번 새로 생성하기 때문에 동일한 클라이언트에 대해 정보를 유지할 필요가 있는 경우 (로그인 상태 유지, 장바구니 유지 등) 다른 클라이언트와 현재 정보가 유지되어야 할 클라이언트를 구별할 특별한 방법이 사용된다 = 세션관리(Session Management)
세션관리(Session Management)
에 의해 클라이언트 정보가 유지되도록 만들어진 가상의 커넥션(Virtual Connection) = HTTP 세션(HTTP Session)
이라고 한다.<%@ page session="true" %>
버퍼의 크기
를 지정하는 속성이다. "none"
으로 설정할 경우 응답을 생성할 때 버퍼를 사용하지 않고 바로 클라이언트에 응답을 전송한다.<%@ page autoFlush="true" %>
"true"
로, 버퍼가 다 채워지면 클라이언트에 전송하고 버퍼를 비운다."false"
로 하면 버퍼가 다 채워졌을 경우 버퍼를 전송하는 것이 아니라 Exception
을 발생시킨다.<%@ page autoFlush="true" %>
다중 스레드(Multiple Thread)
를 기반으로 실행된다.JSP 컨테이너
에 의해 파싱되어 서블릿 인스턴스
가 생성되고, 사용자의 요청 각각에 대한 스레드
가 하나씩 생성되어 그 스레드가 사용자의 요청을 처리하는 방식이다.동시 접근
이 이루어지면 그 데이터의 값이 의도되지 않은 값으로 변경될 경우 다중 스레드에 의한 동시 접근을 차단 할 필요가 있다.isThreadSafe
속성을 "true"로 지정하면 JSP 파일이 실행되더라도 하나에 스레드에 의한 servide() 메소드 실행이 완전히 끝날 때까지 다른 스레드는 기다리게 된다.<%@ page isThreadSafe="true" %>
<%@ page info="이 velog는 최우정의 velog입니다." %>
예외(Exception)
가 발생했을 때 해당 페이지에서 직접 처리하지 않고, 에러 페이지를 지정해 지정된 에러 페이지에서 예외를 처리하도록 할 때 사용하는 속성이다.<%@ page errorPage="error/error.jsp" %>
MIME
형식으로 되어 있는지를 지정한다.MIME(Multipurpose Internet Mail Extension)
란 인터넷을 통해 문서를 주고 받을 때 사용되는 문서 형식을 정의해 놓은 것으로 단순한 ASCII 파일 뿐 아니라 이미지, 오디오, 비디오 등 멀티미디어 형식의 문서도 원활히 주고 받을 수 있도록 text/html, image/gif, video/avi 등 여러 가지 타입을 제공한다.<%@ page contentType="text/html"%>
<%@ page contentType="text/html; charset=UTF-8" %>
예외(Exception)
를 처리할 페이지일 때 지정한다."false"
이고, 특정한 JSP 페이지의 예외를 처리할 JSP 에러 페이지를 만들었다면 다음처럼 그 에러 페이지의 isErrorPage 속성을 "true"로 지정한다.Exception
객체를 사용할 수 없다.<%@ page isErrorPage="true" %>
<%@ page pageEncoding="UTF-8" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib url=http://taglib.com/sampleURI prefix-"samplePrefix" %>
자바 코드
에서 말하는 멤버 변수와 메소드를 선언하기 위해 사용된다.<%!
private String str = "JSP 스터디"
public String checkStr() {
if(str == null) return "no";
else return "ok";
}
%>
<% ... %>
로 표현되는 스클립틀릿 태그를 사용하여 구분할 수 있다. (out 객체를 사용하지 않고 쉽게 HTML 응갑을 만들어 낼 수 있다.)<% 문장1; %>
<%
문장 2; 문장 3; 문장 4; ...
%>
<%=변수 %>
<%=리턴값이 있는 메소드 %>
<%=수식 (변수 또는 리턴값이 있는 메소드를 포함할 수 있음) %>
(<%= ...%>)
내 구문 전체의 결과 값은 JSP 파일이 파싱될 때 출력 객체의 print() 메소드를 통해 자동으로 문자열 (String) 형식으로 변환되어 출력된다.