JSP (Java Server Page)
🎯오늘 하루는
드디어 SQL, JDBC, 서블릿을 넘어 JSP 수업이 시작됐다.
JDBC부터 DAO패턴, 서블릿... 멘탈이 털릴 뻔 했지만 JSP 그리고 SPRING에 가면 퍼즐이 맞춰지는 느낌이 들거라는 강사님의 말을 반신반의 했었는데 오늘 게시판 구축 프로젝트를 하면서 정말로 그런 느낌이 들었다.
이걸 하려고 빌드업을 한거구나! 하면서 왠지 자신감도 생기고 흥미도 생기는 느낌이다.
변환 단계(jsp → java) ⇒ 컴파일 단계(java → class) ⇒ 실행 단계 (class → html 반환)의 3가지 단계를 거쳐서 동작된다는 것을 알았고 직접 확인해보았다.
Model 1 Architecture는 현재는 거의 사용하지않고 Model 2 Architecture을 사용하기때문에 흐름을 파악하고 잘 기억해두자!
이때 주의할 점은 JSP로 직접 요청하는 것은 금지하고, 반드시 서블릿으로 요청해야한다는 점 ★★
📖 정리
1️⃣ 특징
- *.jsp
- 저장경로는 html과 동일 ⇒ 이클립스의 webcontent 폴더에 저장
- 3단계로 동작된다.
- 가. 변환단계
hello.jsp ⇒ hello_jsp.java ( 서블릿과 매우 유사 ) jsp와 서블릿은 동일하다. - 나. 컴파일 단계
hello_jsp.java ⇒ hello_jsp.class ( 컴파일 에러가 발생될 수 있다. ) - 다. 실행 단계
hello_jsp.class ⇒ 실행결과는 html로 반환됨 ( 서블릿과 기능이 동일 )
- 가. 변환단계
2️⃣ Model 1 Architecture
- 현재는 거의 사용 안함
- JSP로만 웹 어플리케이션 개발하는 방법
- JSP가 client 요청에 대한 로직 처리와 view에 대한 처리를 모두 수행한다.
- client로부터 요청이 들어오면 JSP 페이지는 java beans나 별도의 service class를 이용하여 작업을 처리하고, 결과를 client에 출력한다.
- 단점
- view 코드와 로직처리르 위한 java코드가 섞여있어 복잡하다.
- jsp 코드에 Back-end와 Front-end가 혼재되어있어 분업이 힘들다.
- 유지보수가 어렵다.
- 확장성이 나쁘다.
3️⃣ Model 2 Architecture ( MVC )
- MVC 패턴을 웹개발에 도입한 구조이다.
- client 요청에 대한 처리는 Servlet이, logic 처리는 java class (Service, Dao, ...)가 담당하고 JSP는 view에 대한 처리만 수행한다.
- Model (Service, DAO, Java beans)
Logic 처리 (Controller로부터 넘어온 data를 이용하여 수행하고 그에 대한 결과를 다시 Controller로 return) - View (JSP)
모든 화면 처리 담당 (Client 요청에 대한 결과뿐 아니라 controller에 요청을 보내는 화면단도 처리) - Controller (Servlet)
Client 요청을 분석하여 Logic 처리를 위한 Model 호출 (필요에 따라 request, session 등의 결과 data를 저장하고, redirect 또는 forward 방식으로 jsp page를 이용하여 출력)
- Model (Service, DAO, Java beans)
- 장점
- view 코드와 로직처리 코드가 분리되어 있어 유지보수가 쉽다.
- 확장성이 뛰어나다.
4️⃣ JSP 구성요소 ( 태그로 되어 있다. )
- HTML 태그
- 주석 : <!— 주석문 —>
- JSP 태그
- 주석 : <%— 주석문 —%>
- directive tag : <%@ page 속성명=속성값 속성명=속성값 … %>
<%@ include 속성명=속성값 속성명=속성값 … %>
<%@ taglib 속성명=속성값 속성명=속성값 … %> - declaration tag : <%! 자바코드 %>
- scriptlet tag : <% 자바코드 %>
- expression tag : <%= 변수 %>
👉 👉 👉 자바코드를 사용한다. 화면을 꾸며주는 웹 디자이너에게는 매우 큰 문제였다.
해결 : EL과 JSTL
- EL ( Expression Language ) ★
- ${ 값 }
- JSTL ( JSP Standatd Tag Library ) ★
- 커스텀 태그
예) <hello></hello> - apache에서 개발자들이 많이 필요로 하는 커스텀 태그를 제공 ( library )
예) <c:if>
<c:foreach>
…
- 커스텀 태그
'Programming Language > JSP' 카테고리의 다른 글
게시판 구축 프로젝트(3) - 글 자세히 보기 (0) | 2023.08.18 |
---|---|
게시판 구축 프로젝트(2) - 글쓰기 (0) | 2023.08.18 |
게시판 구축 프로젝트 (0) | 2023.08.17 |
내장객체 (내장변수) (0) | 2023.08.17 |
JSP tag (0) | 2023.08.17 |