Web Server - JSP, EL, JSTL

Bloooooooooooooog..·2023년 3월 21일
1

JSP 📜

JYP~ 가 아니라 JSP는 HTML에서 JAVA 코드를 사용하기 쉽게 하기 위해 제공하는 형식으로 JAVA의 웹서버 프로그램 스펙으로 변환되어 서비스된다.

JSP의 사용

JSP 파일 최상단에 아래와 같은 지시어를 써서 JSP를 사용한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>    

JSP 기본 문법

<% %> - 스크립틀릿 : 이 안에 java 코드를 작성해서 사용한다.
<%= %> - 출력식, 표현식 : 이 안에 출력할 자바 코드, 변수 등을 사용한다.

EL과 JSTL

EL

JSP 표현식을 조금 더 효율적으로 간단히 작성할 수 있게 고안된 표현 언어
${ key } 형식으로 작성하면 해당 위치에 value가 출력된다.

EL은 null을 빈칸으로 처리하며 get이란 단어 없이 get을 수행한다.
<%= request.getParameter("test") %>으로 쓰인 JSP문법은 ${ param.test }으로 간단히 표현 가능하다.

JSTL

JSP에서 자주 사용되거나 공통적으로 사용되는 JAVA코드들을 간단히 태그화하여 표준으로 제공
webapp/WEB-INF/lib 폴더에 라이브러리를 추가해서 사용 가능하다.
이곳에서 Impl, Spec, EL 파일을 받아서 넣어주면 된다.

JSTL문법

1. 변수 선언 ( c:set )

변수를 선언하고 초기화하는 캐그

<c:set var="num" value="20"/>
<!-- num변수에 값 '20'을 넣음  -->

2. 변수 삭제 ( c:remove )

변수를 삭제. scope속성을 지정하면 지정한 범위 객체만 삭제

<c:remove var="num"/>
<c:remove var="num" scope="session"/>

3. 조건문 if ( c:if)

단독 if문으로 else없이 사용할 때 쓰는 태그 test속성밖에 없다

  • 조건문에서는 문자열도 ==로 비교연산자 사용 가능하다
<c:if test="${1==1}">
	조건문이징
</c:if>

4. 조건문 if~else ( c:choose, c:when, c:otherwise )

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>

5. 반복문 ( c:forEach )

for문과 같은 반복문 태그
속성
var : for문은 int i 처럼 반복 수 정하는 변수
begin : 시작 var 값
end : 끝 var 값
step : 반복시마다 증가할 var 값 (기본 1)
varStatus : 현재 반복 상태와 관련된 정보를 제공하는 변수 선언

  • 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

동적 웹 프로젝트에서 데이터를 주고받을 때 범위를 지정할 수 있으며 그 범위(scope)는 네 종류이다.

page scope

현재 Servlet 또는 JSP만 사용 가능 (1페이지)

	pageContext.setAttribute("pageMsg", "페이지 범위입니다.");
	
	pageContext.setAttribute("str", "page scope");

request

요청받은 페이지와 위임받은 페이지에서 사용 가능(최소 2페이지)

	
	req.setAttribute("message", "request scope에 저장된 메세지입니다.");

session

현재 사이트에 접속된 브라우저 당 1개 생성
브라우저가 종료되거나 session이 만료될 때까지 유지

	HttpSession session = req.getSession();
	session.setAttribute("sessionValue", "999");

appliction

하나의 웹 애플리케이션이 종료될 때까지 유지, 서버 시작부터 종료까지

	ServletContext application = req.getServletContext();
    application.setAttribute("appValue", "애플리케이션 범위 값");
    
profile
공부와 일상

0개의 댓글