본문 바로가기

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
반응형