解答例 - 実習課題1 - 2.サーブレットの基本
(実習課題1)
以下のサーブレットプログラムを作成しなさい。
- 任意のデータベース・テーブルを表示するサーブレットプログラム。
- データベースへの接続の際に使用するユーザ名・パスワードなどは、全てWebアプリケーションの設定ファイルに記述すること。
- SQL文も設定ファイルに持たせること。
- 接続のために必要な前準備は、全て「init」メソッド内の処理で完了するようにしておくこと。
解答例
/* * DisplayDbTableServlet.java TECHSCORE Java Servlet2章 実習課題1 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.servlet.chapter2.exercise1; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DisplayDbTableServlet extends HttpServlet { private String sql = null; private String url = null; private String username = null; private String password = null; private String driverClassName = null; private Connection getConnection() throws SQLException { Connection conn = null; try { Class.forName(driverClassName); conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } return conn; } public void init() throws ServletException { url = getInitParameter("url"); username = getInitParameter("username"); password = getInitParameter("password"); driverClassName = getInitParameter("driverClassName"); sql = getInitParameter("sql"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=Shift_JIS"); PrintWriter writer = response.getWriter(); writer.println("<html><head> <title>" + "Servlet2章Exercise2</title></head><body>"); Connection connection = null; try { connection = getConnection(); Statement statement = connection.createStatement(); ResultSet result = statement.executeQuery(sql); StringBuffer buffer = new StringBuffer(); buffer.append("<table border=\"1\">"); while (result.next()) { buffer.append("<tr><td>").append(result.getInt(1)).append( "</td>"); buffer.append("<td>").append(result.getString(2)).append( "</td>"); buffer.append("<td>").append(result.getString(3)).append( "</td>"); buffer.append("<td>").append(result.getInt(4)).append( "</td></tr>"); } buffer.append("</table>"); writer.println(buffer.toString()); result.close(); statement.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if (connection != null) { try { connection.close(); } catch (SQLException e) { } } } writer.println("</body></html>"); } }