본문 바로가기

BackEnd/JSP

[JSP 웹 프로그래밍] JSP 표준 태그 라이브러리 2 (sql 태그, function 태그)

728x90
반응형

https://bobo12.tistory.com/265

 

[JSP 웹 프로그래밍] JSP 표준 태그 라이브러리 1 (Core 태그)

1. JSTL( JSP Standard Tag Library) ▷ JSP 페이지에서 스크립트 요소로 인한 코드의 복잡함을 해결하기 위한 일종의 사용자 정의 태그의 표준 ▷ JSP 페이지의 로직을 담당하는 부분인 if, for, while, 데이터

bobo12.tistory.com

 

◎ Sql 태그
   ▷ Sql 태그의 종류

 

◎ <sql:query> 태그로 select 쿼리문 실행하기 예제

1. member.sql
drop table member;

create table 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', '1235', '홍길동');

select * from member;​


MySQL과 연동해 이클립스에서 member table을 생성하고 값들을 넣어줍니다.


2. sql01.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://localhost:3306/jspbookdb"
		driver = "com.mysql.cj.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}">
					&nbsp;
				</c:if>
			</td>
			</c:forEach>
		</tr>
		</c:forEach>		
	</table>	
</body>
</html>​


sql과 연결하고 table을 만들어서 데이터들을 표로 나타나게 만들어줍니다.

 

 

◎ <sql:update>태그로 insert 쿼리문 실행하기 예제

1. 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>Database SQL</title>
</head>
<body>
	<form method="post" action="sql02_process.jsp">
		<p>아이디 : <input type="text" name="id">
		<p>비밀번호 : <input type="text" name="passwd">
		<p>이름 : <input type="text" name="name">
		<p><input type="submit" value="전송">
	</form>
</body>
</html>​

 

 

2. 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://localhost:3306/jspbookdb"
		driver = "com.mysql.cj.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>​


새로운 값이 추가되면서 sql01의 테이블을 나타냅니다.

 

 

◎ <sql:update>태그로 update 쿼리문 실행하기 예제

1. sql03.jsp
   ▷ sql02.jsp와 같고 form의 action부만 sql03_process.jsp로 수정하면 됩니다.

2. 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://localhost:3306/jspbookdb"
		driver = "com.mysql.cj.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>​


id와 passwd가 같으면 name을 수정할 수 있도록 만듭니다.

 

 

◎ <sql:update>태그로 delete 쿼리문 실행하기 예제

1. sql04.jsp
   ▷ sql03.jsp와 같고 form의 action부만 sql04_process.jsp로 수정하고 이름부분의 한 줄을 삭제합니다.

2. 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");
	%>
	
	<sql:setDataSource var="dataSource"
		url="jdbc:mysql://192.168.111.40:3306/jspbookdb"
		driver = "com.mysql.cj.jdbc.Driver" user="root" password="1234" />
	
	<sql:update dataSource="${dataSource}" var="resultSet">
		delete form 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>​


id와 passwd가 일치하는 값을 삭제해줍니다.

 

 

◎ Functions 태그

   ▷ Functions 태그의 종류

 

◎ <fn:contains>와 <fn:containsIgnoreCase> 태그로 문자열 검색하기 예제

<%@ 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 Pages! => ${fn:containsIgnoreCase("hello, Java Server Pages!", "java")}
</body>
</html>

<!-- 출력 : 
	java 문자열 검색
	Hello, Java Server Pages! => false
	hello, Java Server Pages! => true
 -->

 

◎ <fn:split>와 <fn:join> 태그로 문자열 분리하고 연결하기 예제

<%@ 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 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>

<!-- 출력 : 
	text[0] = Hello,
	text[1] = Java
	text[2] = Server
	text[3] = Pages!
	Hello,-Java-Server-Pages!
 -->

 

SQL 태그를 이용하면 DB와 연동을 할 때 코드를 더 간단하게 표현해볼 수 있습니다.

 

function 태그는 자바의 내장 객체들의 함수들을 사용했을 때와 같이 split, join 등의 기능들을 수행할 수 있네요!!

 

이제 마지막 장으로 넘어가볼게요~

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

 

728x90
반응형