복습

JSTL에서 sql문 사용 본문

서버프로그램

JSTL에서 sql문 사용

ykm1256 2020. 6. 23. 16:27

1. jstl core와 sql 태그라이브러리를 설정한다

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

2. db와 연결하기

<sql:setDataSource dataSource="jdbc/jsp" var="dataSource" scope="application"/> 

 - setDataSource로 dataSource에 jdbc/jsp를 입력한다

 - jdbc/jsp는 앞에서 sql문을 사용할 환경을 구축할 때 context.xml 파일에서 설정한 Resource의 name 값이다.

 

3. sql문 사용하기

<sql:query var="resultSet" dataSource="${dataSource }">
select * from jstlmember
</sql:query>

 - select를 사용(결과값이 존재)하기 때문에 <sql:query>를 사용한다.

 - var="resultSet"이므로 resultSet에 데이터가 입력된다.

 - dataSource는 위에서 var="dataSource"로 dataSource라는 변수에 값을 넣었기 때문에 ${dataSource}를 입력한다.

 - 사용할 sql문을 입력한다.

 

4. 받아온 데이터 출력하기

<table border="1">
<tr>
<c:forEach items="${resultSet.columnNames }" var="columnName">	<!-- sql문의 결과인 resultSet의 데이터를 가져옴 -->
<th>${columnName }</th>
</c:forEach>
<c:forEach items="${resultSet.rowsByIndex }" var="row">
<tr>
<c:forEach items="${row }" var="column">
<td>${column }</td>
</c:forEach>
</tr>
</c:forEach>
</table>

 - resultSet에 담긴 데이터를 가져오는데 coloumnNames를 이용하여 열의 이름을 출력한다.

 - resultSet에서 rowsByIndex 메서드를 이용하여 한 행의 데이터를 가져온다.

 - 가져온 한 행의 데이터를 열로 쪼개서 하나씩 출력한다.(각각 id, passwd,name)

 


데이터를 삽입한 후 출력하기

<sql:setDataSource dataSource="jdbc/jsp" var="dataSource" scope="application"/>
<sql:update dataSource="${dataSource }">
insert into jstlmember values(?,?,?)
<sql:param value="<%=id %>"/>
<sql:param value="<%=passwd %>"/>
<sql:param value="<%=name %>"/>
</sql:update>
<c:import url="sql01.jsp"/>

 - 위에서와 같이 dataSource를 지정해준다.

 - select와 같이 결과가 있는 sql문이 아니므로 <sql:update>를 사용한다.

 - sql문을 사용한다. ?를 사용하여 아래에서 값을 대입할 수 있다.

 - <sql:param>을 이용하여 차례대로 값을 넣어준다.

 - insert문을 실행하여 데이터가 DB에 삽입되었고, 위에서 작성한 sql01.jsp파일(select)을 불러와서 데이터를 확인한다.