검색결과 리스트
글
LANGUAGE/JSP
2020. 3. 11. 12:34
갑자기 JSP 소스를 분석해야 하는 친구를 위한 간단정리
(특정 소스를 분석하여 다른언어의 지식이 있는 JSP알못에 맞춰 열거적으로 개념을 설명
한 노트이다.)
JSP (Java Server Page) ?
- HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하고 웹 브라우저에 돌려주는 언어이다. (from 위키백과)
1. 그냥 HTML처럼 사용 +@
서버로 부터 제공받은 Model 데이터를 활용하여
- 조건에 따라 HTML을 생성
- 반복되는 패턴의 HTML을 간단히 생성
2. Controller를 거쳐서 온다. Model 객체에 추가한 속성들을 사용
- JSP에서 다음처럼 적으면 자동으로 model이 가진 해당 속성명칭의 값으로 파싱된다.
${속성명}
3. 지시자
- 특별한 지시를 내릴 때 사용한다. 보통 상투적으로 사용.
- 종류: page, include, taglib
- page: (jsp파일 최상단에 적용)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- include: 자주쓰는 페이지를 불러올 때 사용, (jsp파일내 원하는 곳에 적용)
<%@ include file="include/header.jsp" %>
- taglib: 특정 기능 설정 (jsp파일 최상단에 적용)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!-- 다양한 동적기능 사용가능 --> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!-- 날짜포맷 변경 -->
- page: (jsp파일 최상단에 적용)
4. 스크립틀릿 (Scritlet)
- Java 코드를 사용할 수 있다. 비추!
<% out.println("Hello") %>
5. JSTL (JSP Standard Tag Library)
- 더욱 동적으로 HTML을 생성할 수 있다. 강추!
1. Core Tag
- 설정
- JSP파일 상단에 지시자로 선언
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- JSP파일 상단에 지시자로 선언
- 활용
<c:out />
- 변수의 출력- 일반적인 문자출력
<c:out value="${value}"/>
- c:out을 사용하는 이유는 => 다음은 ElementNode가 아닌 문자그대로
TextNode
로서 출력해주는 역할을 한다.<c:out value="<script type='text/javascript'>alert("Hey!");</script>" />
- 무슨말이냐? => 그냥 ${}로 출력하거나 다음처럼 escapeXml="false" 옵션설정 후 출력하면 TextNode가 아니라
ElementNode
로 받아들여 경고창이 실행된다.<c:out value="<script type='text/javascript'>alert("Hey!");</script>" escapeXml="false" />
- 일반적인 문자출력
<c:forEach />
- 반복문- 단순 자료형 List 반복문
<c:forEach items="${numberList}" var="number" varStatus="status"> <p>${status.count}. <c:out value="${number}" /></p><br/> </c:forEach>
- 객체 List 반복문
<c:forEach items="${itemList}" var="item" varStatus="status"> <p>${status.count}. <c:out value="${item.name}"/> - <c:out value="${item.price}"/></p><br/> </c:forEach>
- 특정 Index 범위 반복문
<c:forEach var="i" begin="0" end="3" step="1"> <p><c:out value="${i}" /></p> </c:forEach>
- 그외
<c:forTokens />
- 단순 자료형 List 반복문
<c:if />
- 조건문 (else는 없다)- 숫자비교
<c:if test="${number == 1}"> <div>One !</div> </c:if>
<c:if test="${number > 0 && number < 10}"> <div>One to Nine !</div> </c:if>
<c:if test="${name == '김포동'}"> <div>포동아!</div> </c:if>
<c:if test="${name != '김포동'}"> <div>포.. 포... Who are you?</div> </c:if>
- 빈값확인 - 문자열(null 또는 ''), 숫자(0), 비어있는 List/배열
<c:if test="${empty number}"> <div>Hello?</div> </c:if>
<c:if test="${empty itemList}"> <div>Hello?</div> </c:if>
- 안 빈값확인 - 위의 빈값 조건이 아닐 때
<c:if test="${not empty someVariable}"> <div>Hello?</div> </c:if>
<c:if test="${not empty itemList}"> <c:forEach items="${itemList}" var="item"> <div><c:out value="${item.name}"/> - <c:out value="${item.price}"/></div> </c:forEach> </c:if>
- 숫자비교
<c:choose />
- Switch문<c:choose> <c:when test="${number == 1}"> <div>You are number 1</div> </c:when> <c:when test="${number == 2}"> <div>You are number 2</div> </c:when> <c:otherwise> <div>You are number 0</div> </c:otherwise> </c:choose>
<c:redirect />
- 페이지 이동!- 이동!
<c:redirect url="/url/to/some.jsp" />
- Prameter와 함께 이동!
<c:redirect url="/url/to/some.jsp"> <c:param name="number" value="10"/> </c:redirect>
- 이동!
<c:url />
- URL 생성<c:url value='/url/to/some.jsp'/>
<c:import />
- 페이지 첨부...
<c:set />
- 변수의 선언 및 제거<c:set var="name" value="김포동" />
<c:remove />
- 변수의 선언 및 제거...
<c:catch />
- 예외 처리...
2. Format Tag
- 설정
- JSP파일 상단에 지시자로 선언
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
- JSP파일 상단에 지시자로 선언
- 활용
- 날짜포맷 변경
<p>날짜: <fmt:formatDate pattern="yyyy-MM-dd HH:mm" value="${noticeVO.regdate}" /></p>
- 날짜포맷 변경