다연이네

[days07] 표준 태그 라이브러리(JSTL) 본문

JSP

[days07] 표준 태그 라이브러리(JSTL)

 다연  2021. 1. 4. 22:16
반응형

 [JSTL 정의]
커스텀 태그 : 개발자들이 필요에 의해 태그를 만들어 사용할 수 있다. 
많은 개발자가 [공통적으로 사용할 커스텀 태그]를 만들어 사용을 하더라
이를 표준화 시켜놓은 것이 JSTL이다.

 [JSTL 기능]
1. 변수 지원 태그  c:set
2. 흐름 제어 태그  c:forEach c:if c:choose 등
3. URL 처리 태그 
4. 출력 태그
5. 국제화 태그
6. 함수

 

[JSTL 사용하려면]
1. WEB-INF > lib > jstl-1.2.jar 추가
     https://mvnrepository.com/
     다운로드
2. 라이브러리 다운로드 및 추가

[JSTL이 제공하는 태그 종류]
                        주요 기능            접두어          관련 URI
                        
1. 코어                 변수 지원                 c          https://java.sun.com/jsp/jstl/core
                        흐름 제어
                        URL 처리
                        
2. xml                  xml 코어                  x          https://java.sun.com/jsp/jstl/xml
                        흐름 제어
                        xml 변환
                        
3. 국제화               지역                     fmt         https://java.sun.com/jsp/jstl/fmt
                        메시지 형식 
                        숫자, 날짜 형식
                        
4. 데이터베이스         SQL                      sql         https://java.sun.com/jsp/jstl/sql

5. 함수                 컬렉션 처리               fn         https://java.sun.com/jsp/jstl/functions
                        문자열(String) 처리
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

 

 

 1. 코어 태그 종류 

1. 변수 지원 태그 : set, remove
    ㄱ. set 태그 - EL 변수의 값이나 EL 변수의 프로퍼티 값을 지정할 때 사용
2. 흐름 제어 태그 : if, choose, forEach, forTokens
3. URL 처리 태그 : import, redirect, url
4. 기타 태그 : catch, out

 

변수 선언

<c:set scope="page" var="name" value="홍길동"></c:set> 

scope 기본은 page

var      el 에서 사용할 변수명

value   상수값

target, property 같이 사용 

 

value 속성값으로 표현식(%=name%>), EL(param.age)을 사용할 수 있다.

 

<c:set var="name" value="배다연"></c:set>
name: ${name} <br>
<%
String name= "김동준";
%>
<c:set var="name" value="<%=name %>"></c:set>
name: ${name }

<c:set var="age" value='<%=request.getParameter("age") %>'></c:set><br>
age: ${age}
<c:set var="age" value="${param.age }"></c:set>
age2: ${age }

파라미터로 23을 넘겨주면 위와 같이 출력된다.

 

 

 

${ } 내부에서 사용하려면 위에서 <% setAttribute %> 해줘야 한다.

<%
DeptDTO dto = new DeptDTO(10, "QC", "SEOUL");

request.setAttribute("dto2", dto);
%>

detptno = <%=dto.getDeptno() %> <br>
dname = <%=dto.getDname() %> <br>

deptno = ${dto2.deptno } <br>
dname= ${dto2.dname }<br>

 

seoul을 pohang으로 교체하자 dto.setLoc("Pohang");

loc2 = ${dto2.loc} <br>
<%
dto.setLoc("Pohang");
%>
loc = <%=dto.getLoc() %><br>
loc2 = ${dto2.loc} <br>

 

위 코딩와 100% 똑같은 코딩 - JSTL 사용

<c:set target="<%=dto %>" property="loc" value="Pohang"></c:set>
<!-- 타겟:객체  프로퍼티:해당 객체의 게터세터 -->

dto의 loc 값을 Pohang으로 바꾸겠다는 의미

 

 var로 객체를 받을 수 도 있다.

<c:set value="<%=dto %>" var="deptDto"></c:set>
<!-- var로 객체를 받을 수 도 있다. -->
<c:set target="${deptDto }" property="deptno" value="20"></c:set>
deptDto의 deptno: ${deptDto.deptno }

 

 

 

c코딩으로 맵(Map)을 다룰 수도 있다.

<%
Map<String, String> map = new HashMap<>();
map.put("id","bdy");
map.put("addr","seoul");
%>

<c:set target="<%=map %>" property="name" value="bae"></c:set>
<!-- map.put("name","lee") 와 같은코딩, c코딩으로 맵을 다룰 수 있다는 점 -->
map = <%=map %><br>

위를 EL을 사용해 출력하고 싶다.

방법1 request.setAttribute

<%
Map<String, String> map = new HashMap<>();
map.put("id","bdy");
map.put("addr","seoul");

request.setAttribute("map", map);
%>

<c:set target="<%=map %>" property="name" value="bae"></c:set>
map = ${map } 

방법2 c:set에 저장

<%
Map<String, String> map = new HashMap<>();
map.put("id","bdy");
map.put("addr","seoul");
%>

<c:set target="<%=map %>" property="name" value="bae"></c:set>

<c:set var="map" value="<%=map %>"></c:set>
el map = ${map}

 

반응형
Comments