2I1073 F - PowerPoint PPT Presentation

About This Presentation
Title:

2I1073 F

Description:

Title: ITP1 F rel sning 1 Author: Peter Mozelius Last modified by: Peter Created Date: 6/23/2002 8:41:38 AM Document presentation format: On-screen Show – PowerPoint PPT presentation

Number of Views:58
Avg rating:3.0/5.0
Slides: 34
Provided by: PeterM235
Category:
Tags: 2i1073 | java | servlet

less

Transcript and Presenter's Notes

Title: 2I1073 F


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.18080/
  • http//localhost8080/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 om version 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 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
  • 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
  • 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
  • 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").newIns
    tance()
  • catch (ClassNotFoundException cnfe)
  • out.println("Couldnt 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
  • jdbcmysql//SERVER/DATABASE_NAME
  • Vilket i en koppling lokalt till den egna
    datorn
  • kan se ut enligt
  • Connection connection
  • DriverManager.getConnection(jdbcmysql//local
    host/uppg2d?userrudolfpassword4477x2w32")

28
Etablera kopplingen
  • En liten KI-databas ligger nåbar via
  • Andromeda.dsv.su.se
  • Koppla dig dit enligt
  • Connection connection DriverManager.getConnec
    tion(
  • jdbcmysql//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("lttrgt") out.println("lttdgt"resu
    ltSet.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
  • ltjar href"u2e.jar"/gt
  • 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/Del
    2/u2e/u2e.txt
  • Gör sedan den frivilliga Uppgift2e
  • http//dsv.su.se/miwebb/examination/labbar/Del2/u
    2e/uppgift2e.htm
  • Tack för idag!
Write a Comment
User Comments (0)
About PowerShow.com