
클래스명_jsp.java 파일로 변환.클래스명_jsp.class로 만들고 이를 웹서버로 전달함.JSP 페이지를 컴파일한 *.class 파일에는 _jspInit(), _jspService(), _jspDestroy() 메서드가 존재한다.
JSP 생성부터 파괴까지 아래의 과정을 거친다.

번역단계 : JSP 컨테이너가 JSP 소스 파일을 서블릿 클래스로 변환.
컴파일단계 : 번역 단계에서 생성된 서블릿 클래스를 컴파일해준다.
로딩 및 초기화단계 : 컴파일 된 서블릿 클래스를 로딩하고 클래스의 인스턴스를 작성한다. 그 다음 컨테이너에서 서블릿의 init() 메서드를 호출하여 인스턴스를 초기화 한다. 초기화는 한번만 실행된다.
실행단계 : 각 클라이언트의 요청에 대해 JSP 컨테이너가 요청 및 응답 객체를 전달하는 service() 메서드를 호출한다. 이 단계는 JSP 생명 주기가 끝날 때까지 모든 클라이언트의 요청에 대해 상호 작용한다.
소멸단계 : JSP 컨테이너는 실행되고 있는 JSP를 destroy() 메서드를 사용하여 제거한다. 이 메서드는 데이터베이스 연결 해제 또는 열려 있는 파일 닫기 등을 수행 시 사용된다.
_jspInit() & _jspDestory() 메서드는 컨테이너가 기본 기능을 제공하기 때문에 오버라이딩이 선택사항이지만 기본적으로 _jspService() 메서드는 컨테이너가 추가하기 때문에 오버라이딩이 불가하다.
<%! ... %> 자바 전역변수나 메서드를 정의하는데 사용.<% ... %> 자바 코드를 작성하는데 사용.<%= ... %> 변수, 계산식, 메서드 호출 결과를 문자열 형태로 출력하는데 사용.<%@ ... %>을 사용.<%@ page ... %><%@ include %><%@ taglib %>language : JSP 페이지에서 사용할 프로그래밍 언어 설정(default : java)contentType : JSP 페이지가 생성할 문서의 콘텐츠 유형을 설정 (default : text/html)pageEncoding : JSP 페이지의 문자 인코딩 설정(default : ISO-8859-1)import : JSP 페이지에서 사용할 자바 클래스 설정session : JSP 페이지의 세션 사용여부 설정(default : true)buffer : JSP 페이지의 출력 버퍼 크기 설정(default : 8KByte)autoFlush : 다종으로 출력 버퍼를 비우는 것을 제어(default :true)isThreadSafe : JSP 페이지의 멀티스레드 허용 여부를 설정(default : true)info : JSP 페이지에 대한 설명을 설정.errorPage : JSP 페이지에 오류가 발생 시 보여줄 오류페이지 설정isErrorPage : 현재 JSP 페이지가 오류 페이지인지 여부 설정(default : false)isELIgnored : JSP 페이지의 EL 지원 여부 설정.(default : true)isScriptingEnabled : JSP 페이지의 스크립트 태그 사용 여부 설정<%@ include file="파일명" %><%@ taglib prefix="태그 식별자" uri="경로" %>
uri 값은 JSP 컨테이너에 사용자가 정의한 태그 라이브러리의 위치를 알려준다.
<!-- --> : HTML 주석, 프로그래밍에 반영되지는 않지만 웹브라우저에 명시되는 주석.<%-- --> : JSP 주석, 어디에도 노출되지 않는 주석.<jsp: ... />을 사용.forward : 현재 JSP 페이지에서 다른 페이지로 이동과 같은 페이지 흐름을 제어.include : 외부 페이지의 내용을 포함.useBean : JSP 페이지에 빈 객체를 설정.setProperty : 빈 객체의 프로퍼티 값 설정.getProperty : 빈 객체의 프로퍼티 값 조회.param : 태그에 인자를 추가.element : 동적 XML 요소 설정.attribute : 동적으로 정의된 XML 요소의 몸체를 설정.body : 동적으로 정의된 XML 요소의 몸체를 설정.text : JSP 페이지 및 문서에서 템플릿 텍스트를 작성.JSP 컨테이너는 JSP 페이지에서 forward 액션태그를 만나면 그 전까지 출력 버퍼에 저장되어 있던 모든 내용을 삭제하고 forward 액션태그에 설정된 페이지로 프로그램 제어가 이동.
forward와 redirect 차이점
- redirect와 forward는 페이지가 전환된다는 점에서 비슷한 역할을 한다. 하지만 페이지를 전환하는 주체가 다르다는 점에 차이가 있다.
redirect란?
forward란?
<jsp:forward page="파일명"/>
include 액션태그는 include 디렉티브 태그처럼 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그.
<jsp:include page="파일명" flush="false"/>
flush 속성 값은 설정한 외부 파일로 제어가 이동할 때 현재 JSP페이지가 지금까지 출력버퍼에 저장한 결과를 처리한다. 기본값은 false이고, true로 설정하면 외부 파일로 제어가 이동할 때 현재 JSP 페이지가 지금까지 출력 버퍼에 저장된 내용을 웹 브라우저에 출력하고 출력 버퍼를 비운다.
include 액션 태그는 forward 액션 태그처럼 외부 파일을 포함한다는 점이 비슷하지만 포함된 외부 파일이 실행된 후 현재 JSP 페이지로 제어를 반환한다는 것이 가장 큰 차이점이다.
JSP 컨테이너는 현재 JSP 페이지에서 include 액션 태그를 만나면 include 액션태그에 설정된 외부 파일의 실행 내용을 현재 JSP 페이지의 출력 버퍼에 추가 저장되어 출력함.
- 즉, include 액션 태그 이후에 작성된 코드는 정상 출력된다.
flush 속성값
일반적으로 flush 속성은 false로 지정하는 것이 좋다.
true로 지정 시 일단 출력 버퍼를 웹브라우저에 전송하는데 이때 헤더 정보도 같이 전송되며, 웹브라우저에 전송된 다음 헤더 정보를 추가해도 결과가 페이지에 반영되지 않는다.
param 액션 태그는 현재 JSP 페이지에서 다른 페이지에 정보를 전달하는 태그.
param 태그는 단독으로 사용이 불가능하며, jsp:forward 또는 jsp:include 태그의 내부에 사용함.
여러 정보 전달 시 다중의 param 액션 태그 사용이 가능하다.
전달한 정보는 request 내장 객체의 getParameter("name") 메서드로 접근이 가능하다.
자바 클래스를 빈 객체로 생성하여 사용하는 태그.
자바 빈 객체는 일반적으로 클래스 내 멤버변수인 프로퍼티의 데이터를 조회하거나 저장하는 메서드로 구성되어 있다.
jsp:useBean id="식별명" class="패키지명을 포함한 클래스명" scope="범위"
자바 빈 객체에 접근하여 멤버변수의 값을 저장하는 태그.
<jsp:setProperty name="빈 객체 식별명" property="프로퍼티명" value="값" />
자바 빈 객체에 접근하여 멤버변수의 값을 조회하는 태그.
<jsp:getProperty name=“빈 객체 식별명” property=“프로퍼티명” />
Maven과 Gradle
-
pon.xml 파일에 작성함.빌드 도구 사용하는 주요 목적
1. 컴파일 / 실행 설정과 라이브러리 설정
Maven 사용 방법
- 프로젝트 → [Configure] → [Convert to Maven project]
<dependencies> </dependencies> 태그 안에 붙여넣기.<%@ taglib prefix="태그 식별자" uri="http://java.sun.com/jsp/jstl/사용할 라이브러리명" %><c:set> : 변수 선언과 초기화 기능을하는 커스텀 액션.<c:out> : 출력을 위한 커스텀 액션.<c:if> : 자바 if문과 같은 역할을 하는 커스텀 액션.<c:forEach> : 자바 for문과 같은 역할을 하는 커스텀 액션.<forTokens> : 자바의 java.util.StringTokenizer 클래스와 for문을 합친 기능을 제공.varStatus 관련 속성
status.index : 0부터 시작하는 루프의 인덱스 입니다.
status.count : 현재 몇번째 루프인지 값입니다. 1부터 시작합니다.
status.current : 현재 아이템입니다. var 속성의 값과 같습니다.
status.first : 현재가 첫번째 루프이면 참입니다.
status.last : 현재가 마지막 루프이면 참입니다.
status.begin : begin 속성을 사용했을 경우 그 값이 나옵니다.
status.end : end 속성을 사용했을 경우 그 값이 나옵니다.
status.step : step 속성을 사용했을 경우 그 값이 나옵니다.