정리노트

[JSP] JSTL

망고고래 2023. 12. 22. 11:53

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}">
                &nbsp;
            </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