1 / 33

2I1073 Föreläsning 2

2I1073 Föreläsning 2. Server, servlets och databaskopplingar. KTH-MI Peter Mozelius. Klient - server. I förra föreläsningen tittade vi en hel del på olika tekniker för klientsidan på Internet Nu går vi över till serversidan Treskiktsarkitektur webbklient - webbserver - data

madge
Download Presentation

2I1073 Föreläsning 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. 2I1073 Föreläsning 2 Server, servlets och databaskopplingar KTH-MI Peter Mozelius

  2. Klient - server • I förra föreläsningen tittade vi en hel del på olika tekniker för klientsidan på Internet • Nu går vi över till serversidan • Treskiktsarkitektur • webbklient - webbserver - data • XHTML - Java servlets - databas

  3. Klient-server med servlets

  4. Java servlets • Applets på serversidan • 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. 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

  6. Apache Tomcat • Det kommer hela tiden nya versioner Ni väljer själva genom uppvärmningsövning2 • ver 4 • ver 5 • ver 6 • Men det finns tyvärr en del smådetaljer som skiljer

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

  8. Apache Tomcat • Anropa Tomcat genom: • http://127.0.0.1:8080/ • http://localhost:8080/index.jsp

  9. 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 fr o m version5 servlet-api.jar I Windows under kontrollpanelen/miljövariabler

  10. Apache Tomcat • Om man vill använda JSP så är det också viktigt att sätta miljövariabeln: • JAVA_HOME (Exempelvis:C:\jdk.16.x) • TOMCAT_HOME • heter fr omversion 4 • CATALINA_HOME

  11. Tomcats 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\ PAUS 15 min

  12. Servletanrop • När servern får ett anrop från en servlet startas en ny tråd där service-metoden kollar vilken typ av HTTP-förfrågan det rör sig om: • GET • POST • HEAD • TRACE • PUT • DELETE

  13. Servletanrop • service kallar sedan på en passande metod: • doGet() • doPost() • [ doHead() ] • doTrace() • doPut() • doDelete()

  14. GET och POST • I 99% så handlar det om GET och POST • GET • tänkt för att hämta saker från servern • jobbar med URL + frågesträng • vissa servrar klipper av frågesträngen efter x tecken • POST • skickar data till servern utan att klienten ser • passar bättre för stora mängder data • säkrare än GET

  15. doGet() och doPost() • När du behöver bägge metoderna i en servlet så kan de med fördel kombineras enligt: • public void doGet(HttpServletRequest request, • HttpServletResponse response) { • Här finns koden som gör jobbet; • } • public void doPost(HttpServletRequest request, • HttpServletResponse response) { • doGet(request, response); • }

  16. HttpServletRequest • Ett sätt att få tag i viktig information • HTTP Request = klientens förfrågan • Läs innehållet i Request Header genom: • request.getHeader() • request.getHeaderNames() • request.getContentType() • request.getContentLength()

  17. HttpServletRequest • Andra användbara metoder är: • request.getMethod() • request.getProtocol() • request.getRequestURI() • request.getParameter() • request.getCookies() • Mera om kakor om en liten stund

  18. HttpServletResponse • HTTP Response = serverns svar • Här finns metoder som t ex • response.addCookie()//lägg till en kaka MEN den metod som vi mest ska använda är: response.getWriter() Öppnar enPrintWriter som kan skriva ut det vi vill ha som svar till klienten.

  19. Cookies • Med kakor så kan besökarnas individuella önskemål registreras och kommas ihåg • En vanlig MEN omdiskuterad teknik • I en del webbläsare är kakfunktionen avstängd • Cookies är inte en del av HTTP utan en bit data som kan bäddas in i en request | response • Från början en Netscape extension

  20. Cookies • Cookies finns i ett flertal språk • I Java finns • javax.servlet.http.Cookie Cookie kaka = new Cookie(name, value); allaSessionensKakor = request.getCookies() PAUS 15 min

  21. 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

  22. JDBC Gemensamt API Olika drivrutiner

  23. 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();

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

  25. 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

  26. Registrera drivrutinen • Innan JDBC-drivrutinen kan användas så ska den registreras i stil med: try{ Class.forName("org.gjt.mm.mysql.Driver").newInstance(); } catch (ClassNotFoundException cnfe) { out.println("Couldn’t load database driver: " + cnfe.getMessage()); } (En JDBC-drivrutin är en javaklass nåbar via CLASSPATH)

  27. 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");

  28. Etablera kopplingen • En liten KI-databas ligger nåbar via: Andromeda.dsv.su.se Koppla dig dit enligt: Connection connection =DriverManager.getConnection(” jdbc:mysql://Andromeda.dsv.su.se/kilabuser=****&password=********");

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

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

  31. Koppla ner och stäng out.close(); statement.close(); connection.close(); Mer information finns inne i First Class i 2I1073/MySQL där Ken har lagt upp det ni behöver för Uppgift2d och projektet

  32. Java Web Start • Ett sätt att starta javaapplikationer på serversidan via en webbläsare: • Applikationen packas i en jar-fil • Tillsammans med en manifest-fil (som vi gjorde på 2I1049 förra året) • Startas genom en JNLP-fil • <jar href="u2e.jar"/> • JNLP-filen länkas in från ett XHTML-dokument

  33. Java Web Start • En enkel JNLP-fil återfinns på: http://dsv.su.se/~miwebb/examination/labbar/Del2/u2e/u2e.txt • Gör sedan den frivilliga Uppgift2e http://dsv.su.se/~miwebb/examination/labbar/Del2/u2e/uppgift2e.htm Tack för idag!

More Related