Een servlet-programma met hetzelfde resultaat als de jsp-pagina

  1. We gaan nu als volgende stap een servlet-programma schrijven die hetzelfde resultaat geeft als de jsp-pagina. Voor het runnen moeten we nu ook de file web.xml aanpassen. Open in Eclipse weer het project testAccessDb. We gaan nu van servlet-classen gebruik maken die niet in de java Jdk staan. We moeten daarom aangeven waar die bibliotheek staat. We maken gebruik van de bibliotheek die Tomcat zelf ook gebruikt. Click Project | Properties | Java build path | Tab Libraries | Add External Jars... Ga via de commons subdirectory van de Tomcat-installatie naar de lib subdirectory en open de servlet.jar bibliotheek. Click OK.
  2. De servlet.jar verschijnt ook in de Package Explorer.
  3. File | New | Class... Vul de getoonde waarden in. De superclass is HttpServlet.
  4. Maak de volgende tekst voor de servlet aan:
    package odbc_access;
    
    import java.io.*;
    import java.sql.*;
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    public class BoekenServlet extends HttpServlet {
    
       public void doGet (HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
    
          Connection conn=null;
          ResultSet resultSet=null;
          //set content type header before accessing the Writer
          response.setContentType("text/html");
          PrintWriter out = response.getWriter();
    
          out.println("<html>" +
                "<head><title>Alle boeken</title></head>" +
                "<body  bgcolor=\"#ffffff\">"+
                "<center> <hr> <br> &nbsp;" +
                "<h1>"+
                "<font size=\"+2\" color=\"red\">D3Q </font>" +
                "<font size=\"+2\" color=\"green\">Boeken</font>" +
                "</h1>"+
                "</center>");
          out.println("<pre>Connection settings: ");
    
          try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          }
          catch(ClassNotFoundException e) {
            System.out.println("Driver not found.");
            System.out.println(e.toString());
          }
          try {
    //       Connect to the Database
            conn = DriverManager.getConnection("jdbc:odbc:boeken_A", "", "");
    
            Statement statement = conn.createStatement();
            resultSet = statement.executeQuery("SELECT id, titel, id_auteur"
            + " FROM boek");
            out.println("getCatalog = " + conn.getCatalog());
            out.println("getAutoCommit = " + conn.getAutoCommit());
            out.println("</pre>");
    
            out.println("<hr>");
            out.println("<p>Return result:</p>");
    
    
            out.println("<table border=1 cellpadding=2 cellspacing=0 width=500");
          
            int countrows = 0;
            while (resultSet.next()) {
               out.print("<tr height=\"302\">");
               out.print("<td height=\"16\">"+resultSet.getInt("id")+"</td>");
               out.print("<td height=\"16\">"+resultSet.getString("titel")+"</td>");
               out.print("<td height=\"16\">"+resultSet.getInt("id_auteur")+"</td>");
               countrows++;
               out.print("</tr>");
            }
    
            out.print("</table>");
            out.print("<p>aantal boeken:"+countrows+"</p>");
          }
          catch(SQLException e) {
            System.out.println("An error occurs.");
            System.out.println(e.toString());
          }
    
    
          out.println("</body> </html>");
          out.close();
    }
    
    
    public String getServletInfo() {
    return "De boeken als voorbeeld" ;
    }
    }
    
  5. Zet de gecompileerde servlet in de classes-subdirectory van de web-applicatie (onder Tomcat). Omdat de Servlet in de package odbc_access zit moet niet vergeten worden om in de classes directory ook die subdirectory aan te maken.
  6. Wijzig de web.xml file van de applicatie in:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
    
    <web-app>
      <display-name>Dtesting</display-name>
      <description>
         Welcome to Dtesting...Tomcat
      </description>
    
      <servlet>
            <servlet-name>Boek</servlet-name>
            <servlet-class>odbc_access.BoekenServlet</servlet-class>
        </servlet>
    <servlet-mapping>
    
      <servlet-name>Boek</servlet-name>
      <url-pattern>*.d3Q</url-pattern>
    </servlet-mapping>
    
    </web-app>
    
  7. Roep de applicatie op met bijv: http://localhost:8080/tst3Q/a.d3Q
  8. Als vervolgens iets aan de tekst van de servlet wordt gewijzigd en hij opnieuw wordt gecompileerd, moet je er aan denken dat Tomcat niet automatisch de nieuwe versie van de servlet laadt. De applicatie moet dan eerst worden gestopt en opnieuw gestart.
versie: 3 mei 2006; copyright: Drikus Kleefsman