본문 바로가기
events/부스트코스

[부스트코스] 2. DB 연결 웹 앱 | 3. JSP - BE | JSP

by kimtahen 2020. 3. 13.
반응형

1. 개요

  JSP는 Java Server Pages 의 약자로, HTML 내에서 자바(Java) 코드를 이용하여 동적으로 웹 페이지를 생성할 수 있도록 도와주는 기술이다. HTML의 자바 코드 컴파일은 Server에서 행해지고, 그 결과가 클라이언트로 전송되기 때문에, ServerSide 스크립트 언어라고 할 수 있다.

  작성된 JSP는 WAS, (예를 들자면 톰캣)에서 Servlet으로 변환되어 자체적으로 사용된다.  그렇기에, 결론적으로 가장 중요한 점은 'Servlet 으로 변환이 된다'는 것이기에, Servlet 메서드의 기능을 사용할 수 있다는 것이다.

  jsp 파일에 대한 요청이 들어오면 위 그림과 같은 순서대로 서버는 응답을 한다.

 

1. hello.jsp 에 대한 요청이 들어온다.

2. Server(WAS)에서는 요청한 jsp 파일을 읽는다.

3. 읽은 jsp 파일을 Servlet으로 변환한다.

4. 이 Servlet을 컴파일 하여 class 파일을 만든다.

5. 실행시킨다.

6. 클라이언트에게 응답을 보낸다.

 

이런 순서대로 작동한다는 것을 알 수 있다.

 


대표적인 JSP 문법에는 <% ... %> , <%= ... %>, <%@ ... %> 이 있다.

1. <% ... %>

<%와 %> 사이에 들어가는 코드는, java 코드로, servlet 에서 실행하게 되는 코드이다. 

 

2. <%= ... %>

<%=와 %> 사이에 들어가는 코드는, servlet의 out 스트림의 out.print( ) 메서드에 들어가는 java 코드이다. 이 기호 사이에 쓰이지 않는 코드는 html 문자로 해석되어서, " " 사이의 문자열로 out.write( ) 메서드에 삽입된다.

 

3. <%@ ... %>

<%@와 %> 사이에는 page, include, taglib 가 들어갈 수 있는데, JSP의 전체 구조에 영향을 미친다.

 

2. 실행

jsp 코드를 직접 작성해보자.

 

  먼저 eclipse 에서 저번 포스팅에서 dynamic web project를 생성했던 바와 마찬가지로, 프로젝트를 하나 생성한다. 그러면 프로젝트 하위 디렉터리에 WebContent라는 폴더가 생성될 것이다. 이 폴더는 html, css, jsp 파일 등의 리소스가 위치하는 곳이다. WebContent 폴더에서 우클릭을 하고 New - JSP File 순으로 클릭한다.

이름을 주고 Finish를 클릭한다.

그럼 이렇게 jsp 파일이 생성된다. 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sum JSP</title>
</head>
<body>
<%
	int result = 0;
	for(int i = 1; i<=10; i++){
		result += i;
	}
%>
<h1>1부터 10까지의 합 : <%= result %></h1>
</body>
</html>

이렇게 1부터 10까지의 합을 구하는 코드를 작성해준다. <% %> 안의 코드는 자바 코드로 변환되어, html 문자열로 해석되지 않는다. <% = %> 안의 코드는 자바 코드로 변환되고, html문자열로 해석되지 않는 대신, out.print( ) 매서드 안에 쓰이게 된다. 

 

이제 sum.jsp에서 우클릭을 하고 Run As - Run on Server 순으로 클릭한다. 

이렇게 servlet으로 변환되어 잘 작동하는 것을 확인할 수 있다.

 

eclipse를 실행할 때 설정하는 eclipse-workspace로 가면 변환된 서블릿 파일이 존재한다.

eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\work\Catalina\localhost\web\org\apache\jsp

이 경로를 찾아가면 .java 파일과 .class 파일이 존재한다. .java 파일이 서블릿으로 변환된 파일이다. 이 파일을 열어보면

이런식으로 코드가 존재한다. _jspInit, _jspDestroy, _jspService 메서드들을 보면 무언가 Servlet과 닮아 있는 구석이 있다. Servlet의 Init, Destroy 그리고 Service 에 해당되는 메서드 들이다.

 

service 메서드 내에서는 jsp 파일이 변환 된 것을 확인할 수 있다. html은 out.write( ) 메서드에 쓰인다. 그리고 아까 전 <% %> 사이에 쓰인 코드는 java 코드로써 쓰이는 것을 확인할 수 있다. 또한 <%= %> 사이에 쓰인 코드는 .print( ) 메서드에 끼워져 있는 것을 확인할 수 있다.

 

반응형

댓글