1. 특징
*.jsp
- 저장경로: WebContent
- 3단계로 동작
- 변환단계 :
hello.jsp
--> hello_jsp.java
변환 후 서블릿과 매우 유사, jsp와 서블릿은 동일하다고 볼 수 있음
- 컴파일단계 :
hello_jsp.java
--> hello_jsp.class
(컴파일에러가 발생가능함)
- 실행단계 :
hello_jsp.class
--> html
로 반환됨 (서블릿과 동일)
2. Architecture
- Model 1 Architecture
Browser -- JSP -- Service -- DAO -- DB
- jsp로만 웹어플리케이션 개발하는 방법
- 현재 거의 사용하지 않음
- Model 2 Architecture (MVC)
↗ Servlet ↘↖
Browser ↓요청위임 Service -- DAO -- DB
↖ JSP
- servlet이 요청받고 JSP가 응답하는 방법
- Service, DAO
DB연동이 포함된 비즈니스 로직 처리 => Model
- Servlet
java코드 내에 html코드 삽입. 화면처리에 부적합.
Model과 View 연계 => Controller
- JSP
html코드 내에 java코드 삽입. 화면 로직 구현에 최적화 => View
- 각자 잘하는 거 하자!
3. JSP 구성요소
가. html태그
나. jsp태그
- Comment tag :
<%-- 주석 --%>
- Directive tag :
<%@ 지시자 %>
<%@ page 속성명=속성값, ... %>
<%@ include 속성명=속성값, ... %>
<%@ taglib 속성명=속성값, ... %>
- Declaration tag :
<%! 자바 선언문 %>
- Scriptlet tag :
<% 자바코드 %>
- Expression tag :
<%= 자바 변수 %>
다. EL (Expression Language) ***
라. JSTL (Jsp Standard Tag Library) ***
🔖1. Directive tag <%@ 지시자 %>
가. page directive <%@ page %>
- jsp에 특정 설정정보를 지정
- 여러번 사용 가능, 순서 상관없음
- contentType="text/html; charset=UTF-8" //한글설정
- <%@ page import="java.util.ArrayList" %> //사용법 같음
<%@ page import="java.util.Date" %>
- errorPage="error.jsp" //예외 발생 시 처리하는 에러페이지를 지정 (현재 MVC모델에서 잘 쓰지 않음)
- isErrorPage="true" //error.jsp - 예외처리를 할 수 있는 jsp임을 지정
- session="false" //기본은 true. false지정시 Httpsession(내장객체) 사용 불가
나. include directive <%@ include %>
- 여러 페이지에서 공통되는 화면을 따로 만들어두고 불러서 재사용
- 코드 위치 중요. 코드 작성 위치에 jsp파일 내용으로 치환됨(정적)
- 중복되는 필요없는 태그들 다 삭제하기 (<!DOCTYPE ~~~ )
- include 방법
- include directive (정적으로 삽입)
<%@ include file="top.jsp" %>
=>작성 위치에 jsp파일의 내용으로 치환됨(정적)
- jsp action tag (동적으로 삽입)
<jsp:include page="top.jsp" flush="true"/>
=> 작성 위치에 jsp파일이 실행결과값으로 치환됨(동적)
(cf. include 외 나머지 jsp action tag (<jsp: ~ >) 는 볼 필요 없음! )
cf. class 파일 생성 경로
C:\apache-tomcat-9.0.78\work...\jsp\common
다. taglib directive <%@ taglib %>
- <%@ taglib prefix="네임스페이스명" uri="TLD파일 URI" %>
- 라이브러리 필요
- JSTL에서 사용됨
🔖2. Declaration tag <%! 자바 선언문 %>
- 거의 사용안함
- 서블릿의 멤버변수, 멤버메서드 동작 (deGet, doPost제외)
🔖3. Scriptlet tag <% 자바코드 %>
- 가장 많이 사용됨!!
- 서블릿의 doGet, doPost에서 했던 작업. 자바코드 똑같이 작업
- 위치중요X, 변환시 서비스메서드에 포함됨
🔖4. Expression tag <%= 자바 변수 %>
- 변수값을 브라우저에 출력
- servlet :
out.print("값: " + num);
- jsp :
값: <%= num %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ page import="java.util.Date"%>
<%@ page import="java.util.ArrayList"%>
<%@ include file="common/top.jsp" %>
<jsp:include page="common/top2.jsp" flush="true"/>
<%!
int num = 10;
public void a(){}
%>
<%
int num2=10;
%>
값: <%= num %>