* 본 글은 [뉴렉처]의 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이 다를 수도 있음
- jsp 파일명 그대로 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 서버 설정에 대한 정보가 열림 > 실제 서비스되는 배포 디렉토리를 확인할 수 있음
- 개발할 때 사용하는 임시 배포 디렉토리인 것
임시 배포 디렉토리
- 코드를 만들고 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");
- out.write("int x = 3;\r\n");
int x = 3;
int y = 4;
- 코드 블럭 설정 후
- 출력하지 않고 코드 그대로 삽입하길 원한다면 <% %> 사용
- 절대 변환된 서블릿 코드를 변경해선 안 됨
- 무조건 jsp 파일만 변경할 것
- [calculator_jsp.java] jsp 파일에 추가한 코드는 변환되지 않고 바로 서블릿 파일에 입력됨
- int x = 3; int y = 4;
- 출력하지 않고 코드 그대로 삽입하길 원한다면 <% %> 사용
<%
int x = 3;
int y = 4;
%>
'☕ Java 웹 프로그래밍 > Servlet & JSP' 카테고리의 다른 글
[Servlet&JSP] JSP의 내장객체 알아보기 (0) | 2023.06.14 |
---|---|
[Servlet&JSP] JSP의 코드 블록 (0) | 2023.06.09 |
[Servlet&JSP] 11일차 | (0) | 2023.06.05 |
[Servlet&JSP] 계산기 프로그램을 서블릿 하나로 합치기 (0) | 2023.06.05 |
[Servlet&JSP] GET과 POST에 특화된 service( )메소드 (0) | 2023.06.04 |