[Servlet_JSP] 12. JSP (Java Server Page)

boing·2023년 8월 17일
0

Servlet_JSP

목록 보기
5/6

1. 특징

  • *.jsp
  • 저장경로: WebContent
  • 3단계로 동작
    1. 변환단계 : hello.jsp --> hello_jsp.java
      변환 후 서블릿과 매우 유사, jsp와 서블릿은 동일하다고 볼 수 있음
    2. 컴파일단계 : hello_jsp.java --> hello_jsp.class (컴파일에러가 발생가능함)
    3. 실행단계 : 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) ***

  • custom tag
  • apache에서 제공


🔖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 directive tag
<%@ 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" %> //include directive tag
<jsp:include page="common/top2.jsp" flush="true"/> //jsp action tag

//declaration tag
<%!
	int num = 10;
	public void a(){}
%>

//scriptlet tag
<%
int num2=10;
%>: <%= num %> //expression tag
profile
keep coding

0개의 댓글