형식 서블릿 - Java 코드 내에 HTML 코드가 삽입되어 있는 형태입니다. JSP - HTML 코드내에 Java 코드가 삽입되어 있는 형태입니다.
목적 서블릿 - 자바코드를 이용한 Business Logic 처리에 적합합니다. 따라서 MVC 패턴의 Controller 역할로 사용됩니다. JSP - 태그를 이용해서 Presentation Logic 처리에 적합합니다. 따라서 MVC 패턴의 View 역할로 사용됩니다.
JSP 기본요소
다음은 JSP에서 사용 가능한 기본 태그 요소입니다.
HTML 요소
JSP 스크립팅 요소
JSP 표준 액션태그 요소
EL 요소
커스텀 태그 라이브러리 요소
JSP 스크립팅 요소
JSP 스크립팅 요소는 JSP 페이지가 서블릿으로 변환시, JSP 엔진에 의해 처리됩니다.
JSP Script Sintax
Conmment tag : <%--주석--%>
Directive tag : <%@지시자 --%>
Declaration tag :<%!자바 선언문 %>
Scriptlet tag :<% 자바코드 %>
Expression tag :<%= 자바표현식 %>
Directive tag - JSP같은 서버 스크립팅 언어는 Include로 웹 페이지의 일부분을 다이나믹하게 구현합니다.
세션 트래킹(Session Tracking)은 가상의 연결에 기반한 클라이언트의 상태를 지속적으로 모니터링하는 것을 의미합니다.
세션 트래킹의 목적
HTTP(Hyper Text Trasfer Protocol)은 하나의 요청과 하나의 응답으로 이루어진 전송 프로토콜입니다.
즉 HTTP는 상태 정보를 유지할 수 없는 프로토콜이므로, 이를 보완하기 위해 세션 트래킹이라는 추상적인 개념을 도입했습니다.
이러한 세션 트래킹의 핵심은 인증 관리입니다.
세션 트래킹은 클라이언트의 인증 상태와 인가 상태의 변화를 지속적으로 모니터링하며 접근 제어를 하는 것을 목적으로 합니다.
세션 식별자
동시에 요청을 보내는 수 많은 클라이언트를 고유하게 식별해야만 각 클라이언트의 상태를 트래킹할 수 있습니다.그래서 세션 ID를 통해 각 클라이언트를 식별하여 트래킹을 수행합니다.
간단한 서블릿 코드를 작성하고 cmd를 통해 세션 ID를 확인합니다.
@Log4j2
@NoArgsConstructor
@WebServlet("/TTT")
public class TTTServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
log.trace("service(req, res) invoked.");
HttpSession session = req.getSession();
} //service
} // end class
즉, 최초로 요청을 전송한 클라이언트에게 서버가 쿠키를 통해 세션 ID를 부여하고 한번 세션 ID를 부여받은 클라이언트는 다음 요청 전송 시, 요청 헤더에 세션 ID를 함께 할당하여 전송합니다.그럼 서버는 해당 요청과 세션 ID를 함께 수신함으로서, 세션 트래킹이 수행되며 이러한 세션 ID는 서블릿의 공유 데이터 영역인 Session Scope에 할당됩니다.