English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP 데이터베이스 연결

이 튜토리얼은 JDBC 애플리케이션의 작동 방식을 이미 이해했다고 가정합니다。

주의사항:

 jar 패키지 다운로드(对口 버전 선택):https://downloads.mysql.com/archives/c-j/

다운로드 후 mysql-connector-java-<对口版本>-bin.jar 파일을 tomcat의 lib 디렉토리에 복사합니다。

MySQL 8.0 이상 버전의 데이터베이스 연결은 다릅니다:

  • 1、com.mysql.jdbc.Driver com.mysql.cj.jdbc.Driver로 변경합니다。

  • MySQL 8.0 이상 버전의 경우 SSL 연결을 설정하지 않아도 됩니다. 명시적으로 닫아야 합니다。

  • 마지막으로 CST를 설정해야 합니다。

드라이버를 로드하고 데이터베이스와 연결하는 방법은 다음과 같습니다:

<sql:setDataSource var="snapshot" driver="com.mysql.cj.jdbc.Driver">
     url="jdbc:mysql://localhost:3306/w3codebox?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
     user="root"    password="12345"/>

기본 개념에서 시작하여 간단한 테이블을 생성하고 테이블에 몇 개의 레코드를 추가해 보겠습니다。

테스트 데이터를 생성합니다

다음으로 MySQL에서 w3codebox 데이터베이스를 생성하고 websites 테이블을 생성합니다. 테이블 구조는 다음과 같습니다:

CREATE TABLE `websites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT '사이트 이름',
  `url` varchar(255) NOT NULL DEFAULT '',
  `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 순위',
  `country` char(10) NOT NULL DEFAULT '' COMMENT '국가',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

데이터를 추가합니다:

INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '기본 지침 웹사이트', 'http://ko.oldtoolbag.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');

데이터 테이블은 다음과 같이 표시됩니다:

SELECT 작업

다음 예제는 JSTL SQL 태그를 사용하여 SQL SELECT 문을 실행하는 방법을 알려줍니다:

<%@ page language="java" contentType="text/html;    charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
 
<html>
<head>
<title>SELECT 작업</title>
</head>
<body>
<!--
JDBC 드라이버 이름 및 데이터베이스 URL 
데이터베이스 사용자 이름과 비밀번호는 자신의 설정에 따라야 합니다
useUnicode=true&characterEncoding=utf-8 중국어 혼란을 방지하기 위해
 -->
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
     url="jdbc:mysql://localhost:3306/w3codebox?useUnicode=true&characterEncoding=utf-8"
     user="root"    password="123456"/>
 
<sql:query dataSource="${snapshot}" var="result">
SELECT * from websites;
</sql:query>
<1>JSP 데이터베이스 예제 - 기본 튜토리얼 웹사이트</h1>
<table border="1" width="100%">
<tr>
   <th>ID</th>
   <th>사이트 이름</th>
   <th>사이트 주소</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
   <td><c:out value="${row.id}"/></td>
   <td><c:out value="${row.name}"/></td>
   <td><c:out value="${row.url}"/></td>
</tr>
</c:forEach>
</table>
 
</body>
</html>

이 JSP 예제에 접근하여 실행 결과는 다음과 같습니다:

    INSERT 작업

이 예제는 JSTL SQL 태그를 사용하여 SQL INSERT 문을 실행하는 방법을 알려줍니다:

<%@ page language="java" contentType="text/html;    charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
 
<html>
<head>
<title>SELECT 작업</title>
</head>
<body>
<!--
JDBC 드라이버 이름 및 데이터베이스 URL 
데이터베이스 사용자 이름과 비밀번호는 자신의 설정에 따라야 합니다
useUnicode=true&characterEncoding=utf-8 중국어 혼란을 방지하기 위해
 -->
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
     url="jdbc:mysql://localhost:3306/w3codebox?useUnicode=true&characterEncoding=utf-8"
     user="root"    password="123456"/>
<!--
데이터 삽입
 -->
<sql:update dataSource="${snapshot}" var="result">
INSERT INTO websites (name,url,alexa,country) VALUES ('기본 튜토리얼 웹 모바일 사이트',    'http://m.oldtoolbag.com', 5093,    'CN');
</sql:update>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from websites;
</sql:query>
<1>JSP 데이터베이스 예제 - 기본 튜토리얼 웹사이트</h1>
<table border="1" width="100%">
<tr>
   <th>ID</th>
   <th>사이트 이름</th>
   <th>사이트 주소</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
   <td><c:out value="${row.id}"/></td>
   <td><c:out value="${row.name}"/></td>
   <td><c:out value="${row.url}"/></td>
</tr>
</c:forEach>
</table>
 
</body>
</html>

이 JSP 예제에 접근하여 실행 결과는 다음과 같습니다:

    DELETE 작업

이 예제는 JSTL SQL 태그를 사용하여 SQL DELETE 문을 실행하는 방법을 보여줍니다:

<%@ page language="java" contentType="text/html;    charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
 
<html>
<head>
<title>SELECT 작업</title>
</head>
<body>
<!--
JDBC 드라이버 이름 및 데이터베이스 URL 
데이터베이스 사용자 이름과 비밀번호는 자신의 설정에 따라야 합니다
useUnicode=true&characterEncoding=utf-8 중국어 혼란을 방지하기 위해
 -->
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
     url="jdbc:mysql://localhost:3306/w3codebox?useUnicode=true&characterEncoding=utf-8"
     user="root"    password="123456"/>
<!--
ID가 되는 데이터를 삭제 11 의 데이터
 -->
<sql:update dataSource="${snapshot}" var="count">
  DELETE FROM websites WHERE Id = ?
  <sql:param value="${11" />
</sql:update>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from websites;
</sql:query>
<1>JSP 데이터베이스 예제 - 기본 튜토리얼 웹사이트</h1>
<table border="1" width="100%">
<tr>
   <th>ID</th>
   <th>사이트 이름</th>
   <th>사이트 주소</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
   <td><c:out value="${row.id}"/></td>
   <td><c:out value="${row.name}"/></td>
   <td><c:out value="${row.url}"/></td>
</tr>
</c:forEach>
</table>
 
</body>
</html>

이 JSP 예제에 접근하여 실행 결과는 다음과 같습니다:

UPDATE 작업

이 예제는 JSTL SQL 태그를 사용하여 SQL UPDATE 문을 실행하는 방법을 보여줍니다:

<%@ page language="java" contentType="text/html;    charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
 
<html>
<head>
<title>SELECT 작업</title>
</head>
<body>
<!--
JDBC 드라이버 이름 및 데이터베이스 URL 
데이터베이스 사용자 이름과 비밀번호는 자신의 설정에 따라야 합니다
useUnicode=true&characterEncoding=utf-8 중국어 혼란을 방지하기 위해
 -->
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
     url="jdbc:mysql://localhost:3306/w3codebox?useUnicode=true&characterEncoding=utf-8"
     user="root"    password="123456"/>
<!--
ID를 수정 3 이름: 기본 튜토리얼 웹으로 변경됨3codebox
 -->
<c:set var="SiteId" value="3"/>
 
<sql:update dataSource="${snapshot}" var="count">
  UPDATE websites SET name = 'w3codebox' WHERE Id = ?
  <sql:param value="${SiteId}" />
</sql:update>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from websites;
</sql:query>
<1>JSP 데이터베이스 예제 - 기본 튜토리얼 웹사이트</h1>
<table border="1" width="100%">
<tr>
   <th>ID</th>
   <th>사이트 이름</th>
   <th>사이트 주소</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
   <td><c:out value="${row.id}"/></td>
   <td><c:out value="${row.name}"/></td>
   <td><c:out value="${row.url}"/></td>
</tr>
</c:forEach>
</table>
 
</body>
</html>

이 JSP 예제에 접근하여 실행 결과는 다음과 같습니다: