П.3 . Сервлет, выполняющий запрос к базе Oracle i
Листинг П.3
. Сервлет, выполняющий запрос к базе Oracle i
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import j ava.sql.*;
public class JdbcServlet extends HttpServlet{ static)
try{
DriverManager.registerDriver(
new oracle.j dbc.driver.OracleDriver());
)catch(SQLException e){
System.err.println(e) ;
}
)
private Vector results = new Vector();
private int n;
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException{
ServletExceptionf String url = req.getParameter("url") ,
login = req.getParameter("login") ,
password = req.getParameter("password") ,
query = req.getParameter("query");
// Задаем MIME-тип и кодировку для выходного потока pw
resp.setContentType("text/html;charset=windows-1251");
PrintWriter pw = resp.getWriter();
try{
Connection con =
DriverManager.getConnection(url, login, password);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
n = rsmd.getColumnCount();
while (rs.next()){
String s = " ";
for (int i = 1; i <= n; i++)
s += " " + rs.getObject(i);
results.addElement(s);
}
rs.close();
st.close();
con.close();
}catch(SQLException e){
pw.println("From doPostf): " + e) ;
}
pw.println("<html>
<head>
<title>
Answers</titlex/head>
");
рw.рrintln("<body>
<h2>
Результаты 3anpoca</h2>
");
n = results.size();
for (int i = 0; i < n; i++)
pw.println((String)results.elementAt(i) + "<br>
");
pw.println("</bodyx/html>
") ;
pw.flush() ;
pw.close () ;
}
}
Применение сервлета позволило "облегчить" клиент — браузер не загружает апплет, а только отправляет запрос и получает ответ. Вся обработка запроса ведется в сервлете на сервере.
В системе J2SDKEE (Java 2 SDK Enterprise Edition) HTML-файл и сервлет образуют один Web-компонент. Они упаковываются в один файл с расширением war (web archive) и помещаются в так называемый Web-контейнер, управляемый Web-сервером, расширенным средствами J2SDKEE.