728x90
반응형
1. JSTL의 개요
JSTL( JSP Standard Tag Library)
- JSP 페이지에서 스크립트 요소로 인한 코드의 복잡함을 해결하기 위한 일종의 사용자 정의 태그의 표준
- JSP 페이지의 로직을 담당하는 부분인 if, for, while, 데이터베이스 처리 등과 관련 된 코드를 JSTL로 대치하여 코드를 깔끔하게 하고 가독성을 좋게 하는 것
- JSP 내장 객체에 쉽게 접근할 수 있을 뿐 아니라 파라미터, 헤더, 쿠키 등의 복잡한 코드를 사용하지 않고 쉽게 직관적으로 사용
- 객체 간의 비교를 equals( ) 메소드로 처리하는 대신 ==와 같은 간단한 연산자로 구현이 가능
2. JSTL이 제공하는 태그의 종류와 사용법
JSTL이 제공하는 태그의 종류
JSTL이 제공하는 태그 사용
- JSP 페이지에 <%@ taglib…%> 디렉티브 태그를 사용
- prefix 속성은 uri 속성에 명시된 값 대신 해당 페이지에서 prefix 속성 값으로 명시된 값을 사용하겠다는 것을 의미
- JSTL 라이브러리인 jstl.jar 파일이 필요
Core 태그
- Core 태그의 종류
웹 브라우저 헤더를 변수에 설정하고 설정한 변수 삭제하기
// core01.jsp
<%@ 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>JSTL</title>
</head>
<body>
browser 변수 값 설정
<c:set var="browser" value="${header['User-Agent']}" />
<br>
<c:out value="${browser}" />
<p>browser 변수 값 제거 후
<c:remove var="browser" />
<c:out value="${browser}" />
</body>
</html>
숫자가 짝수 또는 홀수인지 판단하기
// core02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<form action="core02_process.jsp" method="post">
<p>숫자 : <input type="text" name="number">
<p><input type="submit" value="전송">
</form>
</body>
</html>
// core02_process.jsp
<%@ 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>JSTL</title>
</head>
<body>
<%
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>
</body>
</html>
구구단 출력하기
// core03.jsp
<%@ 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>JSTL</title>
</head>
<body>
<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>
</tr>
</c:forEach>
</table>
</body>
</html>
Sql 태그
- Sql 태그의 종류
<sql:query> 태그로 SELECT 쿼리문 실행하기
// member.sql
drop table member;
create table if not exists member(
id varchar(20) not null,
passwd varchar(20),
name varchar(30),
primary key (id)
);
insert into member values('1', '1234', '홍길순');
insert into member values('2', '1234', '홍길동');
select * from member;
// sql02.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="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<sql:setDataSource var="dataSource"
url="jdbc:mysql://192.168.111.40: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}" /></th>
</c:forEach>
</tr>
<c:forEach var="row" items="${resultSet.rowsByIndex}">
<tr>
<c:forEach var="column" items="${row}" varStatus="i">
<td>
<c:if test="${column != null}">
<c:out value="${column}"/>
</c:if>
<c:if test="${column == null}">
</c:if>
</td>
</c:forEach>
</tr>
</c:forEach>
</table>
</body>
</html>
<sql:update> 태그로 INSERT 쿼리문 실행하기
// sql02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<form method="post" action="sql02_process.jsp">
<p>아이디 : <input type="text" name="id">
<p>비밀번호 : <input type="password" name="passwd">
<p>이름 : <input type="text" name="name">
<p> <input type="submit" value="전송">
</form>
</body>
</html>
// sql02_process.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="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<%
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://192.168.111.40: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}
</body>
</html>
<sql:update> 태그로 UPDATE 쿼리문 실행하기
// sql03.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<form method="post" action="sql03_process.jsp">
<p>아이디 : <input type="text" name="id">
<p>비밀번호 : <input type="password" name="passwd">
<p>이름 : <input type="text" name="name">
<p> <input type="submit" value="전송">
</form>
</body>
</html>
// sql03_process.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="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<%
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://192.168.111.40: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}
</body>
</html>
<sql:update> 태그로 DELETE 쿼리문 실행하기
// sql04.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<form method="post" action="sql04_process.jsp">
<p>아이디 : <input type="text" name="id">
<p>비밀번호 : <input type="password" name="passwd">
<p> <input type="submit" value="전송">
</form>
</body>
</html>
// sql04_process.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="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<%
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://192.168.111.40: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}
</body>
</html>
Functions 태그
- Functions 태그의 종류
<fn:contains>와 <fn:containslgnoreCase> 태그로 문자열 검색하기
// finctions01.jsp
<%@ 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>JSTL</title>
</head>
<body>
<p> java 문자열 검색
<p>Hello, Java Server Pages! => ${fn:contains("Hello, Java Server Pages!", "java")}
<p>hello, java server page! => ${fn:containsIgnoreCase("hello, java server pages!", "java")}
</body>
</html>
<fn:split>와 <fn:join> 태그로 문자열 분리하고 연결하기
// function02.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" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL</title>
</head>
<body>
<c:set var="texts" value="${fn:split('Hello, Java Server Page!',' ')}" />
<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>
728x90
반응형
'JSP' 카테고리의 다른 글
JSP 웹 프로그래밍 - 웹 쇼핑몰 만들기 09 (게시판 만들기) (0) | 2023.03.09 |
---|---|
JSP 웹 프로그래밍 - 웹 MVC(MVC의 개요, 패턴구조, 패턴 구현 방법) (0) | 2023.03.09 |
JSP 웹 프로그래밍 - 웹 쇼핑몰 만들기 08 (회원 가입, 수정, 탈퇴하기) (0) | 2023.03.09 |
JSP 웹 프로그래밍 - 웹 쇼핑몰 만들기 07 (데이터베이스) (4) | 2023.03.08 |
JSP 웹 프로그래밍 - JDBC로 데이터베이스와 JSP 연동 02 (데이터베이스 쿼리 실행, 쿼리문 실행 결과 값 가져오기) (0) | 2023.03.08 |