[JSP] JSP 코드 블록

JSP 프로그래밍이란?

JSP(JavaServerPage) 는 HTML 코드에 Java 코드를 넣어 동적인 페이지를 생성하는 것이다. 여러 마디 말 보다 한 가지 예가 더 직관적으로 이해를 도울 때가 있다.

// .jsp file
<% for(int i = 0; i < 10;i++) { %>
    <tr>
        <td><%= i+1 %></td>
        <td>하나씩 늘어나는 </td>
    </tr>
<% } %>

<% %> 로 감싸지는 영역 내부는 모두 자바 코드로 인식된다. <% %> 내부는 변수 사용이 가능하기 때문에 위 코드는 for문 안에서 테이블 10개를 그리게 된다.

이런 코드 블록은 아래 네 가지가 존재한다.

  • <% %>: 한 줄에 자바 코드 사용할 수 있으나 줄바꿈 불가
  • <%= %>: out.print() 없이 그대로 변수 출력 가능
  • <%! %>: 여러 줄에 걸쳐 자바 코드 작성 가능
  • <%@ %>: 다른 설정자들보다 가장 먼저 동작함

가장 마지막 코드블럭의 예시로 아래와 같은 jsp 파일 지시자 가 사용된다. 데이터베이스와 연동하기 위한 설정을 미리 수행하기 위해 .jsp 상단에 명시한 내용이다.

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%
String url = "jdbc:oracle:thin:@localhost:1521/xepdb1";
String sql = "SELECT * FROM NOTICE";

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url, "id", "password");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
%>

/*
...
... html code contents
...
*/

<% 
rs.close();
st.close();
con.close();
%>

Jasper 는 이렇게 만든 HTML 코드를 서블릿으로 변환해주는 엔진이다.

.html 확장자 대신 .jsp 로 작성된 문서를 이 Jasper 가 해독해 명령에 맞는 동적 웹페이지를 생성한다. 즉, 여러 개의 out.write() 로 직접 표현했어야 할 웹 문서를 Jasper 가 대신 만들어주는 셈.

참고로 위 코드를 삽입해 처음 데이터베이스 연결 설정을 시도하면 HTTP 상태 500 오류가 발생한다. ORACLE JDBC 드라이버 가 없기 때문이다.

WEB-INF 내부 LIB 폴더에 필요한 라이브러리 파일을 복사해 붙여 넣어 문제를 해결할 수 있다. 실제로 웹 어플리케이션 배포 시 해당 폴더에 외부 라이브러리들을 담아 빌드한다고 얘기한다.

Updated:

Leave a comment