17장. JSP 표준 라이브러리
1. JSTL 개요
what?
JSP Standard Tag Library
스크립트 요소로 인한 코드의 복잡함을 해결하기 위한 사용자 정의 태그의 표준
why?
가독성을 좋게 하기 위해 사용
사용자 정의 태그 사용의 이점
- 한 번 작성한 뒤에는 언제든 필요한 곳에서 재사용 가능
- 프로그램의 가독성 향상
- JSP 페이지 작성이 쉬움
2. JSTL이 제공하는 태그 종류와 사용법
Core태그 | 변수 관련 작업, 제어 기능, URL 처리 등 제공 |
Formatting 태그 | 문자열/컬렉션 처리: 숫자, 날짜, 시간 형식화 및 국제화, 다국어 지원 |
sql 태그 | 데이터베이스의 데이터 삽입, 수정, 삭제, 조회 기능 |
functions | 문자열 처리 함수(java의 문자열 라이브러리) |
2.1 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 변수 설정 및 사용
browser 변수 값 설정
<c:set var="browser" value="${header['User-Agent']}"/>
<br>
<c:out value="${browser}"/>
<p>browser 변수 값 제거 후
<c:remove var="browser"/>
<c:out value="${browser}"/>
예제 2 변수 연산
<%
String 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:when test="${number%2==1}">
<c:out value="${number}"/>은 홀수입니다.
</c:when>
<c:otherwise>
숫자가 아닙니다.
</c:otherwise>
</c:choose>
예제 3 제어문
<h3>구구단</h3>
<table>
<c:forEach var="i" begin="1" end="9">
<tr>
<c:forEach var="j" begin="1" end="9">
<td width=100>${i}*${j} = ${i*j}</td>
</c:forEach>
</c:forEach>
</table>
예제 4 쿼리문-SELECT
<sql:setDataSource var="dataSource" url="jdbc:mysql://localhost:3306/JSPBookDB" driver="com.mysql.jdbc.Driver" user="root" password="1234"/>
<sql:query var="resultSet" dataSource="${dataSource}">
select * from member
</sql:query>
<table border="1">
<tr>
<c:forEach var="columnName" items="${resultSet.columnNames}">
<th width="100"><c:out value="${columnName}"/>
</c:forEach>
<c:forEach var="row" items="${resultSet.rowsByIndex}">
<tr>
<c:forEach var="column" items="${row}" varStatus="1">
<td>
<c:if test="${column != null}">
<c:out value="${column}"/>
</c:if>
<c:if test="${column == null}">
</c:if>
</c:forEach>
</c:forEach>
</table>
예제 5 쿼리문-INSERT
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
String name = request.getParameter("name");
%>
<sql:setDataSource var="dataSource"
url="jdbc:mysql://localhost:3306/JSPBookDB"
driver="com.mysql.jdbc.Driver" user="root" password="1234"/>
<sql:update dataSource="${dataSource}" var="resultSet">
INSERT INTO member(id, name, passwd) VALUES (?,?,?)
<sql:param value="<%=id%>"/>
<sql:param value="<%=name%>"/>
<sql:param value="<%=passwd%>"/>
</sql:update>
<c:import var="url" url="sql01.jsp"/>
${url}
예제 6 쿼리문-UPDATE
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
String name = request.getParameter("name");
%>
<sql:setDataSource var="dataSource"
url="jdbc:mysql://localhost:3306/JSPBookDB"
driver="com.mysql.jdbc.Driver" user="root" password="1234"/>
<sql:update dataSource="${dataSource}" var="resultSet">
UPDATE member SET name =? where id =? and passwd =?
<sql:param value="<%=name%>"/>
<sql:param value="<%=id%>"/>
<sql:param value="<%=passwd%>"/>
</sql:update>
<c:import var="url" url="sql01.jsp"/>
${url}
예제 7 쿼리문-DELETE
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
%>
<sql:setDataSource var="dataSource"
url="jdbc:mysql://localhost:3306/JSPBookDB"
driver="com.mysql.jdbc.Driver" user="root" password="1234"/>
<sql:update dataSource="${dataSource}" var="resultSet">
DELETE FROM member where id =? and passwd =?
<sql:param value="<%=id%>"/>
<sql:param value="<%=passwd%>"/>
</sql:update>
<c:import var="url" url="sql01.jsp"/>
${url}
2.2 Functions 태그
태그 | 설명 |
contains() | 문자열 포함 여부 확인 |
containsIgnoreCase() | 대소문자 관계 없이 문자열 포함 여부 확인 |
startsWith() | 특정 문자열로 시작하는지 여부 확인 |
endsWith() | 특정 문자열로 끝나는지 여부 확인 |
escapeXml() | 포함된 특수문자를 특정 코드로 변환 |
inidesOf() | 문자열의 첫 위치값 반환 |
split() | 문자열을 설정한 구분자를 기준으로 분리, 배열로 반환 |
join() | 배열을 설정한 구분자로 연결하여 반환 |
length() | 문자열의 길이 반환 |
substring() | 특정 위치의 문자열 반환 |
substringAfter() | 설정 문자열 이후 부분의 문자열 반환 |
substringBefore() | 설정 문자열 이전 부분의 문자열 반환 |
replace() | 문자열 치환 |
toLowerCase() | 모두 소문자로 변환 |
toUpperCase() | 대문자로 변환 |
trim() | 앞뒤 공백 제거 |
'정리노트' 카테고리의 다른 글
[JSP] 게시판 (0) | 2023.12.27 |
---|---|
[JSP] MVC (0) | 2023.12.26 |
[JSP] JDBC (0) | 2023.12.21 |
[JSP] 데이터베이스, JDBC (0) | 2023.12.20 |
[JSP]쿠키, 데이터베이스 (0) | 2023.12.19 |