JSTL(Jsp Standard Tag Library: JSP 표준 태그 라이브러리)
여러 프로그램이 공통으로 사용하는 코드를 모아놓은 코드의 집합으로 자신만의 태그를 추가할 수 있는 기능을 제공한다.
주로 JSTL의 Core에서 c를 사용해서 <c:if> <c:forEach>등으로 사용한다.
JSTL 라이브러리 사용방법
3.
4. jakarta-taglibs-standard-1.1.2.zip 다운(http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/)
5. 임의의 폴더에 압축을 풀고, 사용할 프로젝트의 WEB-INF/lib에 jstl.jar, standard.jar를 복사
6. 사용하고자 하는 JSP 파일에 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 정의 선언
tag library를 사용하여 지시부를 정의해야 한다. prefix는 접두어
JSTL 태그 종류 및 사용 예
c:out (prefix="c") | 변수의 값을 출력 |
c:set (prefix="c") | 변수에 값을 저장(변수 선언) |
c:remove (prefix="c") | 변수의 값을 삭제 |
c:if (prefix="c") | if 조건문 수행(참일때만 실행되고 false일땐 실행xx, else문 xx): test 속성 사용 필수 |
c:choose (prefix="c") <c:choose><c:when><c:otherwise> |
switch 조건문 수행(다중 if문): 속성을 사용하지 않는다. when(case와 같은 역할로 test 속성 사용 필수) otherwise(default와 같은 역할) |
c:forEach (prefix="c") |
범위안에서 반복문 수행 for 역할 수행 |
begin: 시작값, end: 마지막 값, step:증가 단위 | |
c:forTokens (prefix="c") | 특정 구분자로 분할해 반복문(Split이나 StringTokenizer) |
c:url (prefix="c") |
url 주소를 생성 |
contextPath를 자동으로 붙여서 url을 생성하기 때문에 contextPath가 달라져도 url 수정 불필요 |
|
c:redirect (prefix="c") |
url 주소를 이동 |
EL 표현식
EL(Expression Language)은 자바 빈의 프로퍼티, 값을 JSP의 표현식 <%= %>이나 액션 태그 <jsp:useBean>를 사용하는 것보다 쉽고 간결하게 꺼낼 수 있게 하는 기술
JSP에서는 주로 서블릿 보관소(JspContext, ServletRequest, HttpSession, ServletContext)에서 값을 꺼낼 때 사용
${ }
- JSP가 실행될 때 즉시 반영된다. (Immediate evaluation)
- 객체 프로퍼티 값을 꺼낼 때 주로 사용한다.
<% num = 1234; %> <c:set name="num2" value="<%=num%>"></c:set> num2 = ${num2} <!--num2 = 1234-->
JSTL 사용 예제
c:out
<%@ 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>jstl_ex</title>
</head>
<body>
<c:out value="c:out은 출력"/><br/>
<c:out value="null" default="default실행 안됨"/><br/>
<c:out value="" default="default실행 안됨"/><br/>
</body>
</html>
더보기
value가 "" 일 때는 아예 실행 xx , value가 "null"은 문자열 null
c:set과 c:remove
<h3>변수의 선언, 출력, 삭제</h3>
<% // JSP 블럭에서 변수 선언
int num = 1234;
String hello = "안녕";
%>
<c:set var="num2" value="<%=num%>"></c:set> <%-- jsp 변수를 가져와서 num2로 설정 --%>
<c:set var="num3" value="${num2}"/>
<c:set var="hello2" value="<%=hello%>"/>
<h4>변수 출력</h4>
num = ${num}<br/> <%-- <c:set으로 값 설정을 안해도 오류 발생 xx --%>
hello = ${hello}<br/>
num2 = ${num2}<br/>
num3 = ${num3}<br/>
hello2 = ${hello2}<br/>
<c:set var="number" value="300+5"></c:set>
<c:set var="number2" value="${300+5}"></c:set>
<c:set var="number3" value="${300}"/>
<h4>변수 출력</h4>
number = ${number}<br/>
number2 = ${number2}<br/>
number3 = ${number3}
<c:set var="name">이름</c:set>
<c:set var="now" value="<%=new Date()%>"/> <%-- <%@ page import="java.util.Date"%> --%>
<h4>변수 출력</h4>
name = ${name}<br/>
now = ${now}<br/>
<h4>변수 삭제</h4>
<c:remove var="now"/>
now = ${now}
c:if와 c:choose, c:when, c:otherwise
<h3>조건문 사용</h3>
<c:if test="${true}">
<p>test가 true여서 항상 실행된다.</p> <!-- HTML영역 -->
</c:if>
<!-- 변수 선언 -->
<c:set var="n" value="${1234}"/>
<c:set var="x" value="${1000}"/>
<c:if test="${n>x}">
<p>${n}은 ${x}보다 큰 값입니다.</p>
</c:if>
<h3>jstl에서 request하기</h3> <!-- jsp에서는 request.getParamter("변수") -->
<ul>
<li>이름 : ${param.name}</li> <!-- param 객체는 요청한 매개변수의 값을 조회 -->
<li>나이 : ${param.age}</li>
</ul>
<h3>choose, when, otherwise 사용하기</h3>
<c:choose>
<c:when test="${param.name=='pumpkin'}">
당신의 이름은 ${param.name}입니다.
</c:when>
<c:when test="${param.age>=10}">
당신의 나이는 10세 이상입니다.
</c:when>
<c:otherwise>
당신의 이름은 pumpkin도 아니고 나이도 10세이상이 아닙니다.
</c:otherwise>
</c:choose>
더보기
- param객체 -> 요청한 매개변수의 값을 조회한다. ${param.매개변수명}
- 매개변수를 요청할 때는 url 주소에 파일명?변수=변수값&변수=변수값을 추가한다.
c:forEach
배열, 컬렉션(List, Map)을 이용해서 반복문 처리를 할 수도 있다.
<h3>forEach 반복문</h3>
<c:set var="gugudan" value="${3}"/> <!-- 구구단 변수로 2단출력하기 -->
<c:forEach var="i" begin="1" end="9" step="1"> <!-- step 생략하면 1씩 증가 -->
${gugudan} * ${i} = ${gugudan*i}<br/>
</c:forEach>
<h3>배열을 이용한 반복문</h3>
<c:set var="arr" value="<%= new int[]{10,20,30,40,50} %>"/> <!-- 변수에 자바배열넣기 -->
<c:forEach var="data" items="${arr}">
${data} [${data}] <br/>
</c:forEach>
<h3>컬렉션을 이용한 반복문</h3>
<%
// <%@page import="java.util.List"%
// <%@page inport="ArrayList" %
List<String> list = new ArrayList<String>();
// 자바에서 데이터 발생
list.add("강동구");
list.add("강서구");
list.add("강남구");
list.add("강북구");
list.add("송파구");
%>
<c:set var="city" value="<%=list%>"/> <!-- city변수는 컬렉션을 데이터로 받음 -->
<c:forEach var="cityData" items="${city}">
${cityData}
</c:forEach>
<ol>
<c:forEach var="cityData1" items="${city}">
<li>${cityData1}</li>
</c:forEach>
</ol>
<ul>
<c:forEach var="cityData2" items="<%=list%>">
<li>${cityData2}</li>
</c:forEach>
</ul>
<h3>HashMap의 컬렉션으로 반복문 처리 </h3>
<%
// <%@page import="java.util.HashMap"%
HashMap<String, String> hmap = new HashMap<String, String>();
hmap.put("userid", "hobak");
hmap.put("username", "pumpkin");
hmap.put("tel", "010-1234-5678");
hmap.put("addr", "서울시 용산구");
%>
<c:set var="info" value="<%=hmap%>"/>
<c:forEach var="infoData" items="${info}">
${infoData.key} : ${infoData.value}<br/>
</c:forEach>
forTokens
<h3>forTokens 사용</h3>
<c:forTokens var="color" items="red,orange,yellow,green" delims=","> <!--delims는 구분자-->
${color}<br/>
</c:forTokens>
<c:forTokens var="lang" items="Korean/English/Chinese" delims="/">
<p>${lang}</p>
</c:forTokens>
c:url
<c:url var="home" value="../home.jsp"/>
<a href="${home }">홈으로 이동하기</a> <!--홈으로 이동하기를 누르면 home.jsp로 이동-->
<!--jstl_ex.jsp-->
<h3>사원등록폼(emp테이블사용)으로 이동하기(데이터 표시)</h3>
<c:url var="empFrm" value="../J02_response_jdbc/empForm.jsp">
<c:param name="no" value="1004"/> <!-- param으로 파일이 이동된다음에 넣을 값 설정-->
<c:param name="name" value="천사"/>
</c:url>
<a href="${empFrm}">사원등록폼</a>
<!--J02_response_jdbc/empForm.jsp-->
<!-- jstl을 사용하기 위해서 taglib 추가 -->
<!-- value값으로 매개변수 설정 -->
사원번호 : <input type="text" name="empno" value="${param.no}"/><br/>
사원명 : <input type="text" name="ename" value="${param.name}"/><br/>
연봉 : <input type="text" name="sal" value="${param.sal}"/><br/>
2022.03.03 - [멀티캠퍼스 풀스택 과정/백엔드] - 백엔드1-5. JSP-4 : JAVA와 DB의 연동(emp테이블사용)-1
c:redirect
자동으로 페이지 이동 frront-end back-end html -> meta 태그 / java script -> location jsp -> response.sendRedirect( ) / jstl -> <c:redirect>
사용법
<c:redirect url="url경로" context="컨텍스트 경로"/>
예제
<c:redirect url="/J02_response_jdbc/empForm.jsp" context="/webJSP"/>
이 태그가 실행되면 /webJSP/J02_response_jdbc/empForm.jsp 페이지로 자동으로 이동된다.
파라미터를 전달할 경우
<c:redirect url="/J02_response_jdbc/empForm.jsp" context="/webJSP"/>
<c:param name="name" value="이아무개"/>
</c:redirect>
c:url 예제에서 사용한 것 똑같이 사용하기
<!--jstl_ex.jsp-->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:redirect url="../J02_response_jdbc/empForm.jsp">
<c:param name="no" value="1020"/>
<c:param name="name" value="MZ세대"/>
</c:redirect>
더보기
jstl_ex.jsp 파일을 실행하면 바로 empForm.jsp로 이동하게 되는데 이때 param을 통해서 값이 클라이언트에게 바로 자동 입력된다. (response)
'멀티캠퍼스 풀스택 과정 > 백엔드' 카테고리의 다른 글
백엔드2-1. Servlet-1 Servlet기초와예제, HttpServlet, web-xml, url(get,post방식) (0) | 2022.03.05 |
---|---|
백엔드1-10. JSP-9: JSTL를 이용한 로그인 로그아웃 (0) | 2022.03.05 |
백엔드1-8. JSP-7: include지시자 / jsp 와 jspf (0) | 2022.03.05 |
백엔드1-7. JSP-6 : 내장객체 Cookie와 Session (0) | 2022.03.04 |
백엔드1-6. JSP-5: JAVA와 DB의 연동(isErrorPage)-2 (0) | 2022.03.04 |