목차
1. 개요
2. 상세
(2) tag 상세
<JSP Standard Tag Library>
1.개요
JSTL은 코드의 복잡함을 해결하기 위한 일종의 사용자 정의 태그의 표준입니다.
태그 | |
Core 태그 | 변수선언, 삭제 등 변수와 관련된 작업 및 if 문, for 문과 같은 제어기능, URL 처리로 페이지 이동 기능을 제공 |
Formatting 태그 | 문자열이나 컬렉션을 처리하는 함수 태그로 숫자, 날짜, 시간 등을 형식화하는 기능. 국제화, 다국어 지원기능 제공 |
Sql 태그 | 데이터베이스와 상호작용하기 위해 사용하는 태그로 데이터베이스의 데이터 삽입, 수정, 삭제, 조회 기능 제공 |
Function 태그 | 문자열을 처리하는 함수를 제공 |
(1) JSTL 라이브러리 설치하기
https://mvnrepository.com/artifact/javax.servlet/jstl
위의 링크를 따라 들어가시면 아래와 같은 화면이 나옵니다.
다운 받으신 jstl-1.2.jar 파일을 현재 사용하고 싶은 프로젝트 web-inf 안의 lib에 넣어주시면 바로 사용이 가능합니다.
[실행결과]
2. 상세
(1) 선언하기
jstl을 jsp에서 사용을 하기 위해서는 현재 이 라이브러리를 사용한다는 것을 미리 선언을 해줘야 합니다.
선언을 하는 방법은 아래와같습니다.
1
2
3
4
|
<%@taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix ="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@taglib prefix ="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@taglib prefix ="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
cs |
여기에서 prefix는 파이선에서의 as와 같은 역할을 합니다. 식별자에서 불어온 기능을 jsp파일에서 사용할 때
prefix된 이름으로 불러와서 사용하겠다는 뜻입니다.
그리고 uri, 식별자 안의 값들은 라이브러리에서 불러오는 기능들입니다.
(2)태그별 기능
core 태그
태그 | |
<c:out> | 출력 |
<c:set> | 사용할 변수를 설정 |
<c:remove> | 설정한 변수 제거 |
<c:catch> | 예외 처리 |
<c:if> | 조건문 처리 |
<c:choose> | 다중 조건문 처리 |
<c:when> | <choose>의 서브태그로 조건문 참일 때 수행 |
<c:otherwise> | <choose>의 서브태그, 조건문 거짓일 때 수행 |
<c:import> | 다른 리소스의 결과 삽입 |
<c:forEach> | 반복문을 처리하는데 사용 |
<c:forTokens> | 구분자로 분리된 각각의 토큰 처리 |
<c:param> | url 관련 태그의 파라미터 설정 |
<c:redirect> | 설정한 경로로 이동하는데 사용 |
<c:url> | url 재작성 |
[예제]
① 숫자의 홀,짝 구분
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action = "number.jsp" method ="post">
<p>숫자:<input type = "text" name="number">
<p><input type ="submit" value="전송">
</form>
<% String number = "";
if (request.getParameter("number") == null){
number = "0";
}
else number = request.getParameter("number");
%>
<c:set var = "number" value="<%=number %>"/>
<c:choose>
<c:when test="${number%2==0 }">
<c:out value="${number}"/> : 짝수입니다.
</c:when>
</c:choose>
<c:choose>
<c:when test="${number%2!=0 }">
<c:out value="${number }"/> : 홀수입니다.
</c:when>
</c:choose>
</body>
</html>
|
cs |
[실행결과]
② 구구단 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>구구단</h3>
<table>
<c:forEach var ="i" begin="1" end="9">
<tr>
<c:forEach var ="j" begin = "1" end="9">
<td>${i }*${j } = ${i*j }</td>
</c:forEach>
</tr>
</c:forEach>
</table>
</body>
</html>
|
cs |
[실행결과]
sql 태그
태그 | |
<sql:setDataSource> | DataSource를 설정하는데 사용 |
<sql:query> | 조회 커리문 실행 |
<sql:update> | 삽입,수정,삭제 쿼리문 실행 |
<sql:dateParam> | 쿼리문에 문자열 형식의 파라미터 설정 |
<sql:param> | 쿼리문에 날짜 형식의 파라미터 설정 |
<sql:transaction> | 트랜잭션 구현 사용 |
functions 태그
태그 | |
contains() | 검색 대상 문자열의 포함 여부를 확인 |
containsignoreCase() | 대,소문자와 상관없이 검색대상문자열 포함 여부 확인 |
startsWith() | 특정 문자열로 시작하는지 확인 |
endWith | 특정 문자열로 끝나는지 여부 확인 |
escapeXml() | 문자열에 포함된 특수문자를 특정 코드로 변환 |
indexOf() | 검색대상문자열의 첫위치값 반환 |
split() | 문자열을 설정한 구분자로 분리하여 배열 형태로 반환 |
join() | 배열 형태의 문자열을 설정한 구분자로 연결하여 반환 |
length() | 문자열의 길이 반환 |
substring() | 특정 위치의 문자열을 반환 |
substringAfter() | 설정한 문자열 이후의 부분에 있는 문자열 반환 |
substringBefore() | 설정한 문자열 이전의 부분에 문자열 반환 |
replace() | 검색 대상 문자열을 설정한 문자열로 변경하여 반환 |
toLowerCase() | 소문자로 변환 |
toUpperCase() | 대문자로 변환 |
trim() | 문자열 앞위의 공백 제거하여 반환 |
예제
① 문자열 검색하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix ="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>문자열 검색
<p> Hello Java Server Pages! => ${fn:contains("Hello Java Server Pages!","java")}
<p> Hello Java Server Pages! => ${fn:containsIgnoreCase("Hello Java Server Pages!","java")}
</body>
</html>
|
cs |
[실행결과]
② 문자열 분리하고 연결하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<%@ 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" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var="texts" value = "${fn:split('Hello Java Server Pages!',' ') }"/>
<c:forEach var="i" begin="0" end="${fn:length(texts)-1}">
<p>text[${i }] = ${texts[i] }
</c:forEach>
<p><c:out value="${fn:join(texts,'-') }"/>
</body>
</html>
|
cs |
[실행결과]
formatting 태그
태그 | |
setLocale | 로케일을 설정 |
requestEncoding | 요청 파라미터의 문자 인코딩 설정 |
bundle | 사용할 리소스번들 설정 |
message | 리소스번들에서 로케일에 맞는 메세지 불러와 출력 |
setBundle | 리소스번들을 특정 변수에 저장 |
formDate | 날짜 형식을 표현 |
parseDate | 문자열에서 원하는 패턴의 날짜 형식으로 변환 |
parseNumber | 문자열에서 원하는 패턴의 숫자형식으로 변환 |
formatNumber | 숫자형식 표현 |
setTimeZone | 특정 범위의 시간대 설정 |
timeZone | 시간대를 설정 |
①숫자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix ="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>숫자 : <fmt:formatNumber value="1900.733" type="number"/>
<p>통화 : <fmt:formatNumber value="1900.733" type="currency" currencySymbol ="원화"/>
<p>퍼센트 : <fmt:formatNumber value="1900.733" type="percent"/>
<p>패턴 : <fmt:formatNumber value="1900.733" pattern=".00"/>
</body>
</html>
|
cs |
②날짜
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix ="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="now" class="java.util.Date" />
<p>date 형식 : <fmt:formatDate value="${now }" type="date"/>
<p>time 형식 : <fmt:formatDate value="${now }" type="time"/>
<p>both 형식 : <fmt:formatDate value="${now }" type="both"/>
</body>
</html>
|
cs |
'프로그래밍 언어 > jsp' 카테고리의 다른 글
jsp 오류 web.xml 변경 후 톰캣 실행 오류 해결방법 (0) | 2021.09.20 |
---|---|
the import javax.servlet.RequestDispatcher cannot be resolved 문제해결 (0) | 2021.09.19 |
<JSP> 자바파일을 동적으로 JSP파일에 적용하기(자바빈즈, DTO, DAO) (0) | 2021.09.18 |
<jsp> 내장객체 2. Response (0) | 2021.08.29 |
<JSP> 내장객체 1. request (0) | 2021.08.28 |