Upload
madge
View
39
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
2I1073 Föreläsning 2
KTH-MI Peter Mozelius
Server, servlets ochdatabaskopplingar
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
Klient-server med servlets
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
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
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
Apache Tomcat
Starta Tomcat: – startup.bat– startup.sh
Stoppa Tomcat: – shutdown.bat– shutdown.sh
Apache Tomcat
Anropa Tomcat genom:– http://127.0.0.1:8080/– http://localhost:8080/index.jsp
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.jarservlet-api.jar
I Windows under kontrollpanelen/miljövariabler
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
Tomcats konfigurationsfiler
Tomcat har många konfigurationsfilerTvå av dem är: web.xml
– mappning av servletsservlets– CATALINA_HOME\webapps\miwebb\WEB-INF\
server.xml– Mappning av servlet contextservlet context– CATALINA_HOME\conf\
PAUS 15 min
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
Servletanrop
service kallar sedan på en passande metod:– doGet()– doPost()– [ doHead() ]– doTrace()– doPut()– doDelete()
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
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); }
HttpServletRequest
Ett sätt att få tag i viktig information HTTP Request = klientens förfrågan
Läs innehållet i Request HeaderRequest Header genom:– request.getHeader()– request.getHeaderNames()– request.getContentType()– request.getContentLength()
HttpServletRequest
Andra användbara metoder är:– request.getMethod()– request.getProtocol()– request.getRequestURI()– request.getParameter()– request.getCookies()
Mera om kakor om en liten stund
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 PrintWriterPrintWriter som kan skriva ut det vi vill ha som svar till klienten.
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 extensionNetscape extension
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
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 interoperabilitetinteroperabilitet
JDBC
Gemensamt API Olika drivrutiner
java.sql
Genom import java.sql.*; så får ni tillgång till klasser för metadatametadata:
ResultSet resultSet = statement.executeQuery(”SELECT …”);
ResultSetMetaData metaData = resultSet.getMetaData();
MySQL
En på Internet mycket vanlig relationsdatabas Finns både i kommersiella och gratisversioner Liten, snabb och stabil Det finns andra mer avancerade databaser
Databaskoppling i Java
En databaskoppling kan ske enligt:
1. Registrera JDBC-drivrutinen2. Etablera kontakten med databasen3. Exekvera en SQL-fråga4. Bearbeta resultatet av SQL-frågan5. Koppla ner och stäng
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)
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");
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=********");
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");
Bearbeta resultatet
Klassen ResultSet har två användbara metoder:– next()– previous()
while ( resultSet.next() ){
out.println("<tr>"); out.println("<td>"+resultSet.getString(…
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
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
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 Uppgift2ehttp://dsv.su.se/~miwebb/examination/labbar/Del2/u2e/uppgift2e.htm
Tack för idag!