JSP 2.0 에 도입된 커스텀 태그 기능중 주요하고 자주 사용되는 기본 모듈을 골라 정해놓은 것을 JSTL 이라 부르는데 그중 데이터베이스 관련 태그를 알아보도록 하자
-
<sql:query>
<sql:query> 액션 태그는 SQL 의 select 절과 같은 역할을 한다고... 쿼리의 결과를 해당 스코프 변수에 저장한다. 데이터베이스에 전달할 쿼리와 함께 <sql:param> 과 <sql:dataParam> 태그가 사용된다.
1. sql 문장이 복잡하지 않고 변하지 않는 파라미터를 가지고 있을 경우 사용하겠다.
<sql:query sql="SQL문장"
[dataSource="웹컨테이너에서 제공하는 데이터소스"]
[maxRows="리턴할 레코드 갯수"]
[startRow="레코드 시작위치"]
var="전달 받을 변수 타입은 ResultSet 이되겠다"
[scope="page |request|session|application"] />
2. 변하는 파라미터가 있고 PrepareStatment 처럼 사용하려는 경우 쓸수 있겠다.
<sql:query sql="SQL문장"
[dataSource="웹컨테이너에서 제공하는 데이터소스"]
[maxRows="리턴할 레코드 갯수"]
[startRow="레코드 시작위치"]
var="var "
[scope="page |request|session|application"]>
<sql:param> 액션태그
</sql:query>
<sql:query var="result"> SELECT * FROM Employee WHERE Name = ?
<sql:param value="${param:empName}" />
</sql:query>
3. 이 방법이 가장 길고 보기 좋지 않을까 한다. ㅋㅋ
<sql:query
[dataSource="웹컨테이너에서 제공하는 데이터소스"]
[maxRows="리턴할 레코드 갯수"]
[startRow="레코드 시작위치"]
var="var "
[scope="page |request|session|application"]>
SQL 문장
<sql:param> 액션태그
</sql:query>
-
<sql:update>
쿼리와 함께 가장 많이 쓰이는 구문이다. INSERT, UPDATE, DELETE 문을 포함하여 CREATE TABLE 등의 명령도 사용가능하다. <sql:query> 구문처럼 다양한 방법으로 사용이 가능하다. 다른점이 있다면 var 값의 위치이다. 리턴값이 있을 경우 스코프를 지정할 수 있다. 즉 리턴값이 없다면 스코프 지정도 필요없다는 것.
1. 바디 내 모든것을 다 담아 표현한다.
<sql:update sql="sqlStatement "
[dataSource="dataSource "]
[var="var "
[scope="page |request|session|application"]
] />
2. 파라메터만 뺀다
<sql:update sql="sqlStatement "
[dataSource="dataSource "]
[var="var " [scope="page |request|session|application"]]>
<sql:param> 태그
</sql:update>
3. 문장과 파라미터를 빼어 표현<sql:update> DELETE * FROM Employee WHERE Id = ? <sql:param value="${empId}" /> </sql:update>
<sql:update
[dataSource="dataSource "]
[var="var " [scope="page |request|session|application"]]>
sqlStatement
<sql:param> 태그
</sql:update>
-
<sql:param>
? 표에 파라미터를 전달할 수 있는 액션이다. 함께 사용되는 DB 에 따라 다르지만 만약 null 값이 입력되었을 경우 SQL 의 NULL 값으로 전달된다.
수치, 문자가 사용될 수 있고 날짜, 시간을 위해서 <sql:dateParam> 액션이 따로 존재하니 참고.
1. Without a body
<sql:param value="parameterValue" />
<sql:update>
DELETE * FROM Employee WHERE Id = ?
<sql:param value="${empId}" />
</sql:update>
2. With a body
<sql:param>
parameterValue
</sql:param>
-
<sql:dateParam>
위에서 살펴본 <sql:param> 의 날짜,시간형 버전이다.
1. 타임스템프 타입이 추가된다. 출력되는 형태는 JSTL 인터네셔설 태그세팅과 연관이 있을 것으로 추측된다. 당연히 value 값은 'java.util.Data' 타입이다.
<sql:dateParam value="parameterValue "
[type="timestamp |time|date"] />
<sql:update>
UPDATE Employee SET EmpDate = ?
WHERE EmpId = ?
<sql:dateParam value="${empDate}" />
<sql:param value="${empId}" />
</sql:update>
-
<sql:setDataSource>
웹컨테이너가 제공하는 데이터 소스를 명시한다. 복잡한 데이터베이스 커넥션을 WAS가 제공하는 데이터소스로 간편히 커넥션을 얻을 수 있다고...
1. 사용 방법은 자주 보던 ... 소스이다.
<sql:setDataSource
[dataSource="dataSource " | url="url "
[driver="driverClassName "]
[user="username "] [password="password "]]
[var="var "]
[scope="page |request|session|application"] />
<sql:setDataSource var="snapshot"
url="jdbc:odbc:snapshot"
driver="sun.jdbc.odbc.JdbcOdbcDriver" />
<sql:query dataSource="${snapshot}" sql="..." var="result" />
-
<sql:transaction>
트랜젝션을 위한 구문이다. 트랜젝션 처리가 필요한 부분을 감싸는 형태로 사용된다.
1. 주로 <sql:update> 구문에 자주사용된다.
<sql:transaction [dataSource="dataSource"]
[isolation="read_committed|read_uncommitted|repeatable_read| serializable"]>
<sql:query> and <sql:update> actions, and optionally other JSP elements
</sql:transaction>
<sql:transaction>
<sql:update>
UPDATE Account
SET Balance = Balance – ?
WHERE AccountNo = ?
<sql:param value="${amount}" />
<sql:param value="${fromAccount}" />
</sql:update>
<sql:update>
UPDATE Account
SET Balance = Balance + ?
WHERE AccountNo = ?
<sql:param value="${amount}" />
<sql:param value="${toAccount}" />
</sql:update>
</sql:transaction>
'Development' 카테고리의 다른 글
그레일즈 한글 레퍼런스 (0) | 2008.10.31 |
---|---|
Netbeans 와 함께 JSP 웹프로젝트 기본 - JSTL 을 통해 데이터베이스 접근과 기본 쿼리 전송 (0) | 2008.10.24 |
파이썬 튜토리얼 (0) | 2008.10.21 |
NetBeans Wiki: JavaFXApplet (0) | 2008.10.17 |
Ubuntu 설치 그리고 추가 작업들 (0) | 2008.09.29 |