1 / 27

2I1070 Lektion 2

2I1070 Lektion 2. Servlets och databaskopplingar. KTH-MI Peter Mozelius. Internetprogrammering. Tidigare på kursen 2I1049 har vi enbart sysslat med fristående program där allt körs på en och samma dator. I internetsammanhang kan det istället se ut enligt: Treskiktsarkitektur

hayes
Download Presentation

2I1070 Lektion 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2I1070 Lektion 2 Servlets och databaskopplingar KTH-MI Peter Mozelius

  2. Internetprogrammering Tidigare på kursen 2I1049 har vi enbart sysslat med fristående program där allt körs på en och samma dator. I internetsammanhang kan det istället se ut enligt: • Treskiktsarkitektur • webbklient - webbserver - data • XHTML - Java servlets - databas

  3. Klient-server med servlets

  4. Java servlets Ett effektivt alternativ till äldre CGI-lösningar • CGI startar en ny process för varje nytt anrop • Servlets startar bara en ny tråd • CGI avslutar processen efter anropet • Servlets ligger kvar i minnet mellan anrop

  5. En liten enkel servlet Vi ska nu titta på koden för en riktigt enkel servlet som inte gör mer än att skriva ut det vanliga Hello World! Först behövs följande importsatser: import java.io.*; import javax.servlet.*; import javax.servlet.http.*;

  6. En liten enkel servlet public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>");

  7. En liten enkel servlet out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } }

  8. Apache Tomcat • Det finns flera sätt att köra servlets • Ett mycket vanligt sätt är m h a Tomcat • Som alltid när det gäller Apacheprodukter • helt fri att använda • öppen källkod • Följer servlet- och JSP-specifikatioerna • Det sätt som vi kommer att använda • MEN visst finns det kommersiella alternativ

  9. Apache Tomcat • Det kommer hela tiden nya versioner • Det finns en del smådetaljer som skiljer Mer information finns på: http://jakarta.apache.org/tomcat/ 15 min paus!

  10. Apache Tomcat • Starta Tomcat: • startup.bat • startup.sh • Stoppa Tomcat: • shutdown.bat • shutdown.sh

  11. Apache Tomcat • Anropa Tomcat genom: • http://127.0.0.1:8080/ • http://localhost:8080/index.html

  12. Apache Tomcat • Om du använder SDK standard edition • Se till så att servlet.jar finns med i CLASSPATH • Exempelvis: • SET CLASSPATH= .;E:\tomcat\lib\servlet.jar • OBS jar-filen heter i version5 servlet-api.jar OBS • I autoexec.bat för Win9X • I kontrollpanelen/miljövariabler för WinXP

  13. Apache Tomcat • Två andra miljövariabler är: • JAVA_HOME (Exempelvis:C:\jdk1.5.x\) • och • CATALINA_HOME (Sökvägen till Tomcat)

  14. Konfigurationsfiler Tomcat har många konfigurationsfiler Två av dem är: • web.xml • mappning av servlets • CATALINA_HOME\webapps\miwebb\WEB-INF\ • server.xml • Mappning av servlet context • CATALINA_HOME\conf\

  15. ODBC - JDBC • Open Data Base Connectivity • Microsoftstandard för databaskopplingar • JDBC framtagen av Javasoft • Motsvarigheten för koppplingar från Java • En huvudpoäng är interoperabilitet

  16. JDBC Gemensamt API Olika drivrutiner

  17. java.sql • Genomimport java.sql.*; så får ni tillgång till klasser för metadata: ResultSet resultSet = statement.executeQuery(”SELECT …”); ResultSetMetaData metaData = resultSet.getMetaData();

  18. MySQL En på Internet mycket vanlig relationsdatabas Finns både i kommersiella och gratisversioner Liten, snabb och stabil Det finns andra mer avancerade databaser

  19. MySQL • MySQL har blivit enklare att installera och mer lättanvänd i de senaste versionerna • MEN, allt är inte intuitivt och lättillgängligt Information och stödprogram finns att hämta på: http://dev.mysql.com/doc/ 15 min paus!

  20. Databaskoppling i Java • En databaskoppling kan ske enligt: • Registrera JDBC-drivrutinen • Etablera kontakten med databasen • Exekvera en SQL-fråga • Bearbeta resultatet av SQL-frågan • Koppla ner och stäng

  21. Registrera drivrutinen • Innan JDBC-drivrutinen kan användas så ska den registreras i stil med: try{ Class.forName("org.gjt.mm.mysql.Driver”); } catch (ClassNotFoundException cnfe) { out.println(”Det gick inte att ladda drivrutinen: " + cnfe.getMessage()); } (En JDBC-drivrutin är en javaklass nåbar via CLASSPATH)

  22. Etablera kopplingen • När drivrutinen är laddad går det sedan bra att upprätta en koppling till MySQL genom: jdbc:mysql://SERVER/DATABASE_NAME Vilket i en koppling lokalt till den egna datorn kan se ut enligt: Connection connection = DriverManager.getConnection(”jdbc:mysql://localhost/uppg2d?user=rudolf&password=4477x2w32");

  23. Etablera kopplingen • En liten databas finns någonstans på den världsvida väven Koppla dig dit enligt: Connection connection = DriverManager.getConnection(” jdbc:mysql://server.adress.se/user=peter &password=hemligt");

  24. Exekvera en SQL-fråga • När det finns en koppling till databasen går det sedan bra att köra SQL-frågan: Statementstmt = connection.createStatement(); ResultSet resultSet = stmt.executeQuery("SELECT * FROM studenter");

  25. Bearbeta resultatet • Klassen ResultSet har två andvändbara metoder: • next() • previous() while ( resultSet.next() ){ out.println("<tr>"); out.println("<td>" + resultSet.getString(…

  26. Koppla ner och stäng Stäng ner det som öppnats: out.close(); statement.close(); connection.close(); Vi tittar nu på ett litet kompendium som sammanfattar det vi har gått igenom

  27. Nästa års 2I1073 • Vi kommer nästa år på kursen 2I1073 att arbeta med bland annat: • Tomcat • MySQL • Java Servlets • HTML – XML – XHTML Tack för i år!

More Related