본문 바로가기
WEB

JSP(Java Server Page)

by 댕꼬 2022. 3. 26.

JSP


JSP란?

자바서버페이지(JSP)는 HTML 내 자바코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다. Java EE 스펙 중 일부로 웹 애플리케이션서버에서 동작한다.

 

JSP 동작흐름

JSP 스크립팅 요소

JSP Scriptlet : JSP페이지에서 자바 코드를 실행할 때 사용되는 코드의 블록

 

선언 

- 멤버변수 선언이나 메소드를 선언 하는 영역

<%! 멤버변수와 method 작성 %>  

 

 스크립트릿

- Client요청 시 매번 호출 영역으로, Servlet으로 변환 시 service() method에 해당되는 영역, requset/response에 관련된 코드 구현

<% java code %>

 

 표현식

- 데이터를 브라우저에 출력할 때 사용

<%= 문자열 %>

 

 주석

- 코드 상 부가설명을 작성 

<%-- 주석 code --%>

 

 

JSP 지시자 (Directive)

 

속성 기본 값 설명
language java 스크립트에서 사용할 언어 지정
info   현재 jsp페이지에 대한 설명
contentType test/html;charset=ISO-8859-1 브라우저로 내보내는 내용의 MIME 형식 지정 및 문자 집합 지정
pageEncoding ISO-8859-1 현재 JSP페이지 문자집합 지정
import   현재 JSP에서 사용할 Java패키지나 클래스 지정
session true 세션의 사용유무 설정
errorPage   에러가 발생할 때 대신 처리될 JSP 페이지 지정
isErrorPage false 현재 JSP 페이지가 에러 핸들링하는 페이지인지 지정하는 요소
buffer 8KB 버퍼의 크기
autoflush true 버퍼의 내용을 자동으로 브라우저로 보낼지에 대한 설정
isThreadsafe true 현재 JSP 페이지가 멀티 쓰레드로 동작해도 안전한지 여부를 설정하는 것으로 false인 경우 JSP페이지는 SingleThread로 서비스 된다.
extends javax.servlet.jsp.HttpJspPage 현재 JSP페이지를 기본적인 클래스가 아닌 다른 클래스로부터 상속하도록 변경

 

JSP 기본객체

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

 

JSP 기본객체의 영역 (scope)

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

공통 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에 해당하는 속성을 삭제한다.

 

WEB page 이동

  forward(request,response) sendRedirect(location)
사용방법 RequestDispatcher dispatcher = request.getRequestDispatcher(path);
dispatcher.forward(request,response);
response.sendRedirect(location);
이동범위 동일서버(project)내 경로 동일서버 포함 타 URL가능
location bar 기존 URL유지
(실제 이동되는 주소확인 불가)
이동하는 page로 변경
객체 기존의 request와 response가 그대로 전달 기존의 request와 response는 소멸되고,
새로운 request와 response가 생성
속도 비교적 빠름 forward( )에 비해 느림
데이터 유지 request의 setAttribute(name,value)를 통해 전달 request로는 data저장 불가능
session이나 cookie를 이용. 

'WEB' 카테고리의 다른 글

Cookie(쿠키)  (0) 2022.03.25
MVC Pattern 이해하기  (0) 2022.03.23
Servlet (서블릿)이해하기 + 실습예제  (0) 2022.03.22

댓글