[부스트코스] JSP -BE
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 내장 객체라고 하며, 별도의 선언 없이 다른 부분에서 사용 가능합니다.

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