티스토리 뷰
JSP(Java Server Pages)
- 동적인 웹 콘텐츠를 생성하기 위한 서버 측 기술
- HTML 페이지 내에 Java 코드를 포함시켜 웹 서버에서 실행된 후, 클라이언트에 HTML을 전송하는 방식으로 동작한다.
- 자바 서버 페이지의 약자로, 웹 애플리케이션 개발을 위한 서버 사이드 기술(Server-Side Rendering; SSR)입니다.
- HTML, CSS, JavaScript 등의 클라이언트 사이드 언어와 함께 사용되어 동적인 웹 페이지를 생성하는 데 사용합니다.
- 자바 코드를 HTML 코드에 삽입하여 웹 서버에서 실행할 수 있게 해주며, 그 결과는 클라이언트의 웹 브라우저로 전송됩니다.
SSR Server-Side Rendering(서버 측 렌더링)의 약어 클라이언트에게 웹 페이지를 제공하기 전에 서버에서 웹 페이지를 렌더링하여 HTML을 생성하는 웹 개발 방법론입니다. 이 방법론은 클라이언트에게 정적인 HTML을 먼저 제공하고, 클라이언트 측에서 JavaScript를 사용하여 동적인 콘텐츠를 추가하는 방식인 Client-Side Rendering(CSR)과 대비됩니다. |
Servlet VS JSP
JSP 역할
웹 애플리케이션에서 사용자 요청을 처리하고, 동적으로 생성된 HTML을 클라이언트에게 반환한다.
프론트엔드와 백엔드의 중간 역할을 하며, HTML과 같은 프론트엔드 코드와 Java와 같은 백엔드 코드를 혼합하여 사용할 수 있다.
JSP의 기본 동작 원리
클라이언트 요청: 클라이언트(웹 브라우저)가 JSP 페이지에 접근한다.
서버 처리: 웹 서버(아파치 톰캣)가 JSP 페이지를 찾아 Java 서블릿으로 변환한 후 컴파일하여 실행한다.
응답 생성: JSP 페이지가 실행되어 동적인 HTML을 생성하고, 이를 클라이언트에게 전송한다.
<%-- JSP 디렉티브 : 페이지 속성 설정 --%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%-- JSP 스크립트릿 : Java 코드 영역 --%>
<%
// 현재 날짜와 시간을 가져오기
Date now = new Date();
// 날짜 포맷 지정
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = sdf.format(now);
%>
<%-- HTML과 함께 JSP 표현식 사용하여 날짜 출력(sysout과 동일) --%>
<p>현재 시간: <%= formattedDate %></p>
<%-- JSP 선언문 : 변수 선언(멤버변수 선언만 한 것) --%>
<%!
int number = 10;
String message = "Hello, JSP!";
%>
<%-- HTML과 함께 JSP 표현식 사용하여 변수 출력 --%>
<p>숫자: <%= number %></p>
<p>메시지: <%= message %></p>
<%-- JSP 주석 : HTML 주석 --%>
<!-- 이 부분은 HTML 주석입니다. JSP에서는 이렇게 사용할 수 있습니다. -->
<%-- JSP 액션 태그 : Java 코드 실행 및 제어 --%>
<%-- if-else 구문 --%>
<% if (number > 5) { %>
<p>숫자가 5보다 큽니다.</p>
<% } else { %>
<p>숫자가 5보다 작거나 같습니다.</p>
<% } %>
<%-- JSP 액션 태그 : include 지시자를 사용한 다른 JSP 파일 포함 --%>
<%-- <%@ include file="included.jsp" %> -->
<%-- JSP 표현언어(EL) : 변수 값 출력 --%>
<p>EL 표현식을 사용한 숫자: ${10}</p>
<p>EL 표현식을 사용한 메시지: ${"Hello, JSP!"}</p>
JSP 처리 과정
웹 브라우저에 JSP 페이지에 해당하는 URL을 입력하면, 톰캣 서버는 다음과 같은 과정을 거쳐 JSP 페이지를 실행한다.
*알아둘 것*
JSP 실행 = JSP 페이지를 컴파일한 결과인 서블릿 클래스를 실행
'JSP' 카테고리의 다른 글
JSP 기초 문법 (0) | 2024.07.03 |
---|---|
JSP 라이프사이클 (0) | 2024.07.03 |
서블릿 필터와 리스너 (0) | 2024.07.02 |
server.xml, context.xml, web.xml (0) | 2024.07.02 |
서블릿과 DB 연동 (0) | 2024.07.01 |