티스토리 뷰

1) JSP 기초

- MS에서 만든 ASP의 대항마로 1999년에 썬에서 발표

- WebContent 폴더 안에 넣으면 됨

- 기본적으로 HTML 안에 <% %> (스크립트릿) 라는 영역으로 JSP 코드임을 표시함

> <%@ page ~ ... (지시자) : JSP 파일 시작하는 부분에 인코딩 등 메타데이터를 넣어주는 부분

> <%= ... (표현식) : 응답결과를 

- JSP는 서블릿으로 변환되어 실행된다. 위의 각 표현법에 따라 서블릿으로 변환하는 방법이 다름.

 

2) JSP Lifecycle

- JSP는 서블릿으로 변환된다고 했음. 이클립스 워크스페이스의 .metadata에서 어찌어찌 들어가면 변환된 .java 서블릿 파일을 볼 수가 있는데...

> _jspService() 라는 메서드 안에 JSP 파일의 내용이 자바 코드로 변환되어 들어가있는걸 볼 수 있음

> HTML 코드는 out.write, 표현식은 out.print, 스크립트릿 영역은 그냥 들어가있음

 

- JSP 실행순서

(1) 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달

(2) 브라우저가 요청한 JSP가 최초로 요청되었을 경우,

> 서블릿으로 코드가 변환됨 (.java 파일 생성)

> 서블릿 코드를 컴파일해서 실행가능한 바이트코드로 변환함 (.class 파일 생성)

> 서블릿 클래스를 로딩하고 인스턴스 생성

(3) 서블릿이 실행되어 요청을 처리하고 응답 정보 생성

 

- 선언식

<%! ... %>: 이 안에 메서드 등을 선언할 수 있음.

이걸 쓰면 _jspService() 안이 아니라 밖에 (클래스 바디에) 메서드가 선언된다 (변환된 서블릿 파일에서).

 

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

서블릿과 똑같이 Init, Service, Destroy라는 라이프사이클을 갖는 것을 확인할 수 있다.

 

3) JSP 문법

- 선언문 (Declaration): <%! %>

전역변수, 메서드 선언에 사용. 서블릿으로 변환될 때 _jspService() 안이 아니라 상위 레벨인 클래스 안에 들어간다.

 

- 스크립트릿 (Scriptlet): <% %>

프로그래밍 로직 기술에 사용. 스크립트릿에서 선언된 변수는 지역변수다.

 

<%
 for(int i = 1; i <= 5; i++){
%>
<H<%=i %>> 점점 작아지는 글씨 </H<%=i %>> // 중간에 HTML이 껴들어갔음
<%  // 이런 식으로 스크립트릿은 분리해서 쓸 수도 있다
 }
%>

- 표현식 (Expression): <%= %>

응답 결과를 넣어주기 위한 부분. 웹 브라우저, 즉 화면에 출력할 것들을 넣어준다.

그냥 변수 하나 간단하게 쓰는 문법이라고 알고 있었는데 그게 아님.

 

- 주석 (Comment): JSP는 HTML, Java, JSP 문법이 섞인 혼종이기 때문에 3가지의 주석이 존재함

> HTML 주석: <!-- -->. 주석이니 화면에는 내용이 뜨지 않지만 '페이지 소스보기' 를 하면 볼 수 있다.

> 자바 주석: //, /* */. <% %> 안의 자바 영역에서 쓸 수 있음. 서블릿으로 변환된 .java파일에서 볼 수 있다.

> JSP 주석: <%-- --%>. '페이지 소스보기' 를 해도 안 나오고 .java 파일에도 안 나옴. jsp 파일에서만 역할을 한다.

 

4) JSP 내장 객체

- 내장 객체 (implicit objects)

서블릿 소스의 _jspService() 를 보면 우리가 스크립트릿에 넣어준 내용 외에도 위에 알아서 생성되는 코드들이 있다. 여길 보면 기본적으로 선언되어있는 객체들이 있는데, 이를 내장 객체라고 함. JSP 파일에서 갖다쓸 수 있다.

 

> request, response, session, out, config, page... 등이 존재

> _jspService() 안에 지역변수로 선언되어 있는 것들이기 때문에 선언문 (<%! ... %>) 에서는 쓸 수 없음

 

<%
StringBuffer url = request.getRequestURL(); // request를 선언하지 않았지만 사실 이미 존재함
out.println("url : " + url.toString());
out.println("<br>");
%>
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함