본문 바로가기
Backend/Servlet & JSP

[Servlet & JSP] JSP의 역할

by Forsaken Developer 2023. 5. 27.
728x90
728x90

[Servlet & JSP] JSP의 역할

JSP(Java Server Pages)는 html, css, javaScript 등의 정적인 웹페이지에 동적인 기능을 추가하기 위한 기술이다.

서블릿의 역할은 요청 받기, 비즈니스 로직 처리, 요청에 응답하기이다. 

요청 받기와 비즈니스 로직 처리는 주로 자바코드를 통해서 작성하고 응답은 주로 html 파일로 작성하게 된다.

한 파일에서 자바코드와 html 코드를 동시에 사용하게 되면 java 코드를 작성하는 사람과 html를 작성하는 사람이 같은 파일을 작업하게 되고 코드에서 문제가 발생할 수 있다.

이러한 문제점을 해결하기 위해서 사용자에 대한 응답만 처리할 수 있도록 서블릿을 분리할 수 있다.

JSP는 서블릿을 기반으로 만들어졌으며 jsp파일은 서블릿으로 변환되어 실행된다.

서블릿은 자바로 작성되었기때문에 한 글자라도 수정하게되면 컴파일 과정을 다시 거쳐야 하고 톰캣을 재시작 한다.

또한 html 코드를 자바의 문자열로 작성하는 것도 번거롭다.

그래서 servlet을 wrapping 하여 jsp를 만들게 되었다.

jsp는 서블릿이지만 html base에 자바코드를 사용할 수 있도록 만들어졌다.

출처 - javatpoint


클라이언트가 JSP 페이지를 요청하면, 컨테이너는 JSP 파일을 찾아 서블릿 클래스로 변환한다.

변환된 서블릿 클래스는 컴파일되어 로딩되고, 요청이 들어올 때마다 인스턴스화되어 실행된다. 

jsp는 표면상으로는 html과 유사하지만 jsp 컨테이너가 jsp를 요청할 시 jsp를 서블릿으로 변환하기때문에 jsp를 수정해도 서버를 재시작 하지 않아도 되는데 이를 동적 로딩이라고 한다.

요청이 오지 않는다면 jsp를 수정해도 변경사항이 반영되지 않고 요청이 올 때 변환을 다시 진행한다.

jsp 내용이 이전과 다르지 않다면 기존의 jsp 파일을 사용한다.

jsp의 동작과정을 알아보기 위해서 톰캣 서버 폴더에 있는 context.xml 파일을 복사해서 META-INF 폴더에 붙여넣는다.

context의 workDir에 변환 결과를 저장할 폴더 경로를 설정한다.

jsp 파일을 요청하면 해당 경로에 파일이름_jsp.java 파일이 생성되고 java 파일이 컴파일되어 파일이름_jsp.class 파일이 생성되는 것을 확인할 수 있다.

 

728x90
반응형

댓글