서블릿 데이터베이스 액세스
이 튜토리얼에서는 여러분이 JDBC 애플리케이션의 작동 방식을 이미 이해하고 있다고 가정합니다. 서블릿 데이터베이스 액세스 학습을 시작하기 전에 적절한 JDBC 환경 설정 및 데이터베이스가 있는지 확인하십시오.
기본 개념부터 시작하여 간단한 테이블을 만들고 그 테이블에 몇 가지 레코드를 만들어 보겠습니다.
데이터베이스 테이블 생성
테스트 데이터베이스 TEST에서 Employees 테이블을 생성하려면 다음 단계를 따르세요.
1단계:
명령 프롬프트를 열고 아래와 같이 설치 디렉터리로 변경합니다.
C:\> C:\>cd Program Files\MySQL\bin C:\Program Files\MySQL\bin>
2단계:
로그인
C:\Program Files\MySQL\bin>mysql -u root -p Enter password: ******** mysql>
3단계:
다음과 같이 테스트 데이터베이스 TEST에 Employee 테이블을 생성합니다. 표시:
mysql> use TEST; mysql> create table Employees ( id int not null, age int not null, first varchar (255), last varchar (255) ); Query OK, 0 rows affected (0.08 sec) mysql>
데이터 레코드 생성
마지막으로 아래와 같이 Employee 테이블에 여러 레코드를 생성합니다.
mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali'); Query OK, 1 row affected (0.05 sec) mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal'); Query OK, 1 row affected (0.00 sec) mysql>
데이터베이스에 액세스
다음 예는 방법을 보여줍니다. Servlet을 사용하여 TEST 데이터베이스에 액세스하십시오.
// 加载必需的库 import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class DatabaseAccess extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // JDBC 驱动器名称和数据库的 URL static final String JDBC_DRIVER="com.mysql.jdbc.Driver"; static final String DB_URL="jdbc:mysql://localhost/TEST"; // 数据库的凭据 static final String USER = "root"; static final String PASS = "password"; // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "数据库结果"; String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n"); try{ // 注册 JDBC 驱动器 Class.forName("com.mysql.jdbc.Driver"); // 打开一个连接 conn = DriverManager.getConnection(DB_URL,USER,PASS); // 执行 SQL 查询 stmt = conn.createStatement(); String sql; sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql); // 从结果集中提取数据 while(rs.next()){ // 根据列名称检索 int id = rs.getInt("id"); int age = rs.getInt("age"); String first = rs.getString("first"); String last = rs.getString("last"); // 显示值 out.println("ID: " + id + "<br>"); out.println(", Age: " + age + "<br>"); out.println(", First: " + first + "<br>"); out.println(", Last: " + last + "<br>"); } out.println("</body></html>"); // 清理环境 rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ // 处理 JDBC 错误 se.printStackTrace(); }catch(Exception e){ // 处理 Class.forName 错误 e.printStackTrace(); }finally{ // 最后是用于关闭资源的块 try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ }// 我们不能做什么 try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); }//end finally try } //end try } }
이제 위의 서블릿을 컴파일하고 web.xml 파일에 다음 항목을 생성해 보겠습니다.
.... <servlet> <servlet-name>DatabaseAccess</servlet-name> <servlet-class>DatabaseAccess</servlet-class> </servlet> <servlet-mapping> <servlet-name>DatabaseAccess</servlet-name> <url-pattern>/DatabaseAccess</url-pattern> </servlet-mapping> ....
이제 이 서블릿을 호출하려면 http://localhost:8080 링크를 입력하세요. / DatabaseAccess, 다음 응답이 표시됩니다:
数据库结果 ID: 100, Age: 18, First: Zara, Last: Ali ID: 101, Age: 25, First: Mahnaz, Last: Fatma ID: 102, Age: 30, First: Zaid, Last: Khan ID: 103, Age: 28, First: Sumit, Last: Mittal