jasper 개요

yozzum·2022년 3월 20일
0

JASPER의 등장 배경

과거에 servlet 프로그램을 만들기 위해서는 아래와 같이 GET 요청에 대한 코드를 작성해야 했다. 실제로 out.write() 메소드안에 html 태그를 일일히 입력해서 출력을 했다. 이를 간편하게 만들어주는 것이 JASPER이다. 우리는 일반적인 html을 작성하고, JASPER에게 이 코드에 out.write 메소드를 붙여서 서블릿 코드로 만들어달라고 하는 것이다.

@WebServlet("/calcpage")
public class CalcPage extends HttpServlet{	
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		Cookie[] cookies = request.getCookies();
		String exp = "0";
		if (cookies != null)
			for(Cookie c : cookies) 
				if(c.getName().equals("exp")) {
					exp  = c.getValue();
					break;
				}

		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		out.write("<!DOCTYPE html>");
		out.write("<html>");
		out.write("<head>");
		out.write("<meta charset=\"UTF-8\">");
		out.write("<title>Insert title here</title>");
		out.write("<style>");
		out.write("input {");
		out.write("	width: 50px;");

How it works

개발자에게 html을 jsp로 만드는 것은 간단하다. 확장자를 jsp로 바꾸면 된다.
Jasper는 html을 서블릿 코드로 변환시키는데,
사용자가 해당 jsp 파일을 요청할 때 변환하고, url 매핑은 파일명 그대로 된다.

만약 add.jsp라는 파일이 있으면,
Jasper는 톰캣 설치 디렉토리에 해당 파일에 대한 서블릿 코드를 java파일안에 생성한다.
org/apache/add_jsp.java

  • 개발디렉토리에서 작성한 코드를 배포하면 톰캣의 홈디렉토리로 옮겨지게된다. 톰캣은 여러 서비스를 운영하고 있을 수 있기 때문에 실제 톰캣의 디렉토리에 두지는 않고, 서비스 운영을 위해 이클립스가 관리하는 별도의 사본 디렉토리에 저장된다. 이클립스에서 servers 탭을 열고 현재 등록된 톰캣서버를 더블 클릭해서 설정화면을 보면 'Server path'에 해당 디렉토리 경로를 확인할 수 있다.

tmp 0,1,2,...,n 으로 임시 개발 서버 디렉토리가 생성된다. 가장 높은 숫자가 가장 최근에 실행한 서버 정보를 가지고 있는 것이다. tmp 디렉토리 안에 들어가보면 실제 톰캣서버와 비슷한 폴더들로 구성되어 있음을 확인할 수 있다. work 폴더가 Jasper의 작업실이다.

$ pwd
/Users/youngjinlee/Desktop/Dev/STS-workspace/.metadata/.plugins/org.eclipse.wst.server.core
$ ls
monitors.xml publish      publish.xml  servers.xml  tmp-data.xml tmp0
$ cd tmp0                       
$ ls
conf       logs       temp       webapps    work       wtpwebapps

work 폴더 안에 들어가보면, 이클립스에서 실행했던 jsp에 대한 java 파일과 class 를 확인할 수 있다. 직접 calculator_jsp.java 파일안을 보면, 기대했던대로 html 코드의 줄마다 write.out()이 씌여있음을 확인할 수 있다.

※ Catalina는 (예전) 톰캣의 프로젝트 명이다.

$ pwd
/Users/youngjinlee/Desktop/Dev/STS-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/WebCalculator/org/apache/jsp
$ ls
calculator_jsp.class calculator_jsp.java
profile
yozzum

0개의 댓글