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 함수 총정리
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}"> </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(" ");
out.print("#");
}
jsp사용
<c:forEach var="n" begin="1" end="${age }" step="1">
<c:if test="${n % 5 == 1}"> </c:if>
#
</c:forEach>
jstl사용
- begin="1" end="${age}": n의 시작 값이 1이며 반복의 끝 값을 age로 설정하여 form에서 입력받은 나이까지 반복된다.
- step="1": 한 번 반복할 때마다 n이 1씩 증가한다.
- 내부의 조건문: n % 5 == 1일 때 공백 문자( )를 출력하는데, 이는 #을 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 |