개발/기타

[TIL] JSP (Java Server Page)

zz132456zz 2022. 4. 5. 00:26
728x90

JSP(Java Server Page)

자바 서버 페이지(JSP)는 HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다. JavaEE 스펙 중 일부로 웹 어플리케이션 서버에서 동작한다.
자바 서버 페이지는 실행시에는 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하다고 불 수 있다. 하지만, 서블릿과는 달리 HTML 표준에 따라 작성되므로 웹 디자인하기에 편리하다.
아파치 스트럿츠나 자카르타 프로젝트의 JSTL 등의 JSP 태그 라이브러리를 사용하는 경우에는 자바 코딩 없이 태그만으로 간략히 기술이 가능하므로 생산성을 높일 수 있다.

JSP 구성요소별 기능 및 사용법

JSP 스크립팅 요소(Scripting Element)

1. 선언 (Declaration) - 멤버변수 선언이나 메소드를 선언하는 영역
형식 : <%! 멤버변수와 method작성 %>

예시)
<%!
String name;

public void init() {
name = "홍길동";
}
%>

2. 스크립트릿 (Scriptlet)  - Client 요청 시 매번 호출 영역으로, Servlet 변환 시 service() method에 해당되는 영역. request, response에 관련된 코드 구현

형식 : <% java code %>

3. 표현식 (Expression) - 데이터를 브라우저에 출력할 때 사용

형식 : <%= 문자열 %>

예시)
안녕 내 이름은 <%= name %>이야.

주의할 점 : <%= 문자열; %> 문자열 뒤 세미콜론(;)은 작성 X

아래 둘은 같은 표현이다.
<%= 문자열 %>
<% out.print(문자열); %> 

4. 주석 (Comment) - 코드 상에서 부가 설명을 작성

형식 : <%-- 주석할 code --%>

5. JSP 지시자 (Directive)

page Directive : 컨테이너에게 현재 JSP 페이지를 어떻게 처리할 것인가에 대한 정보를 제공한다.
형식 : <%@ page attr1="val1" attr2="val2" ... %>

include Directive : 특정 jsp file을 페이지에 포함한다. 여러 jsp페이지에서 반복적으로 사용되는 부분을 jsp file로 만든 후 반복 영역에 include 시켜 반복되는 코드를 줄일 수 있다.
형식 : <%@ include file="파일위치" %>

taglib Directive : JSTL 또는 사용자에 의해서 만든 커스텀 태크(custom tag)를 이용할 때 사용되며 JSP 페이지 내에 불필요한 자바 코드를 줄일 수 있다.
형식 : <%@ taglib prefix="c" url="uri" %>

 

 

JSP 기본객체

기본 객체명 Type  설명
request  javax.servlet.http.HttpServletRequest HTML 폼 요소의 선택 값 등 사용자 입력 정보를 읽어올 때 사용
response  javax.servlet.http.HttpServletResponse 사용자 요청에 대한 응답을 처리하기 위해 사용
pageContext  javax.servlet.jsp.PageContext 각종 기본 객체를 얻거나 forward 및 include 기능을 활용할 때 사용
session  javax.servlet.http.HttpSession 클라이언트에 대한 세션 정보를 처리하기 위해 사용. page directive의 session 속성을 false로 하면 내장 객체는 생성이 안된다.
application  javax.servlet.ServletContext 웹 서버의 애플리케이션 처리와 관련된 정보를 레퍼런스하기 위해 사용
out  javax.servlet.jsp.JspWriter 사용자에게 전달하기 위한 output 스트림을 처리할 때 사용
config  javax.servlet.ServletConfig 현재 JSP에 대한 초기화 환경을 처리하기 위해 사용
page  java.lang.Object 현재 JSP페이지에 대한 참조 변수에 해당됨
exception  java.lang.Exception Error를 처리하는 JSP에서 isErrorPage속성을 true로 설정하면 exception 내장 객체를 사용할 수 있고 기본은 false로 설정되어 있다. 전달된 오류 정보를 담고 있는 내장 객체




JSP 기본객체의 영역(scope)

기본객체  설명
pageContext  하나의 JSP페이지를 처리할 때 사용되는 영역.
한번의 클라이언트 요청에 대하여 하나의 JSP 페이지가 호출되며, 이때 단 한 개의 page객체만 대응이 된다.
페이지 영역에 저장한 값은 페이지를 벗어나면 사라진다. * 커스텀 태그에서 새로운 변수를 추가할 때 사용한다.
request  하나의 HTTP 요청을 처리할 때 사용되는 영역.
웹 브라우저가 요청을 할 때마다 새로운 request 객체가 생성됨.
request 영역에 저장한 속성은 그 요청에 대한 응답이 완료되면 사라진다.
session 하나의 웹 브라우저와 관련된 영역.
같은 웹브라우저 내에서 요청되는 페이지들은 같은 session들을 공유하게 됨. 로그인 정보 등을 저장한다.
application  하나의 웹 어플리케이션과 관련된 영역.
웹 어플리케이션당 1개의 application 객체가 생성됨. 같은 웹 어플리케이션에서 요청되는 페이지들은 같은 application 객체를 공유함



JSP 기본객체의 영역(scope) - 공통 method

- servlet과 jsp 페이지 간에 특정 정보를 주고받거나 공유하기 위한 메소드를 지원한다.

method  설명
void setAttribute(String name, Object value) 문자열 name 이름으로 Object형 데이터를 저장한다. Object형이므로 어떠한 Java 객체도 저장이 가능하다.
Object getAttribute(String name)  문자열 name에 해당하는 속성 값이 있다면 Object 형태로 가져오고 없으면 null을 리턴한다. 따라서 리턴 값에 대한 적절한 형 변환이 필요하다.
Enumeration getAttributeNames()  현재 객체에 저장된 속성들의 이름들을 Enumeration 형태로 가져온다.
void removeAttribute(String name)  문자열 name에 해당하는 속성을 삭제한다.




 

 

 

 

 

 

 

728x90