본문 바로가기
☕ Java 웹 프로그래밍/Servlet & JSP

[Servlet&JSP] JSP 시작하기 (Jasper를 이용한 서블릿 프로그래밍)

by 일단연 2023. 6. 7.

* 본 글은 [뉴렉처]의 Servlet&JSP 프로그래밍 강의를 듣고 정리한 글입니다.

 

2020 Servlet&JSP 프로그래밍

 

www.youtube.com

 

 JSP 시작하기 (Jasper를 이용한 서블릿 프로그래밍) 

 

  • HTML 출력이 많은 결과 페이지를 클라이언트에 응답할 때의 화면

 

  • 서블릿을 통해 HTML을 출력하려면 HTML 코드 모든 줄에 일일이 out.write( )를 붙여줘야 함 > 번거로움

 

  • But, Jasper를 사용하면 위의 코드를 한 줄 한 줄 out.write에 넣어서 서블릿으로 만들어줌

 

Jasper

  • 개념
    • Tomcat의 JSP 엔진
    • JSP 파일을 Servlet으로 컴파일하는 기능
      • Jasper는 JSP가 요구될 때(사용자가 jsp 확장자를 갖고 있는 페이지를 요청할 때) JSP 파일을 서블릿 파일로 바꿔줌
  • URL 매핑
    • jsp 파일명 그대로 URL 매핑됨
      • 서블릿은 매핑을 따로 하기 때문에 서블릿 파일명과 URL이 다를 수도 있음
  • Jasper는 사용자가 확장자가 jsp인 페이지를 요청할 때마다 그 페이지에 달라진 게 있으면 페이지를 다시 만들어줌 > 서버를 재시작할 필요가 없음 (새로고침만 하면 됨)
    • 서블릿을 직접 만들 땐 변경이 있을 때마다 다시 컴파일하기 위해 서버를 재시작해야 함
  • Jasper를 사용하는 방법
    • 확장자를 jsp로 만들어주면 됨 (예: add.jsp)
  • jsp 파일을 Jasper를 통해 변환한 서블릿 파일의 이름
    • jsp파일명_jsp.java (예: add_jsp.java)

 

Jasper를 통해 jsp 파일을 서블릿으로 변환하기

  • calc3.html 파일을 복사해 calculator.jsp 파일을 만들고 실행
    • 서블릿에 doGet( )메소드와 doPost( )메소드를 만들고 doGet( )메소드에 out.write( )로 HTML 코드를 한 줄 한 줄 감쌀 필요가 없음
  • 실행 결과
    • jsp 파일의 class명이 output인 태그에 적은 식 그대로 출력됨

  • 3+4가 아니라 계산된 결과가 나오게 하려면
    • 계산식을 ${ }안에 넣으면 됨
    • 예: <td class = "output" colspan="4">${3 + 4}</td>
    • 해당 페이지가 HTML이면 3+4가 그대로 나오지만, JSP면 계산되어 7로 나옴
    • 페이지 소스를 보면 서버에서 페이지를 응답받을 때부터 계산된 결과를 받았다는 걸 알 수 있음

헤이지 소스 보기

 

jsp 파일에서 Jasper를 통해 변환된 서블릿 코드의 경로 확인하기

  • 이클립스의 Servers 탭 > Tomcat 서버 우클릭 > Open (또는 더블클릭)

 

  • Tomcat 서버 설정에 대한 정보가 열림 > 실제 서비스되는 배포 디렉토리를 확인할 수 있음
    • 개발할 때 사용하는 임시 배포 디렉토리인 것

Tomcat 서버 설정에 대한 정보 - 임시 배포 디렉토리 확인

 

임시 배포 디렉토리

  • 코드를 만들고 Ctrl+F11로 코드를 실행하고 배포하면 임시 배포 디렉토리로 옮겨짐
    • 사용하는 Tomcat이 실제 다른 서비스를 운영할 수도 있기 때문에 실제 Tomcat의 워크 디렉토리에 두진 않고, 이클립스가 관리하는 별도의 복사본을 만듦 > 개발할 때 사용하는 임시 배포 디렉토리
  • 코드를 만들어 저장한 곳이 홈 디렉토리는 아님
    • 코드를 사용자가 저장하는 곳은 개발용 디렉토리일 뿐
  • 임시 배포 디렉토리는 Tomcat이 가지고 있는 디렉토리와 흡사한 구조를 갖고 있음

  • 임시 배포 디렉토리의 경로
    • 현재 사용 중인 프로젝트의 워크스페이스 > .metadata > .plugins > org.eclipse.wst.server.core > temp0 > work
  • work 파일은 Jasper가 사용하는 파일
  • work > Catalina > localhost > ROOT > org > apache > jsp 안에 변환된 서블릿(calculator_jsp.java)과 그 클래스 파일(calculator_jsp.class)이 존재
  • 서블릿 파일을 드래그해 이클립스에서 실행하면, HTML 코드만 입력한 calculator.jsp 파일이 서블릿 형태로 변환되어 있는 걸 확인할 수 있음

 

출력하지 않을 코드 블럭 설정하기: <% %>

  • 코드 블럭 설정 전
    • jsp 파일을 서블릿으로 만드는 Jasper는 jsp 파일의 모든 코드에 write( )를 사용해 출력 코드로 만듦
    • [calculator_jsp.java] jsp 파일에 추가한 코드가 Jasper에 의해 자동으로 서블릿 형식으로 변환됨
      • out.write("int x = 3;\r\n");
        out.write("int y = 4;\r\n");
int x = 3;
int y = 4;

코드 블럭 설정 전 - jsp 파일에서 Jasper를 통해 변환된 서블릿 코드의 경로 확인하기

 

  • 코드 블럭 설정 후
    • 출력하지 않고 코드 그대로 삽입하길 원한다면 <% %> 사용
      • 절대 변환된 서블릿 코드를 변경해선 안 됨
      • 무조건 jsp 파일만 변경할 것
    • [calculator_jsp.java] jsp 파일에 추가한 코드는 변환되지 않고 바로 서블릿 파일에 입력됨
      • int x = 3; int y = 4;
<%
  int x = 3;
  int y = 4;
%>

코드 블럭 설정 후 실행 결과