2024. 9. 11. 15:35ㆍJSP
EL : Expression Language
EL 형식을 통해 자바 코드를 최소화하고 데이터를 쉽게 출력하거나 조작할 수 있음
표현 방법: ${ } (예시 : ${username})
<% %>를 이용해 자바에서 전달할 값을 설정, 설정받은 값을 전달
예제
<%
request.setAttribute("username", "홍길동");
request.setAttribute("userage", 20);
request.setAttribute("balance", 160.88);
request.setAttribute("fruits", new String[] { "사과", "바나나", "포도" });
%>
<!-- 변수 출력 -->
<p>사용자 이름 : ${username }</p>
<p>사용자 나이 : ${userage }</p>
<p>사용자 잔고 : ${balance }</p>
<!-- 배열 출력 -->
<ul>
<c:forEach var="fruit" items="${fruits }">
<li>${fruit }</li><!-- EL 태그 -->
</c:forEach>
</ul>
** EL / JSTL 차이
EL(Expression Language)
- JSP 페이지에서 요청(request)이나 세션(session) 같은 데이터를 쉽게 가져와서 출력하는 데 사용
- 사용법 : ${ } 사용해서 값을 출력
- 단점 : 반복문, 조건문 불가능
JSTL(JSP Standard Tag Library)
- JSP 페이지에서 반복, 조건문, 데이터 포맷팅, 데이터베이스 접근과 같은 작업을 수행할 때 사용
- 사용법 : prefix="설정한변수명" 후 <설정한변수명:기능>
- prefix 안의 변수명을 설정할 떄는 http://java.sun.com/jsp/jstl/core 같은 주소에서 마지막에 끝나는 단어 첫 글자를 따서 주로 사용
- 단점 : 문법이 복잡함. 태그를 익히는 데 시간 소모
** request
- request.setAttribute() : JSP에서 요청(request) 범위에 데이터를 저장하는 데 사용되는 메서드
- HttpServletRequest 객체에 저장해서 JSP 페이지 내에서 그 데이터를 다른 페이지로 전달하거나 그 페이지 내에서 사용할 수 있도록 설정
- 문법 : request.setAttribute(String name, 자료형 value)
name : 데이터를 저장할 때 사용할 key. 이 것을 사용해서 데이터를 가져올 수 있음
value : 저장할 실제 값. 어떠한 데이터 유형이든 저장할 수 있음
예제
<%
String name = "홍길동";
int age = 20;
//데이터를 request 객체에 저장
request.setAttribute("username", name); //username 변수명 안에 홍길동이라는 이름을 저장
request.setAttribute("userage", age); //userage 변수명 안에 20이라는 숫자를 저장
%>
<!-- JSP 페이지에서 데이터를 EL로 출력 -->
<p>이름 : ${username }</p>
<p>나이 : ${userage }</p>
<!-- request에 저장된 값을 다른 페이지로 전달해서 출력 -->
<%
request.setAttribute("msg", "index.jsp에서 hello.jsp로 데이터 전달");
//hello.jsp로 데이터 전달
RequestDispatcher dispatcher = request.getRequestDispatcher("hello.jsp");
//servlet springboot를 사용하지 않을 때 작성법 -> springboot의 controller로 넘겨줄 떄는 사용 x
//RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/hello.jsp");
dispatcher.forward(request, response);
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>인사메시지 페이지</title>
</head>
<body>
<h1>index.jsp에서 받은 데이터 출력</h1>
<!-- request로 전달된 데이터 출력 -->
<p>받은 메시지 : ${msg }</p>
</body>
</html>
** forTokens
forTokens : 특정 값을 기준으로 구분해서 반복 출력
- var : 구분자(delims)로 인해 끊어진 값들을 하나씩 담아 출력하기 위해 설정하는 변수명
- items : 어떤 값을 구분자(delims)로 끊을 것인지 작성. 변수값이나 구분자가 들어간 값을 직접 넣을 수 있음
- delims : 기준이 되는 구분자(특정 기호나 값)를 설정
<c:set var="str" value="사과,배,포도" />
<c:forTokens var="fruit" items="${str}" delims=",">
<li>${fruit }</li>
</c:forTokens>
<c:forTokens var="s" items="키위!참외!수박" delims="!">
<li>${s}</li>
</c:forTokens>
<c:set var="food" value="햄버거~피자~오렌지~치킨~파스타~냉모밀~냉면~라멘"/>
<c:forTokens var="fd" items="${food }" delims="~">
<li>${fd}</li>
</c:forTokens>
** remove
- JSTL에서 특정 변수값을 삭제하는 태그
- 작성법
c:remove var="값을 삭제할 변수명"
※ JSTL에서 system.out.println은 c:out을 이용해서 작성
- 작성법
c:out defult="작성될 내용"
- 특정 변수의 값 출력
c:out var="변수명" default="변수명을 불러오지 못하거나 특정 값이 없으면 보여줄 내용"
<c:set var="tempVar" value="삭제될 값 입니다"/>
<c:out value="${tempVar}"/>
<c:remove var="tempVar"/>
<c:out value="${tempVar }" default="없는 값입니다"/>
** catch
특정 문제나 에러가 발생했을 때 예외처리를 작성할 수 있음
c:catch
- 특정 문제가 발생할 것을 대비해서 감싸주는 것. 에러 방지
- c:if를 사용할 때 catch 안에 주로 사용
에러 관련 구문이 보이지 않다면
-> 계산이나 태그 안에 문제가 발생할 경우, jsp에서 문제 처리를 미리 진행한 다음에 코드를 보여주기 때문에 보이지 않음
<c:catch var="e">
<c:set var="result" value="${10/0 }"/> <!-- 계산 에러 유도 -->
<c:if test="${not empty e}">
에러 발생 : ${e.message}
</c:if>
</c:catch>
'JSP' 카테고리의 다른 글
jsp - jstl (1) | 2024.09.10 |
---|---|
JSP + springboot 연결 (0) | 2024.09.09 |
JSP (0) | 2024.09.09 |