Веб Дизайн - статьи



              

Сервлеты на базе Java Web Server - часть 3


Именно эти параметры должны будут вводиться // в специально прорисованном окне браузера, с которым будет // взаимодействовать наш сервлет stack = req.getParameter(_stack_); username = req.getParameter(_username_); password = req.getParameter(_password_); query = req.getParameter(_query_); res.setContentType(_text/html_); out = new PrintStream(res.getOutputStream()); printPageHeader(out); // в том случае, если параметры отсутствуют if (stack == null username == null password == null query == null) { printPageFooter(out); return; } String url = _jdbc:odbc:_+stack; out.println(_<hr><h3>Previous Query</h3>_); out.println(_<pre>_); out.println(_Database Stack : _+stack); out.println(_ User ID : _+username); out.println(_ Password : _+password); out.println(_ Query : _+query); out.println(_</pre>_); try { // Найти jdbc стек. Может существовать несколько зарегистрированных драйверов Class.forName(_sun.jdbc.odbc.JdbcOdbcDriver_); //Class.forName(_jdbc.odbc.JdbcOdbcDriver_); // Получить соединение с базой данных con = DriverManager.getConnection(url, username, password); out.println(_<hr>_); out.println(_<h3>ODBC Driver and Database Messages</h3>_); checkForWarning(con.getWarnings(), out); DatabaseMetaData dma = con.getMetaData(); out.println(_Connected to _ + dma.getURL() + _<br>_); out.println(_Driver _ + dma.getDriverName() + _<br>_); out.println(_Version _ + dma.getDriverVersion() + _<br>_); // Создать и выполнить запрос. Конкретный оператор SQL // вводится удаленным пользователем в окне его браузера Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); // Печать результатов. Они переназначаются на стандартный вывод // и поступают в браузер клиента dispResultSet(rs, out); rs.close(); stmt.close(); con.close(); out.println(_<hr>_); } catch (SQLException ex) { out.println(_<hr>*** SQLException caught ***_); while (ex != null) { out.println(_SQLState: _ + ex.getSQLState() + _<br>_); out.println(_Message: _ + ex.getMessage() + _<br>_); out.println(_Vendor: _ + ex.getErrorCode() + _<br>_); ex = ex.getNextException(); } } catch (java.lang.Exception ex) { ex.printStackTrace(); } printPageFooter(out); } /** * возврат запрошенной информации */ public String getServletInfo() { return _Это простой сервлет, который показывает как использовать JDBC_; } /* * проверка и печать информации сервера */ private void checkForWarning(SQLWarning warn, PrintStream out) throws SQLException { boolean rc = false; if (warn != null) { out.println(_<hr>*** Warning ***_); rc = true; while (warn != null) { out.println(_SQLState: _ + warn.getSQLState() + _<br>_); out.println(_Message: _ + warn.getMessage() + _<br>_); out.println(_Vendor: _ + warn.getErrorCode() + _<br>_); warn = warn.getNextWarning(); } } } /* * Показ результатов запроса в табличном html формате */ private void dispResultSet(ResultSet rs, PrintStream out) throws SQLException, IOException { int i; // метаданные используются для получения информации о схеме ResultSetMetaData rsmd = rs.getMetaData(); int numCols = rsmd.getColumnCount(); out.println(_<hr>_); out.println(_<h3>Database Columns and Data</h3>_); out.println(_<table border=3>_); out.println(_<tr>_); for (i=1; i<=numCols; i++) { out.println(_<th>_ + rsmd.getColumnLabel(i) + _</th>_); } out.println(_</tr>_); // для всех данных while (rs.next()) { out.println(_<tr>_); // for one row for (i=1; i<=numCols; i++) { dispElement(rs, rsmd.getColumnType(i), out, i); } out.println(_</tr>_); } out.println(_</table>_); } // печать одного элемента private void dispElement(ResultSet rs, int dataType, PrintStream out, int col) throws SQLException, IOException { String cp1 = new String(_Cp1251_); // в зависимости от типа данных, определяем различные типы обработки switch(dataType) { case Types.DATE: java.sql.Date date = rs.getDate(col); out.println(_<th>_ + date.toString() + _</th>_); break; case Types.TIME: java.sql.Time time = rs.getTime(col); out.println(_<th>_ + time.toString() + _</th>_); break; case Types.TIMESTAMP: java.sql.Timestamp timestamp = rs.getTimestamp(col); out.println(_<th>_ + timestamp.toString() + _</th>_); break; case Types.CHAR: case Types.VARCHAR: case Types.LONGVARCHAR: String str = rs.getString(col); // Возможно, что здесь вам понадобятся кириллические преобразования out.println(_<th>_ + str + _</th>_); break; case Types.NUMERIC: case Types.DECIMAL: java.math.BigDecimal numeric = rs.getBigDecimal(col, 10); out.println(_<th>_ + numeric.toString() + _</th>_); break; case Types.BIT: boolean bit = rs.getBoolean(col); out.println(_<th>_ + new Boolean(bit) + _</th>_); break; case Types.TINYINT: byte tinyint = rs.getByte(col); out.println(_<th>_ + new Integer(tinyint) + _</th>_); break; case Types.SMALLINT: short smallint = rs.getShort(col); out.println(_<th>_ + new Integer(smallint) + _</th>_); break; case Types.INTEGER: int integer = rs.getInt(col); out.println(_<th>_ + new Integer(integer) + _</th>_); break; case Types.BIGINT: long bigint = rs.getLong(col); out.println(_<th>_ + new Long(bigint) + _</th>_); break; case Types.REAL: float real = rs.getFloat(col); out.println(_<th>_ + new Float(real) + _</th>_); break; case Types.FLOAT: case Types.DOUBLE: double longreal = rs.getDouble(col); out.println(_<th>_ + new Double(longreal) + _</th>_); break; case Types.BINARY: case Types.VARBINARY: case Types.LONGVARBINARY: byte[] binary = rs.getBytes(col); out.println(_<th>_ + new String(binary, 0) + _</th>_); break; } } private void printPageHeader(PrintStream out) { out.println(_<html>_); out.println(_<head>_); out.println(_<tltle> Типичный сервлет для работы с базами данных </title>_); out.println(_</head>_); out.println(_<body>_); out.println(_<center><font size=5>_ + _<b>Jeeves Database Servlet</b>_ + _</font></center>_); out.println(_<hr>_); out.println(_<form action=\_/servlet/dbServlet\_ method=\_get\_>_); out.println(_<pre>_); out.println(_ODBC DSN : <input type=textarea name=stack>_); out.println(_ User ID : <input type=textarea name=username>_); out.println(_ Password : <input type=textarea name=password>_); out.println(_ SQL Query : <input type=textarea name=query>_); out.println(_</pre>_); out.println(_<input type= submit>_); out.println(_</form>_); } private void printPageFooter(PrintStream out) { out.println(_</body>_); out.println(_</html>_); out.flush(); } }







Содержание  Назад  Вперед