JSP JavaServer Pages
- View Template 중 하나
- 서버 사이드 스크립트 언어
- HTML 표준에 따라 작성 된다.
JSP 동작 구조
- 클라이언트에서 서비스가 요청되면 JSP 의 실행을 요구
- JSP 는 WAS 의 서블릿 컨테이너에서 서블릿 원시코드로 변환
- 서블릿 원시코드는 바로 컴파일된 후 실행되어 결과를 HTML 형태를 클라이언트에 반환
JSP 구조
- HTML 기반 위에 Java 코드를 작성한다.
템플릿 데이터
- HTML, JavaScript, CSS, JSON, XML, TEXT
- 클라이언트로 출력되는 콘텐츠
- 서블릿 코드를 생성할 때 출력문으로 바뀐다.
- 톰캣의 경우 out.println 으로 바뀐다.
Directives 지시자
page 지시자
- JSP 페이지와 관련된 속성을 정의할 때 사용하는 태그
- import=”java.util.ArrayList” 도 가능
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
taglib 지시자
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Scriptlet Elements 스크립트릿
<% %>
- JSP 문법에 가장 기본이 되는 태그
- 가급적 사용을 안하는 것을 권장 (유지 보수가 어려워지고 협업에 어려움이 따른다.)
<% %>
사이에 실행될 Java 코드 작성
- 변수 선언, 메서드 실행 가능
- 스크립트릿 태그 안에 작성한 코드는 서블릿 파일을 만들 때 그대로 복사된다.
<body>
<% if(true){ System.out.println("TRUE");} %>
</body>
Declarations 선언문
<%! %>
- 변수나 메서드 등을 선언할 때 사용하는 태그
- 서블릿 클래스의 멤버 (변수, 메서드) 를 선언할 때 사용
- 선언만 가능
- JSP 에서 작성 위치는 상관 없다. (대부분 문서 상단에 위치)
- 선언문은 _jspService() 밖 클래스 블록 안에 복사
<body>
<%! String name = "PGRRR"; %>
<%! public int add(int a, int b){ return a+b; } %>
</body>
Expressions 표현식
<%= %>
- 문자열을 출력할 때 사용
- 결과를 반환하는 Java 코드를 작성해야 한다.
- 표현식은 출력문으로 만들어지며 스크립트릿과 같이 _jspService() 안에 순서대로 복사
;
(세미콜론) 을 작성하지 않는다.
<body>
<div><%= name %></div>
<div><%= add(5, 5) %></div>
</body>
EL Expression Language
- JSP 2.0 에서 추가된 스크립트 언어
- 기존의 Script tag 의 표현식
<%= %>
태그에서 ${}
로 변경
- JSP 속성 영역에 저장된 속성 객체의 property 를 출력
- 리터럴 데이터, 다양한 연산 결과 출력 가능
Servelt Data Storge 서블릿 데이터 보관소
데이터 접근
<object>.setAttribute(<key>, <value>);
<object>.getAttribute(<key>);
ServletContext
- 웹 애플리케이션이 시작될 때 생성, 종료될 때까지 유지
- 웹 애플리케이션이 실행되는 동안 모든 서블릿이 사용 가능
HttpSession
- 클라이언트 최초 요청시 생성되어 브라우저를 닫을 때까지 유지
- 클라이언트 당 한 개씩 생성
- 보통 로그인할 때 보관소를 초기화하고 로그아웃하면 저장된 값 삭제
ServletRequest
- 클라이언트의 요청이 들어올 때 생성되서 응답할 때까지 유지
JspContext