[spring]JSTL(JSP Standard Tag Library)

2024. 10. 1. 14:07·SPRING
반응형

 jsp는 개발자가 정의한 커스텀 태그들 중 많이 사용하는 것을 모아서 JSTL 이라는 라이브러리에 담아서 사용한다


 1. JsTL 라이브러리 종류

라이브러리 접두사 참조 주소 역할
코어 c http://java.sun.com/jsp/jstl/core 변수지원,흐름 제어, URL 처리
XML x http://java.sun.com/jsp/jstl/xml xml 관련처리, xml 흐름제어
국제화 fmt http://java.sun.com/jsp/jstl/fmt 국제화 처리, 메시지 관리, 국가별 통화처리($, 원화표시, ...)
메뉴가 설정에따라 한글, 영어,한자로 표시
데이터베이스 sql http://java.sun.com/jsp/jstl/sql 데이터베이스 접근
함수 fn http://java.sun.com/jsp/jstl/fn collection, String 처리


2.JSTL 변수 및 제어문

1) jstl 코어

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 core태그를 사용하기 위해선  위 코드가 필수이다. 일반적으로 jsp파일 상단에서 작성된다.

<c:set>  변수설정 setAttribute()
<c:out> 화면에 변수값 출력 out.print() 
<c:remove>  변수제거 removeAttribute() 
<c:catch> 코드에 예외를 잡아냄 try catch
<c:if test="조건식"> 조건문(if) else 부분이 없는 if
<c:choose> switch 또 if~else 대체 복합 조건 처리
<c:forEach> for 또는 while 반복문을 대체 for(), while()

 

2) jstl 함수

fn:length() 문자열 길이를 반환
fn:substring() 문자열의 특정 부분을 추출
fn:replace() 문자열 내에서 특정 문자를 다른 문자로 대체
fn:toUpperCase(), fn:toLowerCase() 문자열을 대문자 또는 소문자로 변환
fn:contains(), fn:containsIgnoreCase() 문자열에 특정 문자가 포함되어 있는지 확인
fn:startsWith(), fn:endsWith()  문자열이 특정 문자로 시작하거나 끝나는지 확인

참고:[java] String 함수 총정리

 

[java] String 함수 총정리

20240813 수업문자열 조작 함수// 0123456 7 8 9012String s1 = "Hello 李순신 123"; //영어와 공백과 숫자는 1bytes 한글 한자는 3bytesString s1_2 = "Hello 李순신 123";// 0 1 2 3 4 56789012String s2 = new String("안녕하세요 Mark

o94777.tistory.com

 

 

 

3.JSTL데이터 처리 예제

 HTML과 자바스크립트를 사용한 입력 폼(Form.jsp)
window.onload = function() {
	  var form1   = document.getElementById('form1');
	  
	  var btnJSTL = document.getElementById('btnJSTL');
	  btnJSTL.onclick = function(){
		  form1.action = 'jstl02_jstl.jsp';		  
		  form1.submit();
	  };
}

 

<form id="form1" method="post">
  이름 : <input type="text" name="name" /><br/>
  나이 : <input type="text" name="age" /><br/>  
  <input type="button" value="전송(jsp)" id="btnJSP" /><br/>
  <input type="button" value="전송(jstl)"  id="btnJSTL"/><br/>
</form>

: 사용자 입력을 받아 두 번째 파일(JSTL 사용) 또는 세 번째 파일(JSP 스크립틀릿 사용)로 데이터를 전송하는 역할

 

 

 

JSTL을 사용한 데이터 처리 및 출력(jstl.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>    

<%  request.setCharacterEncoding("utf-8"); %>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
  <h2>코어 태그로 출력</h2>
  <c:set var="name" value="${ param.name }" /> 
  <c:set var="age" value="${ param.age }" /> 
  이름 : <c:out value="${name}" /><br/> 
  나이 : <c:out value="${age}" /><br/> 
 
  <c:if test="${name=='my'}">이건 나</c:if><br /> <!-- 중요 -->
  <!--  jstl 의 if 에는 else 가 없다 -->
 
  <c:choose> <!-- 중요 -->
    <c:when test="${age<10}">어린이</c:when>
    <c:when test="${age<20}">청소년</c:when>
    <c:otherwise>어른이</c:otherwise>
  </c:choose>
  <br />
 
  <c:forEach var="n" begin="1" end="${age }"  step="1"><!-- 중요 -->
     <c:if test="${n % 5 == 1}">&nbsp;</c:if>
     #
  </c:forEach>
  <hr>
  
  1~나이까지 홀수이면 빨강, 짝수이면 파랑<br/>
  <c:forEach var="n" begin="1" end="${age }"  step="1">
     <c:choose>
       <c:when test="${n%2 == 1 }">
         <span style="color:red">${n }</span>
       </c:when>
       <c:when test="${n%2 == 0 }">
         <span style="color:blue">${n }</span>       
       </c:when>
     </c:choose>
  </c:forEach>
  
  <hr />
  
  함수활용<br/>
  
  2) jstl fn 활용<br/>
  이름의 문자열갯수 : ${fn:length(name) }<br/> 
  이름중 앞에서 3자 자르기 :${fn:substring(name, 0, 3) }<br />
  문자열 바꾸기  : ${fn:replace(name,'b', 'P') }        <!-- b를 Pfh qkRNsek -->
 
</body>
</html>

 

: form1에서 입력받은 데이터를 출력하고 처리한다.

 

 

① 변수 저장과 출력

    String name = request.getParameter("name");
    int    age  = Integer.parseInt(request.getParameter("age"));
    
    out.print("이름:" + name + "<br>");
    out.print("나이:" + age  + "<br>");

jsp사용

<c:set var="name" value="${ param.name }" /> 
<c:set var="age" value="${ param.age }" /> 
이름 : <c:out value="${name}" /><br/> 
나이 : <c:out value="${age}" /><br/>

jstl사용

  • <c:set>: JSP 페이지 내에서 변수를 설정할 때 사용된다. param.name과 param.age는 폼에서 입력된 데이터를 받아오는 표현 언어(EL)를 사용한 것이다.
  • <c:out>: 변수를 출력한다.

결


② 조건문 처리 (If문과 Choose문)

<c:if test="${name == 'my'}">이건 나</c:if><br />

jstl사용

  • <c:if>: 조건에 따라 내용을 출력하거나 처리하는데 사용됩니다. 여기서는 name이 "my"일 때 "이건 나"라는 텍스트를 출력한다.
  • JSTL의 if에는 else 구문이 없어서, 다른 조건을 처리하려면 choose 태그를 사용해야 한다.
    if( age < 10 ) 
    	out.print("어린이<br>");
    else 
    	if( age < 20 )
    		out.print("청소년<br>");
    	else
    		out.print("어른이<br>");

jsp사용

<c:choose>
  <c:when test="${age < 10}">어린이</c:when>
  <c:when test="${age < 20}">청소년</c:when>
  <c:otherwise>어른이</c:otherwise>
</c:choose>

jstl사용

  • <c:otherwise>: 위의 조건들이 모두 false일 경우 실행된다. 나이가 20 이상일 때 "어른이"가 출력된다.

결과


③반복문 처리 (ForEach)

for(int i=0;i<age;i++) {
	   if(i%5==0)
		   out.print("&nbsp;");
	   out.print("#");
   }

jsp사용

<c:forEach var="n" begin="1" end="${age }" step="1">
  <c:if test="${n % 5 == 1}">&nbsp;</c:if>
  #
</c:forEach>

jstl사용

  • begin="1" end="${age}": n의 시작 값이 1이며 반복의 끝 값을 age로 설정하여 form에서 입력받은 나이까지 반복된다.
  • step="1": 한 번 반복할 때마다 n이 1씩 증가한다.
  • 내부의 조건문: n % 5 == 1일 때 공백 문자(&nbsp)를 출력하는데, 이는 #을 5개씩 끊어서 출력하게 된다.

결과


④ 조건에 따른 색상 처리 (ForEach + Choose)

<c:forEach var="n" begin="1" end="${age }" step="1">
  <c:choose>
    <c:when test="${n % 2 == 1}">
      <span style="color:red">${n}</span>
    </c:when>
    <c:when test="${n % 2 == 0}">
      <span style="color:blue">${n}</span>       
    </c:when>
  </c:choose>
</c:forEach>
  • <c:choose>를 이용해 입력받은 age까지 숫자를 반복 출력하면서, 각 숫자가 홀수(n % 2 == 1)이면 red, 짝수(n % 2 == 0)이면 blue로 출력한다.

결과


⑤ JSTL 함수 사용 (fn 태그)

  <%
      String name = request.getParameter("name").trim();
  %>
  이름의 문자열갯수 : <%= name.length() %><br/> 
  이름중 앞에서 3자 자르기 :<%= name.substring(0, 3) %><br />

jsp사용

이름의 문자열갯수 : ${fn:length(name)}<br/>
이름중 앞에서 3자 자르기 : ${fn:substring(name, 0, 3)}<br/>
문자열 바꾸기 : ${fn:replace(name, 'b', 'P')}

 

jstl사용

  • fn:length(name): 입력받은 name의 길이를 출력한다. 자바의 name.length()와 동일.
  • fn:substring(name, 0, 3): name 문자열에서 처음 3글자를 추출하여 출력합니다. 자바의 name.substring(0, 3)와 동일
  • fn:replace(name, 'b', 'P'): name 문자열에서 'b'를 'P'로 바꿔 출력합니다. 자바의 name.replace('b', 'P')와 동일

결과

 

 

반응형

'SPRING' 카테고리의 다른 글

[spring]스프링 부트 MVC구조  (3) 2024.10.08
[spring] 스프링 부트 Controller  (0) 2024.10.08
[spring] Spring Framework에서의 datasource 설정 및 Spring Boot migration  (2) 2024.10.04
[spring]Payload,Parameter, Attribute들의 관계  (2) 2024.10.01
[spring] EL (Expression Language)  (0) 2024.09.29
'SPRING' 카테고리의 다른 글
  • [spring] 스프링 부트 Controller
  • [spring] Spring Framework에서의 datasource 설정 및 Spring Boot migration
  • [spring]Payload,Parameter, Attribute들의 관계
  • [spring] EL (Expression Language)
라텐느
라텐느
이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
  • 라텐느
    괴발개발
    라텐느
    • 개발자 (154)
      • HTML|CSS (14)
      • JAVA (29)
      • JAVACSCRIPT (15)
      • SQL (16)
      • 기타 (5)
      • JSP (2)
      • SPRING (13)
      • SPRING BOOT (6)
      • Git&GitHub (1)
      • 시행착오 (2)
      • 개발일지 (35)
        • GreenMiniProject1 (12)
        • GreenMiniProject2 (9)
        • GreenFinalProject (14)
      • Flutter (5)
      • 자격증 (0)
        • SQLD (1)
      • AWS (2)
      • Linux (1)
      • 자료구조&알고리즘 (4)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    링크
    link
    JS
    db
    개발자
    SQL
    일지
    태그
    input
    tag
    JQuery
    부트캠프
    AJAX
    티스토리챌린지
    java
    CSS
    오블완
    HTML
    javascript
    자기계발
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
라텐느
[spring]JSTL(JSP Standard Tag Library)
상단으로

티스토리툴바