valid_ming 2020. 3. 12. 21:56

 

 

JSP란?

 

 

Java 언어를 기반으로 하는 Server Side 스크립트 언어입니다.

HTML에 자바 코드를 넣어 동적인 웹 페이지를 생성하는 도구로 사용합니다.

 

예시를 보겠습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>sum10</title>
</head>
<body>

<% 
    int total = 0;
    for(int i = 1; i <= 10; i++){
        total = total + i;
    }
%>

1부터 10까지의 합 : <%=total %>

</body>
</html>

<% %> 코드 블록은 함수의 역할을 하고

<%= > 코드블럭은 print 역할을 합니다.

servlet 만으로 작성된 코드는 더 복잡했는데 JSP를 사용하니 한결 간결해진 것을 확인할 수 있습니다.

 

 

[출처 : edwith.org/boostcourse-web/lecture/16702/]

 

 

 

JSP 라이프사이클

 

 

JSP 코드는 요청을 받게 되면 서블릿 소스코드로 변환된 후 컴파일 하여 실행됩니다.

서블릿으로 컴파일되어 실행될 때 어떤 라이프사이클을 가지고 실행되는지 알아봅시다.

 

servlet과 마찬가지로 jsp파일 또한 service, init, destroy 메서드를 가지고 있습니다.

자바 코드로 변환된 JSP파일은 파일 탐색기를 통해 확인해 보면,

<% %> 코드블럭 안에 작성된 코드들은 모두 service 메서드 안에 작성되어있는 것을 확인할 수 있습니다.

init, destroy 메서드 안에 코드를 작성하고 싶다면

<%
	System.out.println("_jspService()");
%>

<%!
public void jspInit() {
	System.out.println("jspInit()!");
}

public void jspDestroy() {
	System.out.println("jspDestroy()");
}
%>

예제와 같이 <%! %> 코드 블록 안에 작성하면 됩니다.

 

예제를 통해 처음 JSP 파일이 실행될 때는 init, service 메서드가 실행되고, 새로고침 할 시에는 service 메서드만 실행된다는 것을 알 수 있습니다. 또한 다시 실행하거나 수정한 뒤 실행하면 destroy, init, service 순으로 실행되는 것을 알 ㅅ  수 있습니다.

 

 

[출처 : https://www.edwith.org/boostcourse-web/lecture/16703/]

 

 

 

JSP 문법

 

 

선언문

: <%! %>

선언문은 JSP 페이지 내에서 필요한 멤버 변수나 메서드가 필요할 때 선언해 사용하는 요소입니다.

 

스크립트릿

: <% %>

주로 프로그래밍의 로직을 기술할 때 사용됩니다. 

이 부분에 쓰인 코드들이 servlet으로 변환되면 service 메서드 안에 들어가게 되는 것입니다.

 

표현식

: <%= %>

JSP 페이지에서 응답에 해당하는 부분을 표현합니다.

내장 객체인 out 객체의 print() 또는 println() 메서드를 사용해서 출력됩니다.

 

주석

1. HTML 주석

: <!-- -->

 

2. JSP 주석

: <%-- -->

 

3. 자바 주석

: // OR /* */

 

JSP 페이지에서 주석은 세 가지 모두 이용 가능합니다.

다만 차이점은,

1번은 변환된 소스코드가 html로 읽어질 때 주석으로 처리된다는 것

2번은 소스코드가 변환될 시에 주석으로 처리되어 소스 변환 처리가 되지 않는다는 것

3번은 변환된 소스코드가 실행할 때 주석으로 처리된다는 것입니다.

 

 

[출처: https://www.edwith.org/boostcourse-web/lecture/16704/]

 

 

 

JSP 내장 객체

 

 

_jspService() 메서드에 삽입된 코드의 윗부분에 미리 선언된 객체들이 있습니다.

이 객체들을 JSP 내장 객체라고 하며, 별도의 선언 없이 다른 부분에서 사용 가능합니다.

 

jsp 내장 객체의 종류

 

[출처 : https://www.edwith.org/boostcourse-web/lecture/19882/]