1. JSP (Java Server Page)
- JSP는 HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어
- JAVA EE 스펙 중 일부로 웹 애플리케이션 서버에서 동작
- JSP는 실행시에는 자바 서블릿으로 변환된 후 실행되므로 ! 서블릿과 거의 유사하다고 볼 수 있지만, 서블릿과 달리 HTML표준에 따라 작성되므로 웹디자인하기 편리하다.
- PHP, ASP, ASP.NET과 비슷한 구조
- JSTL 등의 JSP 태그 라이브러리를 사용하는 경우 자바 코딩없이 태그만으로 간략히 기술이 가능하여 생산성 향상
[출처:위키백과]
2. JSP Scriptlet
선언, 스크립트릿, 표현식, 주석
- 선언 (Declaration)
- 멤버변수 선언이나 메소드를 선언하는 영역, <%! 멤버변수와 method 작성 %>
- 스크립트릿 (Scriptlet)
- Client 요청 시 매번 호출 영역
- Servlet으로 변환 시 service() method에 해당되는 영역
- request, response에 관련된 코드 구현
- <% java code %>
- 표현식 (Expression)
- 데이터를 브라우저에 출력할 때 사용
- <%= 문자열 %> : <%= name %>
- 주의! <%=문자열;%> : 문자열 뒤 세미콜론(;)은 작성 X
- <%=문자열%> == <%out.print(문자열);%> : 같은 표현
- 주석 (Comment)
- 코드 상에서 부가 설명을 작성
- <%-- 주석 할 code --%>
3. JSP Directive
page, include, taglib
- page Directive : 컨테이너에게 현재 JSP 페이지를 어떻게 처리할 것인가에 대한 정보를 제공
- include Directive : 특정 jsp file을 페이지에 포함, 여러 jsp페이지에서 반복적으로 사용되는 부분을 jsp file로 만든 후 반복 영역에 include 시켜 반복되는 코드를 줄일 수 있음
- taglib Directive : JSTL 또는 사용자에 의해서 만든 커스텀 태그를 이용할 때 사용됨, JSP 페이지 내에 불필요한 자바 코드를 줄일 수 있음
JSP 지시자 (Directive) - page
속성 | 기본값 | 설명 |
---|
language | java | 스크립트에서 사용할 언어 지정 |
info | | 현재 jsp 페이지에 대한 설명 |
contentType | text/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 | ture | 현재 JSP 페이지가 멀티 쓰레드로 동작해도 안전한지 여부를 설정하는 것으로 false인 경우 JSP 페이지는 SingleThread로 서비스 된다 |
extends | javax.servlet.jsp.HttpJspPage | 현재 JSP페이지를 기본적인 클래스가 아닌 다른 클래스로부터 상속하도록 변경 |
4. JSP 기본객체
JSP 기본객체
JSP 기본객체의 영역 (scope)
JSP 기본객체의 영역 (scope) - 공통 method
web page 이동 : forward(request, response), sendRedirect(location)
✅ JSP 기본객체
기본객체명 : 설명
request : HTML 폼 요소의 선택 값 등 사용자 입력 정보를 읽어올 때 사용
response : 사용자 요청에 대한 응답을 처리하기 위해 사용
pageContext : 각종 기본 객체를 얻거나 forward 및 include 기능을 활용할 때 사용
session : 클라이언트에 대한 세션 정보를 처리하기 위해 사용, page directive의 session 속성을 false로 하면 내장 객체는 생성이 안된다.
application : 웹 서버의 애플리케이션 처리와 관련된 정보를 레퍼런스하기 위해 사용
out : 사용자에게 전달하기 위한 output스트림을 처리할 때 사용
config : 현재 JSP에 대한 초기화 환경을 처리하기 위해 사용
page : 현재 JSP 페이지에 대한 참조 변수에 해당됨
exception : Error를 처리하는 JSP에서 isErrorPage속성을 true로 설정하면 exception 내장 객체를 사용할 수 있고 기본은 false로 설정되어 있다. 전달된 오류 정보를 담고 있는 내장 객체
✅ JSP 기본객체의 영역 (Scope)
✅ JSP 기본객체의 영역 (Scope) - 공통 method
servlet과 jsp페이지 간에 특정 정보를 주고 받거나 공유하기 위한 메소드를 지원
- 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)
- RequestDispatcher dispatcher = request.getRequestDispatcher(path);
dispatcher.forward(request,response);
- 동일 서버(project) 내 경로
- 기존 URL 유지 (실제 이동되는 주소 확인 불가)
- 기존의 request와 response가 그대로 전달
- 비교적 빠름
- request의 setAttribute(name,value)를 통해 전달
- sendRedirect(location)
- response.sendRedirect(location);
- 동일 서버 포함 타 URL 가능
- 이동하는 page로 변경
- 기존의 request와 response는 소멸되고, 새로운 request와 response가 생성
- forward()에 비해 느림
- request로는 data 저장 불가능, session 이나 쿠키 이용