상세 컨텐츠

본문 제목

JSP를 서블릿으로 변환시켜주는 Jasper

Development/Servlet

by thisisnew 2019. 10. 19. 18:29

본문

반응형

JSP(Java Server Pages)는 HTML에 Java코드를 편리하게 적을 수 있도록 도와줍니다.

 

그런데 HTML에 Java코드를 적다 보니 많은 분들께서 오해하는 것이 있습니다.

 

바로 브라우저의 화면에 띄워지는 것이 JSP자체라는 오해인데요.

 

사실 그렇지 않습니다.

 

화면에 띄워지는 페이지는 대체 무엇이고, 어떤 과정으로 진행되는 것인지 알아보도록 하겠습니다.


HTML에 Java의 데이터를 입히기 위해서는 Java에서 직접 HTML에 그려줄 수밖에 없었습니다.

 

가령 PrintWriter 같은 클래스를 이용해서 말이죠.

 

하지만 매번 그렇게 하면 정말 불편하죠.

 

그래서 정적인 HTML에 시시각각 변하는 데이터 즉, Java코드를 직접 작성할 수 있도록 만들어진 것이 JSP입니다.

 

만들기도 쉽습니다.

 

달랑 HTML의 확장자를 '. jsp'로 바꿔주기만 하면 됩니다.


정적인 HTML과 달리 JSP는 Java코드에 의해 동적인 페이지가 되었으므로, 그것을 컴파일할 서버가 필요해집니다.

 

그것이 바로 WAS(Web Application Server)인데요.

 

WAS는 정적인 HTML만 관리하던 웹서버와 달리, 동적인 페이지도 컴파일하는 것이 가능합니다.

 

https://www.youtube.com/watch?v=wdPAvUuyu8A

 

[자바 웹 개발 워크북#018] 3.1 CGI 프로그램과 서블릿

[열혈강의] 자바 웹 개발 워크북(엄진영/프리렉출판사) 동영상 강의 3장. 서블릿 프로그래밍 3.1 CGI 프로그램과 서블릿 3.2 서블릿, JSP vs. JavaEE vs. WAS 내용 - 웹 애플리케이션과 CGI 규칙의 관계를 알아본다. - 서블릿 컨테이너와 WAS의 개념을 이해한다.

www.youtube.com

"웹서버와 WAS의 관계를 잘 모르신다면 이 영상을 봐주시기 바랍니다. 엄진영 선생님의 강의인데 강력 추천합니다."

 

그 WAS 중에는 다양한 브랜드가 있고, 그중 대표적인 것이 Tomcat입니다.

Tomcat이 설치된 폴더를 가보시면, lib폴더 안에 jasper라는 jar파일이 있는 것을 볼 수 있습니다.

 

자, '. jsp'로 확장자를 바꿔서 HTML에서 JSP가 되면 어떤 일이 벌어질까요?

 

바로 Tomcat의 JSP엔진 중 하나인Jasper가 앞으로 읽을 준비를 합니다. 해당 JSP가 호출되면 말이죠.


다음은 일반적인 JSP의 화면인데요.(파일명은 listMembers.jsp입니다.)

 

보다시피 HTML 코드와 EL(Expression Language) 태그라고 하는 도구로 Java코드가 작성되어 있는 것을 알 수 있습니다.

 

브라우저에 컨트롤러를 호출하여 해당 JSP를 호출시켜 보도록 하겠습니다. 

 

이 JSP가 호출이 되면, 이때 Jasper가 동작하게 됩니다.

 

개발할 때 생성했던 workspace를 가보도록 하겠습니다.

 

여기서

.metadata → .plugins → org.eclipse.wst.server.core → tmp0→ work → Catalina → localhost → 프로젝트명 → org → apache → jsp → web_002dinf

 

순서로 들어가 봅니다.

 

(※ tmp뒤에 붙은 숫자는 톰캣을 여러 개 실행하면 달라질 수 있습니다.)

 

들어가 보면 현재 호출된 JSP의 Class파일과 Java파일이 두 개가 존재하는 것을 볼 수 있습니다.

 

Jasper가 JSP파일을 Class파일 즉 'Servlet'으로 컴파일한 것이죠. 

 

컴파일 된 Class파일 말고 여기서는 Java파일을 Eclipse 같은 IDE에 드래그하면 내용을 볼 수 있습니다.

 

뭔가 복잡해 보이는 Java 코드가 나오는데요 스크롤을 내려서 밑으로 가보도록 합니다.

JspWriter라는 것을 out이라는 변수에 할당하여 out.write로 HTML 태그를 작성하고 있는 것을 볼 수 있습니다.

 

즉, HTML에 직접 작성하고 있는 것이죠.

또, EL태그와 JSTL로 작성되었던 foreach문은 Java의 do~while문으로 작성되어 있는 것을 확인할 수 있습니다.

 

여기서도 out.write로 HTML 태그와, Java 코드를 각각 HTML에 작성하고 있네요.


결론은 이렇습니다.

 

HTML의 확장자를 바꿔 JSP 파일로 만들어주면, 이 파일은 앞으로 Jasper가 읽어 들일 준비를 합니다. 호출되면 말이죠.

 

그리고 JspWriter를 이용하여 HTML에 새로 작성을 하는 것을 볼 수 있습니다.

 

JSP파일이 브라우저에 바로 띄워지는 것이 아니라, 호출된 JSP파일을 Jasper가 컴파일 후 다시 HTML에 그려주는 것.

 

이것이 우리가 브라우저에서 호출한 JSP가 화면에 나타나는 과정입니다.

반응형

댓글 영역