JYP~ 가 아니라 JSP는 HTML에서 JAVA 코드를 사용하기 쉽게 하기 위해 제공하는 형식으로 JAVA의 웹서버 프로그램 스펙으로 변환되어 서비스된다.
JSP 파일 최상단에 아래와 같은 지시어를 써서 JSP를 사용한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% %> - 스크립틀릿 : 이 안에 java 코드를 작성해서 사용한다.
<%= %> - 출력식, 표현식 : 이 안에 출력할 자바 코드, 변수 등을 사용한다.
JSP 표현식을 조금 더 효율적으로 간단히 작성할 수 있게 고안된 표현 언어
${ key } 형식으로 작성하면 해당 위치에 value가 출력된다.
EL은 null을 빈칸으로 처리하며 get이란 단어 없이 get을 수행한다.
<%= request.getParameter("test") %>으로 쓰인 JSP문법은 ${ param.test }으로 간단히 표현 가능하다.
JSP에서 자주 사용되거나 공통적으로 사용되는 JAVA코드들을 간단히 태그화하여 표준으로 제공
webapp/WEB-INF/lib 폴더에 라이브러리를 추가해서 사용 가능하다.
이곳에서 Impl, Spec, EL 파일을 받아서 넣어주면 된다.
변수를 선언하고 초기화하는 캐그
<c:set var="num" value="20"/>
<!-- num변수에 값 '20'을 넣음 -->
변수를 삭제. scope속성을 지정하면 지정한 범위 객체만 삭제
<c:remove var="num"/>
<c:remove var="num" scope="session"/>
단독 if문으로 else없이 사용할 때 쓰는 태그 test속성밖에 없다
<c:if test="${1==1}">
조건문이징
</c:if>
if~else문과 같은 사용으로
c:choose : when, otherwise를 감싸는 태그
c:when : if/ else if를 나타내는 태그. 속성은 test밖에 없음. (조건 작성 속성)
c:otherwise : else를 나타내는 태그
<c:set var="temp2" value="150"/>
<!-- 변수 설정 -->
<c:choose>
<c:when test="${temp2 > 100 }">
100보다 크다
</c:when>
<c:when test="${ temp2 <100 }">
100보다 작다
</c:when>
<c:otherwise>
100과 같다
</c:otherwise>
</c:choose>
for문과 같은 반복문 태그
속성
var : for문은 int i 처럼 반복 수 정하는 변수
begin : 시작 var 값
end : 끝 var 값
step : 반복시마다 증가할 var 값 (기본 1)
varStatus : 현재 반복 상태와 관련된 정보를 제공하는 변수 선언
current : 현재 반복 횟수(현재 var 값) 또는 현재 반복 접근 중인 객체(컬렉션/배열 요소)
index : 현재 인덱스값 반환 (0부터 시작)
count : 현재 몇바퀴째인지 반복 횟수 반환 (1부터 시작)
first : 첫 번째 반복이면 true, 아니면 false
last : 마지막 반복이면 true, 아니면 false
<c:forEach var="chk" items="${배열}" varStatus="vs">
<li>
index : ${ vs.index } <br>
count : ${ vs.count } <br>
current : ${ vs.current } <br>
first : ${ vs.first } <br>
last : ${ vs.last } <br>
체크된 값 : ${ chk }
</li>
</c:forEach>
동적 웹 프로젝트에서 데이터를 주고받을 때 범위를 지정할 수 있으며 그 범위(scope)는 네 종류이다.
현재 Servlet 또는 JSP만 사용 가능 (1페이지)
pageContext.setAttribute("pageMsg", "페이지 범위입니다.");
pageContext.setAttribute("str", "page scope");
요청받은 페이지와 위임받은 페이지에서 사용 가능(최소 2페이지)
req.setAttribute("message", "request scope에 저장된 메세지입니다.");
현재 사이트에 접속된 브라우저 당 1개 생성
브라우저가 종료되거나 session이 만료될 때까지 유지
HttpSession session = req.getSession();
session.setAttribute("sessionValue", "999");
하나의 웹 애플리케이션이 종료될 때까지 유지, 서버 시작부터 종료까지
ServletContext application = req.getServletContext();
application.setAttribute("appValue", "애플리케이션 범위 값");