itk:p2 f9

30
1 ITK:P2 F9 HTTP, Java servlets och Apache Tomcat DSV Peter Mozelius

Upload: kirima

Post on 10-Jan-2016

45 views

Category:

Documents


1 download

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

TRANSCRIPT

Page 1: ITK:P2   F9

1

ITK:P2 F9

HTTP, Java servlets och Apache Tomcat

DSV Peter Mozelius

Page 2: ITK:P2   F9

2

Klienter och servrar

Page 3: ITK:P2   F9

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)

Page 4: ITK:P2   F9

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)

Page 5: ITK:P2   F9

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

Page 6: ITK:P2   F9

6

HTTP kommandon

GETPOSTHEADTRACEPUTDELETE

Page 7: ITK:P2   F9

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

Page 8: ITK:P2   F9

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

Page 9: ITK:P2   F9

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

Page 10: ITK:P2   F9

10

Klient-server med servlets

Page 11: ITK:P2   F9

11

Page 12: ITK:P2   F9

12

Servlets och HTTP

Metoder för HTTP i en servlet doGet() doPost() doHead() doTrace() doPut() doDelete()

Page 13: ITK:P2   F9

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); }

Page 14: ITK:P2   F9

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()

Page 15: ITK:P2   F9

15

HttpServletRequest

Andra användbara metoder är:request.getMethod()request.getProtocol()request.getRequestURI()request.getParameter()request.getCookies()

Page 16: ITK:P2   F9

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

Page 17: ITK:P2   F9

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

Page 18: ITK:P2   F9

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.*;

Page 19: ITK:P2   F9

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

Page 20: ITK:P2   F9

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

Page 21: ITK:P2   F9

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

Page 22: ITK:P2   F9

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/

Page 23: ITK:P2   F9

23

Apache Tomcat

Starta Tomcat: startup.bat startup.sh

Stoppa Tomcat: shutdown.bat shutdown.sh

Page 24: ITK:P2   F9

24

Apache Tomcat

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

Page 25: ITK:P2   F9

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

Page 26: ITK:P2   F9

26

Apache Tomcat

Två andra miljövariabler är:

JAVA_HOME (Exempelvis: C:\jdk1.5.x\)

och

CATALINA_HOME (Sökvägen till Tomcat)

Page 27: ITK:P2   F9

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\

Page 28: ITK:P2   F9

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"

Page 29: ITK:P2   F9

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>

Page 30: ITK:P2   F9

30

Uppgift D

Nu kan ni köra igång med Uppgift D

Tack för id

ag!