Accès à la base de données des servlets
Ce tutoriel suppose que vous comprenez déjà le fonctionnement des applications JDBC. Avant de commencer à apprendre l'accès à la base de données Servlet, assurez-vous que vous disposez de la configuration de l'environnement JDBC et de la base de données appropriées.
En commençant par les concepts de base, créons un tableau simple et créons quelques enregistrements dans le tableau.
Créer une table de base de données
Pour créer la table Employés dans la base de données de test TEST, veuillez suivre les étapes ci-dessous :
Étape 1 :
Ouvrez l'Invite de commandes et accédez au répertoire d'installation, comme indiqué ci-dessous :
C:\> C:\>cd Program Files\MySQL\bin C:\Program Files\MySQL\bin>
Étape 2 :
Journal dans la base de données comme indiqué ci-dessous :
C:\Program Files\MySQL\bin>mysql -u root -p Enter password: ******** mysql>
Étape 3 :
Créez la table Employé dans la base de données de test TEST comme indiqué ci-dessous Affichage :
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>
Créer des enregistrements de données
Enfin, créez plusieurs enregistrements dans la table Employee, comme indiqué ci-dessous :
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>
Accédez à la base de données
Ce qui suit L'exemple montre comment utiliser Servlet pour accéder à la base de données 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 } }
Compilons maintenant le servlet ci-dessus et créons l'entrée suivante dans le fichier 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> ....
Maintenant, pour appeler ce servlet, entrez le lien : http://localhost:8080 / DatabaseAccess, la réponse suivante sera affichée :
数据库结果 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