티스토리 뷰

728x90

JSP와 스크립틀릿

JSP란 쉽게 말하자면 HTML에 Java 코드를 섞어 놓은 것을 말한다.
이렇게 작성된 JSP 페이지는 컨테이너가 알아서 JSP를 서블릿 소스 코드로 변환한 다음,
컴파일하여 완전한 서블릿 클래스로 만든다.

그러므로 JSP를 이해하려면 Servlet도 어느 정도 알아야 된다. (아예 JSP만 한다는 것은 무리가 있다.)

다음 방문객 카운터 페이지를 예로 들어보자

BasicCounter.jsp

<html>
<body>
<%
    out.println(foo.Counter.getCount());
%>
</body>
</html>

만약 위 jsp 페이지를 서블릿을 만든다면
html 코드들은 PrintWriter 객체를 얻어온 뒤 out.println()의 인자값으로 넣어서 출력해야 했을 것이다 

위의 예제에서 <%...%>가 JSP 코드인데
<%...%>이 태그 안에 있는 Java 코드를 스크립틀릿(scritlet)이라고 한다.

위의 예제에서 스크립틀릿 내에 out 객체를 생성하지도 않았는데 사용하고 있다. 이건 또 뭐지 -_-;

바로 out이 JSP의 내장 객체인데 이거 말고도 내장 객체의 종류는 많다. (그 외 내장 객체는 맨 밑에 적어놓음)

<%...%> 태그 내에서 선언한 변수는 서블릿에서는 지역변수 일 뿐이다.

또 주의 할 점은 스크립틀릿에 객체나 클래스를 쓰고 싶을 경우 package 명까지 적어줘야 한다.

JSP의 지시자
JSP에서 지시자는 컨테이너가 페이지를 자바코드로 변환 할 때 특별한 지시를 내릴 수 있도록 고안된 것들을 말한다.
지시자에는 page, include, taglib가 있다.

지시자를 쓸 때는 <%에 @를 붙인다.
(이게 일반 jsp 코드와 다른 점)
여기서 page 지시자는 java코드의 import와 같다.

ex)
<%@ page import="foo.*" %>
<%@ page import="foo*, java.util.*" %>

JSP 표현식
JSP에서 무언가를 출력하려면 out.println() 메소드를 사용해야 한다.

예를 들면 다음과 같이 말이다.
<% out.println(foo.Counter.getCount()) %>

그런데 out.println()을 사용하지 않고 그냥 출력할 수는 없을까?

바로 이 때 표현식을 사용하면 된다.

<%= foo.Couter.getCount() %>
이렇게 쓰면 컨테이너가 위 표현식 코드를 만나면
out.println(getCount()); 으로 자동으로 변환 시켜준다.

주의할 점은 세미콜론(;)도 자동으로 붙으니 표현식 내에는 세미콜론을 쓰지 말 것!!

또 주의할 점: 표현식 내에는 리턴 타입이 void인 메소드를 호출하지 말자. (표현식에서는 출력할 것이 없으면 에러난다.)

정리
스클립틀릿: <% %>
지시자: <%@ %>
표현식: <%= %>

내장 객체

 API

내장 객체 

JspWriter

out

HttpServletRequest

request

HttpServletResponse

response

HttpSession

session 

ServletContext

application

ServletConfig

config 

JspException

exception

PageContext

pageContext

Object

page (==this)


출처 : http://blog.naver.com/PostView.nhn?blogId=crazybnn&logNo=30099932617&viewDate=&currentPage=1&listtype=0

'프로그래밍 > JSP' 카테고리의 다른 글

파일 다운로드 도우미  (0) 2012.01.04
[JSP] MVC 게시판 만들기 3(수정, 삭제)  (2) 2011.10.15
[JSP] JSTL 1.2 다운로드  (0) 2011.08.27
[JSP] EL 함수  (0) 2011.07.29
[JSP] EL(Expression Language)  (0) 2011.07.29