itk:p2 f9

Post on 10-Jan-2016

45 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

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!

top related