JSP(JavaServer Pages)

임유진·2025년 7월 24일

목록 보기
4/7
post-thumbnail
  • Java 기반의 서버 사이드 스크립트 언어. HTML 내에 Java 코드를 삽입하여 동적 웹 페이지를 생성할 수 있는 기술
  • Servlet으로 UI를 처리하는 데 어려움이 있어, HTML과 Java를 혼합해서 효율적으로 화면을 구성하기 위해 등장
  • 웹 서버(Tomcat 등)에서 실행되며, 최종적으로는 Servlet으로 변환되어 동작
  • 특징

    • 클라이언트(브라우저)에 보여지는 동적 웹 콘텐츠 생성
    • Servlet보다 코드 가독성이 높고 유지보수에 유리
    • 표현 논리(View)는 JSP, 비즈니스 로직은 Servlet/Java Class로 분리 권장

JSP 5가지 기본 스크립팅 태그

태그 종류문법역할 및 설명
선언자(declaration)<%! ... %>멤버 변수 및 메소드 선언 (서블릿 클래스의 멤버 필드로 변환됨)
표현식(expression)<%= ... %>출력용 태그out.print()로 변환되어 HTML에 출력됨
스크립틀릿(scriptlet)<% ... %>Java 코드 실행 블록, 제어문이나 로직 처리에 사용
지시자(directive)<%@ ... %>JSP 파일의 설정 정보를 정의, 예: 인코딩, import 등
주석(comment)<%-- ... --%>JSP 주석, 서버에서 무시되며 클라이언트에 노출되지 않음 (HTML 주석과는 다름)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%-- 선언자: 멤버 변수 및 메소드 정의 --%>
<%! 
   String name = "fisa";
   public String getName() {
       return name;
   }
%>

<!DOCTYPE html>
<html>
<body>
   1. 표현식 출력: <%= name %> <br>
   2. 메소드 호출 출력: <%= getName() %> <br>
   
   3. 스크립틀릿 코드 실행: 
   <% 
       out.println("Hello, " + name);
   %>
</body>
</html>

JSP 내장 객체 (Implicit Objects)

JSP에서 별도 선언 없이 사용할 수 있는 9개의 내장 객체가 존재

객체명설명
request클라이언트 요청 관련 정보 (파라미터, 헤더 등)
response응답 관련 설정 (헤더, 인코딩 등)
out출력 스트림 (JSP에서 HTML 출력할 때 사용)
session사용자 세션 관리 객체
application웹 어플리케이션 전역 컨텍스트
configJSP 설정 정보
pageContextJSP 페이지 컨텍스트. 다른 내장 객체에 접근 가능
page현재 JSP 페이지 객체 (this와 유사)
exception에러 페이지에서 예외 정보를 다룰 때 사용 (isErrorPage="true"인 경우만 사용 가능)

MVC 패턴에서 JSP의 역할

MVC 구조 요약

구성요소역할사용 기술 예시
Model비즈니스 로직, DB 처리Java Class, DAO, DTO
View사용자에게 보여지는 화면JSP (+ JSTL + EL)
Controller요청 처리, 흐름 제어Servlet, Spring Controller

JSP의 역할

  • View만 담당
  • Java 로직을 최소화하고, JSTL + EL로 데이터 표현에 집중

JSTL (JSP Standard Tag Library)

  • JSP에서 반복문, 조건문 등을 태그로 처리할 수 있게 해주는 표준 태그 라이브러리
  • EL과 함께 사용하는 것이 일반적

주요 태그

태그예시설명
c:out<c:out value="${name}" />EL 값 출력 (<%= %> 대체)
c:if<c:if test="${score > 80}">합격</c:if>조건문
c:choose<c:choose> <c:when> ... <c:otherwise> ... </c:choose>다중 조건 분기
c:forEach<c:forEach var="item" items="${list}">반복문
c:set<c:set var="name" value="홍길동" />변수 설정

JSTL 사용을 위한 선언

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

EL (Expression Language)

  • JSP에서 Java 코드를 최소화하고 데이터를 출력할 수 있는 표현 언어
  • ${} 문법으로 request, session, application 범위의 데이터를 조회 가능
  • 연산, 조건, 배열 접근, 객체 속성 접근 등도 가능

주요 기능

기능예시설명
출력${name}name 값을 출력
배열 접근${arr[0]}인덱스로 배열 접근
객체 접근${user.name}getter를 통해 속성 출력
연산${10 + 5}산술 연산 가능
비교/논리연산${score > 60}조건문에서 사용 가능
범위 지정${requestScope.name}명시적으로 범위 지정 가능
  • 장점
    • <%= %> 대신 사용할 수 있어 가독성이 향상
    • Java 코드를 제거하여 유지보수가 쉬움

JSP + EL + JSTL 실사용 예제

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%
   // 데이터 셋팅
   request.setAttribute("name", "유진");
   request.setAttribute("scores", new int[]{85, 92, 78});
%>

<!DOCTYPE html>
<html>
<head><title>JSP + EL + JSTL 예제</title></head>
<body>

<h3>EL 출력</h3>
<p>이름: ${name}</p>

<h3>JSTL 반복문</h3>
<ul>
   <c:forEach var="score" items="${scores}">
       <li>점수: ${score}</li>
   </c:forEach>
</ul>

<h3>JSTL 조건문</h3>
<c:if test="${scores[0] >= 90}">
   <p>첫 번째 점수는 우수입니다!</p>
</c:if>

</body>
</html>

총정리표

항목설명
JSPHTML과 Java를 함께 사용하여 동적 웹페이지를 생성하는 기술
스크립팅 태그<%! %>: 선언자
<%= %>: 출력
<% %>: 자바 코드 실행
<%@ %>: 지시자
<%-- --%>: 주석
JSP 내장 객체request, response, out, session 등 9가지
별도 선언 없이 JSP 페이지에서 사용 가능
JSTL조건문, 반복문 등을 태그로 구현할 수 있는 JSP 표준 태그 라이브러리
EL (Expression Language)${} 문법으로 request, session 등의 데이터를 출력
자바 코드 없이 간결하게 표현
추천 개발 방식자바 로직 최소화 + EL + JSTL 사용 권장
View는 JSP, 로직은 Servlet/Controller로 분리
profile
말하는 고구마

0개의 댓글