Presentation laddar. Vänta.

Presentation laddar. Vänta.

2I1073 Föreläsning 2 KTH-MI Peter Mozelius Server, servlets och databaskopplingar.

Liknande presentationer


En presentation över ämnet: "2I1073 Föreläsning 2 KTH-MI Peter Mozelius Server, servlets och databaskopplingar."— Presentationens avskrift:

1 2I1073 Föreläsning 2 KTH-MI Peter Mozelius Server, servlets och databaskopplingar

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 servlet-api.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 om version 4  CATALINA_HOME

11 Tomcats konfigurationsfiler Tomcat har många konfigurationsfiler Två av dem är: web.xml servlets – mappning av servlets – CATALINA_HOME\webapps\miwebb\WEB-INF\ server.xml servlet context – 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 Request Header 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() PrintWriter Öppnar en PrintWriter 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 Netscape extension Från början en Netscape extension

20 Cookies Cookies finns i ett flertal språk I Java finns – j avax.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 interoperabilitet En huvudpoäng är interoperabilitet

22 JDBC Gemensamt API Olika drivrutiner

23 java.sql metadata Genom import 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: 1. Registrera JDBC-drivrutinen 2. Etablera kontakten med databasen 3. Exekvera en SQL-fråga 4. Bearbeta resultatet av SQL-frågan 5. 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://localho st/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: Statement stmt = 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(" "); out.println(" "+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 – 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 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/u2 e/uppgift2e.htm Tack för idag!


Ladda ner ppt "2I1073 Föreläsning 2 KTH-MI Peter Mozelius Server, servlets och databaskopplingar."

Liknande presentationer


Google-annonser