/************************************************************************************ vieraskirja.java Servletti, joka toimii Web-pohjaisena Vieraskirjana. Vieraskirjan tiedot sijaitsevat Access-tietokantataulussa. Yhteys tietokantaan otetaan JDBC-ODBC-sillan kautta. Jos servlettiin otetaan yhteys GET-metodilla, servletti palauttaa vieraskirjan sisällön, käytännössä vieraskirjassa olevien henkilöiden nimet ja viestit. Jos henkilö haluaa näyttää myös sähköpostiosoitteensa, henkilön nimestä tehdään hyperlinkki hänen sähköpostiosoitteeseensa. Jos servlettiin otetaan yhteys POST-metodilla, tallennetaan lomakkeen tiedot tietokantaan. Metodit: doGet() - Ohjaa vieraskirjan toimintoja doPost() - Siirtää kutsun doGet()-metodille kirjoitaHTMLAlku() - Kirjoittaa HTML-koodin pakolliset alkutagit kirjoitaHTMLLoppu() - Kirjoittaa HTML-koodin pakolliset lopputagit kirjoitaVieraskirjaan() - Lisää tietokantaan uuden tietueen haeVieraskirja() - Hakee Vieraskirjan sisällön ja muotoilee siitä HTML-sivun Tekijä: Pekka Malmirae, 12/1999 ************************************************************************************/ package omatServletit; import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class vieraskirja extends HttpServlet { private String kentat[] = {"nimi", "email", "linkki", "lähiosoite", "postinumero", "postitoimipaikka", "puhelin", "viesti"}; private String ajuri = "sun.jdbc.odbc.JdbcOdbcDriver"; private String tietokanta = "jdbc:odbc:vieraskirja"; private String taulu = "Vieraat"; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); kirjoitaHTMLAlku("Vieraskirja", out); if (req.getMethod().equals("GET")) haeVieraskirja(out); else kirjoitaVieraskirjaan(req, out); kirjoitaHTMLLoppu(out); } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doGet(req,res); } private void kirjoitaHTMLAlku(String otsikko, PrintWriter out) { out.println(""); out.println(""+ otsikko +""); out.println(""); } private void kirjoitaHTMLLoppu(PrintWriter out) { out.println(""); } private void kirjoitaVieraskirjaan(HttpServletRequest req, PrintWriter out) { String parametri; Connection yhteys = null; PreparedStatement lauseke = null; ResultSet tulos = null; try { Class.forName(ajuri).newInstance(); } catch (Exception ee) { out.println("Virhe: " +ee.getMessage()); } try { yhteys = DriverManager.getConnection(tietokanta); String kentta_jono = ""; for (int i=0;iTietosi tallennettiin onnistuneesti!"); } catch (SQLException e) { out.println("SQL-poikkeus: " +e.getMessage()); } finally { try { if (yhteys != null) yhteys.close(); } catch (SQLException e2) { out.println("Sulkeminen epäonnistui"); } } } private void haeVieraskirja(PrintWriter out) { Connection yhteys = null; Statement lauseke = null; ResultSet tulos = null; try { Class.forName(ajuri).newInstance(); } catch (Exception ee) { out.println("Virhe: " +ee.getMessage()); } try { yhteys = DriverManager.getConnection(tietokanta); lauseke = yhteys.createStatement(); tulos = lauseke.executeQuery("SELECT Nimi, Email, Linkki, Viesti FROM "+ taulu +" ORDER BY Nimi"); out.println("

Vieraskirja:

"); while (tulos.next()) { String laitetaankoLinkki = tulos.getString("Linkki").trim(); if (laitetaankoLinkki.equals("Kyllä")) out.println("" + tulos.getString("Nimi") + ""); else out.println(tulos.getString("Nimi") + ""); out.println(" - " + tulos.getString("Viesti") + "
"); } } catch (SQLException e) { out.println("SQLPoikkeus: " +e.getMessage()); } finally { try { if (yhteys != null) yhteys.close(); } catch (SQLException e2) { out.println("Sulkeminen epäonnistui"); } } } }