JSP란?
Java Server Page의 줄임말입니다.
서버 측에서 웹페이지를 동적으로 생성하는 기술입니다.
HTML에 자바 코드를 삽입하는 형식으로 개발되고, 동적인 웹페이지 구현에 적합합니다.
*Template Engine입니다.
MVC(Model, View, Controller)의 View 역할을 담당합니다.
Template Engine 이란?
템플릿 양식과 특정 데이터 모델에 따른 입력 자료를 합성하여 결과 문서를 출력하는 소프트웨어 또는 소프트웨어 컴포넌트를 말합니다.
웹 템플릿 엔진은 지정된 템플릿 양식과 데이터가 합쳐져서 HTML 문서를 출력하는 소프트웨어를 말합니다.
JSP, Thymeleaf가 있다고 합니다.
JSP 내부 동작 과정
- 클라이언트가 웹 브라우저를 사용하여 JSP 파일을 요청합니다.
- 웹 서버는 요청을 수신하고 JSP 파일을 읽습니다.
- JSP 파일은 웹 서버에서 서블릿으로 변환됩니다.
- 서블릿은 웹 서버에서 실행되고 요청을 처리합니다.
- 서블릿은 생성된 데이터를 웹 페이지로 변환합니다.
- 웹 서버는 웹 페이지를 클라이언트로 응답합니다.
JSP 기본 문법
1. JSP 주석
<%-- --%>
2. Scriptlet (스크립트릿)
java code 삽입 시 사용합니다. service 계열 메서드 내에 코드로 삽입합니다.
<% %>
3. Expression 출력
Servlet으로 변형되면 out.print()로 생성되고, 출력 시 사용됩니다.
<%= %>
4. Declaration 선언
멤버 변수 또는 메서드를 정의할 때 사용합니다.
<%! %>
4. Directive 지시
웹 컨테이너에게 현 페이지의 정보를 알리는 역할 ( import, encoding, errorPage 등)
<%@ %>
예제
코드가 복잡해 보이나 읽어보면 간단한 코드입니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp basic</title>
</head>
<body>
<!-- html 주석 -->
<%-- jsp 주석 --%>
jsp 기본 문법
<br>
<br> 호소세 블로그
<br>
<br>
<%-- 아래 라인을 5번 반복한다 --%>
<%
for (int i = 0; i < 5; i++) {
%>
<%=i%>. 많이 사랑해주세요.😍 <br>
<%
}
%>
<% int count=1; %>
<%! int count; %>
local variable count <%=count++ %><br>
instance variable count <%=this.count++ %>
<br><br>
<%=new Date().toString() %>
</body>
</html>
설명에 앞서 자신이 작성한 jsp가 servlet 파일로 변경된 것을 확인하면서 예시를 보면 더욱 쉽습니다.
그 파일이 어디 있냐면 자신이 처음 apache-tomcat 경로 설정할 때 해놓은 폴더에서 아래 경로를 따라 들어가게 되면
/Downloads/apache-tomcat-9.0.75/work/Catalina/localhost/webstudy8-jsp-basic-inst/org/apache
이러한 파일이 있을 것입니다. 이것을 열어 자신이 작성한 코드와 비교해 보면 좋습니다.
1. 1번째 줄에 Directive로 웹컨테이너에게 현 페이지의 정보를 알리고 있습니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.Date"%>
- language: JSP 페이지에서 사용할 프로그래밍 언어를 지정합니다. 이 경우 Java입니다.
- contentType: JSP 페이지가 생성할 문서 유형을 지정합니다. 이 경우 HTML입니다.
- charset: JSP 페이지가 생성할 문서의 문자 세트를 지정합니다. 이 경우 UTF-8입니다. JSP 페이지가 생성할 문서의 문자 세트를 지정하는 데 사용됩니다. 이 속성은 브라우저가 JSP 페이지를 인식하는 데 사용됩니다.
- pageEncoding: JSP 페이지의 문자 세트를 지정합니다. 이 경우 UTF-8입니다. JSP 페이지의 문자 세트를 지정하는 데 사용됩니다. 이 속성은 JSP 페이지가 서버에서 처리되는 데 사용됩니다.
2. 주석 기능 사용
<%-- jsp 주석 --%>
3. 자바 코드 삽입
<%
for (int i = 0; i < 5; i++) {
%>
<%=i%>. 많이 사랑해주세요.😍 <br>
<%
}
%>
Servlet으로 어떻게 변형되었는지 확인해 보겠습니다.
for (int i = 0; i < 5; i++) {
out.write('\r');
out.write('\n');
out.write(' ');
out.print(i);
out.write(". 많이 사랑해주세요.😍 <br>\r\n");
out.write(" ");
}
4. 멤버 변수 선언 및 출력
<% int count=1; %>
<%! int count; %>
local variable count <%=count++ %><br>
instance variable count <%=this.count++ %>
<br><br>
<%=new Date().toString() %>
1번째 줄에 작성한 int count=1은 멤버 변수 선언이 아니라 지역변수를 선언한 것이고,
2번째 줄에 작성한 int count는 멤버변수를 선언한 것입니다.
그래서 이 파일을 실행하면 local variable count는 변화하지 않지만, instance variable count는 접속할 때마다 count가 계속 증가합니다. (직접 작성해 보시면서 확인해 보세요.)
소감
처음에 <%> 뭐 이런 태그가 많아서 대체 이것을 왜 사용하는 거라고 생각했지만, servlet으로 변형된 파일을 보니 너무 길고 지저분하더라고요.
항상 처음은 어렵지만 조금씩 포기하지 말고 적응해나가다 보면 익숙해지고 좋아지지 않을까 생각이 듭니다. 사실 저는 벌써부터 코드 자체가 짧아져서 사용하기 좋다고 생각합니다.
'코딩 개발 > Java' 카테고리의 다른 글
JSP HTTP 통신 (HTML <form>, <a> tag) (0) | 2023.05.23 |
---|---|
Cookie & Session (0) | 2023.05.22 |
Servlet - ServletConfig, ServletContext (0) | 2023.05.20 |
Java - Servlet 연동 (HTML <form>, <a> tag) (4) | 2023.05.19 |
Servlet 생명 주기 (Servlet Life Cycle) (0) | 2023.05.18 |