728x90
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를 이용. |
728x90
'WEB' 카테고리의 다른 글
Cookie(쿠키) (0) | 2022.03.25 |
---|---|
MVC Pattern 이해하기 (0) | 2022.03.23 |
Servlet (서블릿)이해하기 + 실습예제 (0) | 2022.03.22 |
댓글