JSP -6

김정현·2024년 6월 13일
0

JSP

목록 보기
7/13

JSP 내장 객체

  1. HttpServletRequest request -> 객체??
  2. HttpServletResponse response
  3. PageContext pageContext
  4. ServletContext application
  5. ServletConfig config
  6. HttpSession session
  7. Object page / this
  8. JspWriter out

  9. Throwable exception

-request, response 객체인 이유 : HttpServletRequest 인터페이스의 미완성 메서드의 구현을 TOMCAT에서 하기 때문에

JSP 주석

<%-- 주석 --%> : 번역 X

/* */ : 자바 코드의 주석으로 번역

디렉티브 태그

<%@ .... %>

page

errorPage => 에러 출력 페이지 설정
isErrorPage="true" : 번역될때 exception 내장 객체 생성
isElIgonred="true" : EL 식 사용 불가 X
(Expression Language)
${식}

<%@ page 속성1="값" [속성2 = "값2" ..] %>
  • import

    _jsp.java 파일에 import 됨
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*, java.time.LocalDateTime" %>
  • buffer size

    페이지 버퍼 사이즈 조절
<%@ page buffer="32kb" %>

//_jsp.java

 pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 32768, true);
  • 에러 처리

    //에러가 나는 페이지 jsp 파일
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ page errorPage="error.jsp" %>
    <%
        int num1 = 0;
        int num2 = 10;
        int result = num2 / num1;
    %>

//에러처리할 페이지

    <%@ page contentType="text/html; charset=UTF-8" %>
    <h1>에러 발생</h1>

  • 에러내용 메세지
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ page isErrorPage="true" %>
    <h1>에러 발생</h1>
    <%=exception.getMessage()%>
    <%
        exception.printStackTrace();
    %>

  • 바뀐 에러발생 페이지

  • EL

${10 + 20}

// 페이지에 30 출력됨

<%@ page isELIgnored="true" %> : EL 사용 안함

// 페이지에 ${10 + 20} 출력됨


include

JSP, 서블릿, 텍스트 파일 출력 결과물을 물리적으로 포함

    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ include file="header.jsp" %>
    <main>
        <h1>메인 영역</h1>
    </main>
    <%@ include file="footer.jsp" %>

ex01에서 footer와 header을 연결해줌

  • footer, header 파일도 존재 하지 않음

taglib (다음에 더 집중적으로 함)

태그 라이브러리
JSTL - 3.0
uri="jakrta.tags.core"

참고)
JSTL(1.2~)
uri="http://java.sun.com/jsp/jstl/core|fmt|functions"

https://mvnrepository.com/artifact/org.glassfish.web/jakarta.servlet.jsp.jstl/3.0.1

액션태그

  • forward

    페이지 이동 / 버퍼의 통제
    // 실제 이동은 아님 (화면은 바뀌어 보임. 상태는 200)
    <%@ page contentType="text/html; charset=UTF-8" %>
    <h1>ex01.jsp</h1>
    <jsp:forward page="ex02.jsp"></jsp:forward>
    
    

응답 버퍼를 교체해버림.


// 실제로 이동함

    <%@ page contentType="text/html; charset=UTF-8" %>
    <h1>ex03.jsp</h1>
    <%
        response.sendRedirect("ex02.jsp");
    %>

Location 헤더도 추가됨(상태도 302임)

  • include

    페이지 추가 / 버퍼의 통제

    <%@ page contentType="text/html; charset=UTF-8" %>
    <jsp:include page="header.jsp" />
    <main>
        <h1>내용 영역</h1>
    </main>
    <jsp:include page="footer.jsp" />
    

forward는 버리고 include는 추가함.

RequestDispatcher

    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ page import="jakarta.servlet.*" %>
    <h1>ex01.jsp - 상단</h1>
    <%
        RequestDispatcher rd = request.getRequestDispatcher("ex02.jsp");
//        rd.forward(request, response);
        rd.include(request, response);
    %>
    <h1>ex01.jsp - 하단</h1>

참고)
RequestDispatcher
forward(...)
include(..)
M
V(View) - JSP 담당
C(Controller) - Servlet 담당

디렉티브와 액션태그 차이

디렉티브: JSP 페이지의 속성 설정 및 컴파일 시 동작을 정의합니다. 정적인 정보 설정에 사용
액션 태그: JSP 페이지에서 동적으로 기능을 실행하거나 제어를 전환할 때 사용. 동적인 작업에 유용하며, 실행 시점에서 동작

0개의 댓글