1. JSP(JavaServer Pages) 기초
JSP는 서블릿과 동일하게 웹 애플리케이션에서 동적 컨텐츠를 만들기 위해 제공되는 기술이다. 하지만 중요한 것은 JSP가 내부적으로 서블릿으로 변환되어 실행된다는 것이다.
서블릿의 단점
서블릿은 많은 장점에도 불구하고 다음과 같은 두드러지는 단점도 있다.
정해진 규칙을 지켜서 작성해야 한다. (import, public 클래스, HttpServlet 상속, 기본 생성자, 콜백 메소드 오버라이딩) web.xml 파일이나 어노테이션을 통해 요청 url에 대한 매핑을 설정해야 한다. 소스를 수정한 후에는 반드시 재컴파일을 하고 리로딩될 때까지 기다려야 한다.
2. 스크립트 기반 태그
주석문(Comment) <%-- --%> 특정 코드를 서블릿 변환에서 제외시킨다. 지시자(Directive) <%@ %> 서블릿 변환 과정에서 추가할 페이지 정보를 설정한다. 스크립트릿(Scriptlet) <% %> 실행될 자바 코드를 작성한다. 표현식(Expression) <%= %> 브라우저에 출력할 데이터를 설정한다. 선언문(Declaration) <%! %> 변환된 서블릿의 멤버변수와 메소드를 선언한다.
1) 주석문(Commont)
HTML 주석은 JSP 파일이 서블릿으로 변환될 때 서블릿에 포함된다. 하지만 JSP 주석은 서블릿으로 변환될 때 포함되지 않는다. <!-- HTML 주석입니다. --> <%-- JSP 주석입니다. --%>
2) 지시자(Directive)
지시자는 JSP가 서블릿 클래스로 변환될 때 어떤 내용을 반영할지 지시할 때 사용한다.
page <%@ page %> 서블릿 변환 과정에서 추가할 페이지 정보를 설정한다. include <%@ include %> 다른 JSP의 코드를 특정 위치에 포함시킨다. taglib <%@ taglib %> XML 기반의 태그를 사용할 수 있도록 선언한다.
page 지시자
isErrorPage 현재 페이지가 에러 처리 전용 페이지임을 설정한다. errorPage 에러가 발생했을 때 에러를 처리할 페이지를 지정한다. import 변환된 서블릿 클래스에서 import할 클래스를 설정한다. session 현재 페이지에서 세션 객체를 기본적으로 사용할 것인지 설정한다.
<%@ page contentType="text/html; charset=UTF-8"
isErrorPage="true"
import="java.util.Date"%>
<%@ page contentType="text/html; charset=UTF-8"
errorPage="errors/boardError.jsp"
session="true"%>
include 지시자
Include 지시자는 다른 JSP 실행 결과를 포함시기 위해 사용한다. 일반적인 웹 애플리케이션의 화면은 다음과 같이 Header, Contents, Footer로 구성된다.
<%@ include file="../layout/header.jsp" %>
<%@ include file="../layout/footer.jsp" %>
3) 스크립트릿(Scriptlet)
스크립트릿은 익스프레션과 더불어 JSP에서 가장 많이 사용하는 스크립트 기반 태그로서 HTML 태그 중심의 JSP가 동적 파일이 될 수 있도록 만들어주는 핵심 태그다.
<%
// 실행할 자바 코드
%>
4) 익스프레션(Expression)
익스프레션을 이용하면 변수에 저장된 값이나 메소드가 리턴한 값을 브라우저 특정 위치에 출력할 수 있다.
<%= 변수 %> <%= 메소드호출 %>
<% for(BoardVO board : boardList) { %>
<tr>
<td><%= board.getSeq() %></td>
<td align="left"><a href="getBoard.jsp"><%= board.getTitle() %></a></td>
<td><%= board.getWriter() %></td>
<td><%= board.getRegDate() %></td>
<td><%= board.getCnt() %></td>
</tr>
<% } %>
'프레임워크 > JSP' 카테고리의 다른 글
JSP 내장객체 (0) | 2025.01.18 |
---|---|
JSP 세션, 쿠키 (0) | 2025.01.18 |
JSTL 태그 라이브러리 (0) | 2025.01.18 |
댓글