티스토리 뷰

워크스페이스\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\프로젝트 폴더명\org\apache\jsp

에 가면 JSP파일이 서블릿으로 바뀐 파일을 확인 할 수 있다.

 

WAS에 따라 약간 다른 이름으로 선언되어 있을 수 있지만, 앞시간에 배웠던 Init(), Destroy(), Service() 라는 글자가 들어간 메소드들을 확인 할 수 있다. (톰캣 기준 _jspService())

 

Service()안에 우리가 코드를 작성해 클라이언트에게 제공한다.

 

java파일로 바뀐 sum10.java를 열어 _jspService() 확인해 보면 앞 게시물 작성했던 10까지의 합 코드를 확인 할 수 있다.

 

 

sum10.jsp가 실행 될 때 벌어지는 일

- 이클립스 워크스페이스 아래의 .metadata 폴더에 sum10_jsp.java 파일이 생성된다.

- 해당 파일의 _jspService() 메소드 안을 살펴 보면 jsp파일의 내용이 변환되서 들어가 있는 것을 확인할 수 있다.

- sum10_jsp.java는 서블릿 소스로 자동으로 컴파일 되면서 실행되서 그 결과가 브라우저에 보여진다.

 

JSP의 실행 순서

1. 브라우저가 웹서버에 JSP에 대한 요청 정보를 전닳한다.

2. 브라우저가 요청한 JSP가 최초로 요청했을 경우만(jsp 엔진이 하는 일)

1) JSP로 작성된 코드가 서블릿으로 코드를 변환한다.(java 파일 생성)

2) 서블릿 코드를 컴파일해서 실행가능한 bytecode코드로 변환한다.(class 파일 생성)

3) 서블릿 클래스를 로딩하고 인스턴스를 생성한다.

3. 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.

 

jsp 라이프싸이클 실습

JSP라이프 싸이클을 확인할 lifecycle.jsp를 작성한 후 다음의 경우 어떤 결과가 나오는지 확인한다.

- 브라우저로 최초 요청했을 때

- 브라우저로 두번째 요청했을 때

- lifecycle.jsp를 수정한 후 요청했을 때


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ 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>Insert title here</title>
</head>
<body>
hello~~~
<%
    System.out.println("jspService()");
%>
</body>
</html>
cs

실행 시키면 jspService()가 콘솔창에 출력된다. 그리고 새로고침을 누를때 마다 출력된다.

위 경로에 lifecycle_jsp.java가 생성된다.

 

<%! %> : 선언식 ,이 클래스에 메서드를 선언한다거나, 필드를 선언할 때 사용, 이걸 쓰면 Service 메서드 내에 작성되는게 아니라 그 외부에 작성 할 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ 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>Insert title here</title>
</head>
<body>
hello~~~
<%
    System.out.println("jspService()");
%>
 
<%!
    public void jspInit(){
        System.out.println("jspInit()");
    }
    public void jspDestroy(){
        System.out.println("jspDestroy()");
    }
%>
</body>
</html>
cs

 

작성 후 실행, jspInit() jspService() 가 콘솔창에 출력되고 수정 후 새로고침하면 jspDestroy()가 출력된다.

 

lifecycle_jsp.java를 확인해 보면 Service()라는 메소드 내가 아닌 외부에  jspInit(),jspDestroy() 메서드에 작성된다.

 

참고 사이트 : http://www.edwith.org/



본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.

' > 부스트코스' 카테고리의 다른 글

[WEB]DOM과 querySelector  (1) 2018.06.03
[WEB]window객체  (0) 2018.06.03
[WEB]JSP란?  (0) 2018.05.26
[WEB]Element가 배치되는 과정  (0) 2018.05.20
[WEB]Request, Response 객체 이해하기  (1) 2018.05.20
댓글