Upload
kirima
View
45
Download
1
Embed Size (px)
DESCRIPTION
ITK:P2 F9. HTTP, Java servlets och Apache Tomcat. DSV Peter Mozelius. Klienter och servrar. HTTP. HTTP ( H yper T ext T ransfer P rotocol) är ett protokoll som framför allt talas mellan webbläsare och webbservrar - PowerPoint PPT Presentation
Citation preview
1
ITK:P2 F9
HTTP, Java servlets och Apache Tomcat
DSV Peter Mozelius
2
Klienter och servrar
3
HTTP
HTTP (HyperText Transfer Protocol) är ett protokoll som framför allt talas mellan webbläsare och webbservrar
HTTP-protokollet började användas 1990 som en ersättare till det äldre Gopher
Första versionen var HTTP/0.9
HTTP/0.9 har ett enda kommando: GET Senare versioner är 1.0 och 1.1 (1996)
4
URL
Uniform Resource Locator
URL-syntaxen finns specificerad för en rad olika protokoll i RFC 1738
Vi tittar här på hur den ser ut för HTTP som är protokollet för hemsidor/webben
http://host[:port]/path/filename[#section]
(+ eventuell följande ?query_string)
5
URL
Vi tittar på den URL som leder fram till en hemsida med lite material till denna kurs:
http://www.dsv.su.se/~mozelius/ITKP2/
http://host[:port]/path/filename[#section]
protocol/protokoll är http:// host/värddator är www.dsv.su.se port är HTTP:s defaultport :80 path/sökväg är ~mozelius/ITKP2/ filename/filnamn blir index.html
6
HTTP kommandon
GETPOSTHEADTRACEPUTDELETE
7
GET och POST
I 99% så handlar det om GET och POST GET
tänkt för att hämta saker från servern skickar data med URL + frågesträng vissa servrar klipper av frågesträngen efter x
antal tecken
POST skickar data till servern utan att klienten ser passar bättre för stora mängder data säkrare än GET
8
Java servlets
Som applets fast på serversidan Skrivs i språket Java precis som applets
och vanliga applikationer
import javax.servlet.*;Grundläggande servletklasser
import javax.servlet.http.*;Klasser som hanterar HTTP kommandon
9
Java servlets
Ett effektivt alternativ till CGI-lösningar
CGI startar en ny process för varje anrop Servlets startar bara en ny tråd
CGI avslutar processen efter anropet Servlets ligger kvar i minnet
10
Klient-server med servlets
11
12
Servlets och HTTP
Metoder för HTTP i en servlet doGet() doPost() doHead() doTrace() doPut() doDelete()
13
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); }
14
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()
15
HttpServletRequest
Andra användbara metoder är:request.getMethod()request.getProtocol()request.getRequestURI()request.getParameter()request.getCookies()
16
HttpServletResponse HTTP Response = serverns svar Här finns metoder som t ex
response.addCookie() //lägg till en kaka
En annan användbar metod är:response.getWriter()
Öppnar en PrintWriterPrintWriter för utskrifter
17
Cookies/Kakor
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
18
En liten enkel servlet
Vi ska nu titta på koden för en riktigt enkel servlet som inte gör mer än att skriva utdet gamla vanliga Hello World !
Först behövs följande importsatser:import java.io.*; import javax.servlet.*;import javax.servlet.http.*;
19
En liten enkel servlet
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String protokoll = request.getProtocol(); response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
20
En liten enkel servlet
out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hallå klient!</h1>"); out.println("<p>Protokollet är: "); out.println(protokoll + ”</p>"); out.println("</body>"); out.println("</html>"); } }
Paus 15 minuter
21
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 det finns kommersiella alternativ
22
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/
23
Apache Tomcat
Starta Tomcat: startup.bat startup.sh
Stoppa Tomcat: shutdown.bat shutdown.sh
24
Apache Tomcat
Anropa Tomcat genom: http://127.0.0.1:8080/ http://localhost:8080/index.jsp
25
Apache Tomcat
Om du använder SDK standard edition Se till att servlet.jar finns med i din
CLASSPATH Exempelvis: SET CLASSPATH= .;E:\tomcat\lib\servlet.jar
OBS jar-filen heter fr o m version5 servlet-api.jarservlet-api.jar
I autoexec.bat för Win9X I kontrollpanelen/miljövariabler för WinXP
26
Apache Tomcat
Två andra miljövariabler är:
JAVA_HOME (Exempelvis: C:\jdk1.5.x\)
och
CATALINA_HOME (Sökvägen till Tomcat)
27
Konfigurationsfiler
Tomcat har många konfigurationsfilerTvå av dem är: web.xml
mappning av servletsservlets CATALINA_HOME\webapps\context\WEB-INF\
server.xml Mappning av servlet context mmservlet context mm CATALINA_HOME\conf\
28
XHTML för servlets
Vanligt är att starta en servlet från ett XHTML-dokument
Användbara taggar är <form> <input>
type = "text” type = "submit"
29
XHTML för servlets<h4>Hej, fyll i för och efternamn:</h4> <form action = "http://localhost:8080/mozelius/F3" method = "get"> <p> <label> <input type = "text" name = "fnamn" value =”Bo" /> <input type = "text" name = "enamn" value =”Ek"/> <input type = "submit" value = "Skicka" /> </label> </p> </form>
30
Uppgift D
Nu kan ni köra igång med Uppgift D
Tack för id
ag!