Development/JSP

JSP 기초 - JSP 웹 페이지 구성 요소

Ahn Paul 2020. 4. 7. 16:46

 전 파트에서 JSP는 HTML과 다른 것이 거의 없었다. 맨 위의 딱 한 줄을 제외하곤 말이다. 그렇기 때문에 HTML을 쓰지 굳이 JSP를 써야 할 이유가 없어 보인다. 이제는 JSP를 써야할 이유를 슬슬 알아야 할 때가 온 것 같다.

 

 JSP 웹 페이지는 다양한 요소들로 구성이 되어 있는데, 이 요소들의 힘이 강력하다. 다양한 요소들은 무엇이 있는지 알아보자.

 

구성요소 태그 설명
Directive (지시문) <%@ attribute=<value> %>

JSP 페이지의 속성을 지정한다.

Declaration (선언문) <%! %>

스크립트릿, 표현식에서 사용할 변수, 메소드를 선언한다. (전역에서 사용 가능)

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

JSP 페이지 내에서 자바 코드를 사용할 수 있게 해 주는 영역, 변수를 선언할 수 있다. 

Expression (표현식) <%= %>

클라이언트 브라우저에 출력할 값을 지정할 수 있다.

Comment (주석문) <%-- --%>

프로그램의 흐름이나 제어에 영향을 끼치지 않는 설명문을 삽입할 수 있다.

Action tag (액션태그) <jsp:action></jsp:action>

XML 형식으로 되어 있는 태그로 다른 페이지를 포함하거나 다른 페이지로 이동할 수 있다.

 여섯 가지의 구성요소를 바탕으로 단순한 클라이언트 측에서 다루어지는 HTML과는 비교도 안 될만큼의 강한 기능을 가질 수 있다. 

 

지시문

 지시문은 뜻대로 해당 JSP 페이지의 전체적인 속성을 지시한다고 생각하면 된다. 페이지의 인코딩 값, 사용될 언어, 콘텐츠 타입, 세션, 버퍼 등등 많은 값들을 설정할 수 있다. 너무나 많은 속성들이 있기 때문에 다 알고 있기 보다 특정 속성이 필요할 때 참고해서 사용하면 될 것 같다.

 

참고 : https://www.tutorialspoint.com/jsp/jsp_directives.htm

 

JSP - Directives - Tutorialspoint

JSP - Directives Advertisements In this chapter, we will discuss Directives in JSP. These directives provide directions and instructions to the container, telling it how to handle certain aspects of the JSP processing. A JSP directive affects the overall s

www.tutorialspoint.com

가장 많이 사용할 것 같은 속성들은 contentType, pageEncoding, Import, Session, errorPage 정도가 될 것 같다. 

Attribute 설명 Default
contentType

JSP 페이지가 생성할 문서의 콘텐츠 유형을 설정한다. 

(e.g, text/html, text/plain, application/json)

text/html
pageEncoding 문자 인코딩 설정 java
Import JSP 페이지에서 사용할 자바 클래스 설정  
Session JSP 페이지가 세션 사용 여부 결정 true
errorPage  JSP 페이지에 오류가 발생했을 때 보여줄 페이지를 설정  

맨 첫 줄에 해당 JSP 페이지에 관한 지시자를 설정한다.

 기본 JSP 파일에서 import="java.util.*"을 추가적으로 import하여 오늘 날짜를 찍어볼 수도 있겠다. 

 

 java.util.* 패키지를 import 했고 그 결과 new Data()를 통해 오늘 날짜를 출력할 수 있었다. 여기서 <%= %>가 등장한다. <%= %>는 표현식이다.

표현식

 표현식은 브라우저에 출력할 값을 나타낼 수 있다고 했다. 자바 코드를 사용할 수 있는 영역이다. 선언문이나 스크립트릿에서 만든 변수나 메서드를 활용해 값을 출력할 수도 있다. 위 사진은 new Date()의 자바 코드를 통해 현재 날짜와 시각을 출력한 모습이다. 

 

 오늘의 날짜만 찍으니 뭔가 영 심심해 보인다. 내가 사는 나라를 어딘가에 저장해서 브라우저에 출력해 보려고 한다. 

 <% %>를 통해 country라는 String 변수를 생성했고 "한국"을 참조하도록 했다. HTML과는 점점 다른 모습이 보인다. 변수를 저장해서 해당 변수를 참조해 사용이 가능하다. 즉, 스트립트릿을 사용해 해당 페이지 내에서 사용할 변수를 설정했고 설정한 변수를 표현식을 통해 브라우저에 출력을 했다. 스트립트릿을 사용하지 않고 선언문을 사용해 변수를 설정해도 동일한 결과를 출력할 수 있다.

 

 스크립트릿을 사용했을 때와 다를 게 없다. 똑같이 변수를 참조할 수 있도록 변수를 생성한다. 그렇다면 스크립트릿과 선언문의 차이점은 무엇일까? 스크립트릿은 지역 변수만 선언할 수 있고, 선언문은 전역 변수와 전역에서 사용할 수 있는 메소드를 사용할 수 있다는 차이점이 있다. 

 

 나라 이름을 반환하는 getter를 만들어서 나라 이름을 출력해 보자.

 

 getCountry()라고 하는 나라 이름을 반환하는 메소드를 선언문에서 작성하여 표현식에서 사용한 모습이다. 이처럼 선언문에서는 메소드를 사용할 수도 있다. 그리고 위에서부터 자세히 살피어 보면 표현식에는 세미클론을 사용하지 않는다. 

 

주석문

주석문은 프로그램의 처리와 흐름에는 영향을 끼치지 않는 설명문이다. 각 문서나 언어마다 주석문의 생김새가 다른 것처럼 JSP의 주석문 또한 <%-- --%>이라는 생김새가 다른 모습을 갖추고 있다. 그렇다고해서 <%-- --%>만 사용할 수 있는 것은 아니다. <!-- -->, //, /* */의 주석문 형태도 사용가능하다. 

 

하지만, JSP 파일이 컴파일이 되어서 클라이언트에 보내지게 될 때는 <%-- --%>이 아닌 다른 주석문은 그대로 처리가 된다. 이유는 간단하다. JSP 주석문이 아니기 때문에 컴파일러가 주석문으로 처리하지 않기 때문이다. 

 


  이제 지시자, 선언문, 스크립트릿, 표현식, 주석문을 익혔으니 웬만한 삐까뻔쩍한 페이지 하나는 만들 수 있을 것 같다!