Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Internetteknologi 2 (ITNET2) Java teknologi på Internettet J2EE Servlets.

Lignende præsentationer


Præsentationer af emnet: "Internetteknologi 2 (ITNET2) Java teknologi på Internettet J2EE Servlets."— Præsentationens transcript:

1 Internetteknologi 2 (ITNET2) Java teknologi på Internettet J2EE Servlets

2 Ingeniørhøjskolen i Århus Slide 2 Indhold i denne præsentation Java teknologier på Internettet Styrker og svagheder ved Java Servlet teknologi –HttpServlet –HttpServletRequest –HttpServletResponse –Eksempler på brug af Servlets Deployment af Java Servlets på Tomcat AS

3 Ingeniørhøjskolen i Århus Slide 3 Java teknologier på Internettet Java Webteknologier –J2EE/JEE: Enterprise Java, til store og datatunge systemer –Servlets: server-side dynamisk og OO til indlejret HTML –JSP: server-side dynamisk og OO til indlejret kode –JSF: modstykke til ASP.NET 2 –Applets: client-side dynamisk til avanceret dynamik på klienten (alle de ting som DHTML ikke kan) –RMI, SOAP, CORBA og EJB er en del af JEE application servere –IKKE JavaScript – har INTET med Java at gøre

4 Ingeniørhøjskolen i Århus Slide 4 Servlet History

5 Ingeniørhøjskolen i Århus Slide 5 Server-side: Servlet eksempel import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" Hello World! "); out.println(" "); out.println(" Hello World! "); out.println(" "); } Vi ser at HTML er indlejret. Hello World! Hello World! Resultatet

6 Ingeniørhøjskolen i Århus Slide 6 Styrker og svagheder ved Java Styrker: –God performance. Servlets har ikke samme invokerings overhead som CGI har, og er ikke et scriptsprog som ASP eller PHP (meget lig ASP.NET med dets CLR) –Platforms uafhængigt: kan kører på LINUX, UNIX, PC, MVS, og mange, mange andre platforme –God skalerbarhed: Servlets kan håndtere mere end et request ad gangen (indbygget tråd understøttelse) –Høj udviklingshastighed: ekstremt let at lære for Java programmører – (næsten) alle øvrige Java teknologier kan anvendes (JDBC, JPA, EJB, RMI, CORBA) –Omfattende API – som nævnt herover – alle Java API’er kan anvendes ved internetprogrammering –Smukt sprog: ægte objektorienteret = nemt at lave ”pæn” arkitektur, bruge polymorfi m.v. (næsten det vigtigste)

7 Ingeniørhøjskolen i Århus Slide 7 Styrker og svagheder ved Java Svagheder: –Det er IKKE Microsoft Internet Explorer havde tidligere 97% af markedet (2003) ASP.NET med C# og Visual Basic er en alvorlig konkurrent Stor base af ASP Visual Basic programmører klar til at konvertere –og KÆMPE FLOKKE af Visual Studio.NET folk SUN har ikke kræfter nok alene til at kæmpe mod MS strømmen – (det gør de selvfølgeligt heller ikke ; ) –VM’s er ikke altid lige optimale på alle platforme –PHP og ASP.NET servere er lettilgængelige – det er Java servere ikke –Men ellers er det svært at være negativ …

8 Ingeniørhøjskolen i Århus Slide 8 Java pakker og objekter Alting i Java består af klasser og objekter Servlets benyttes til Webapplikationer –kan bruges til andet end HTTP kommunikation. Dette vil vi ikke gennemgå nærmere i dette kursus Vil vil i stedet fokusere på den specialiserede pakke i Java Servlet pakken der handler om kommunkation via HTTP (altså WWW): –javax.servlet.http

9 Ingeniørhøjskolen i Århus Slide 9 Servlet Containers Servlet Containers (Servlet Engines) –F.eks. Apache Tomcat –Leverer et servlet runtime environment - en Servlet Container –Varetager alt i en servlets livsforløb –Sørger for at omdirigere HTTP requests til den rette servlet Denne styring foregår via Interface Servlet –I pakken javax.servlet –Denne SKAL implementeres af alle servlets –Servlet metoderne bliver automatisk kaldt af containeren (i vores tilfælde Tomcat)

10 Ingeniørhøjskolen i Århus Slide 10 Livscyklus for en servlet Servlet Container kontrollerer livscyklus –Starter med at kalde metoden “init” når den loades første gang Dvs. ved første HTTP request –Kalder metoden “service” ved hvert HTTP request Servlet behandler herefter HTTP request’et –Modtager request fra ServletRequest objektet Servlet sender svar til klient –Skriver til ServletResponse objektet “Service” kaldes kun een gang pr. request –Kalder metoden “destroy” når servlet afsluttets Til at frigive diverse brugte ressourcer (f.eks. DB forbindelser)

11 Ingeniørhøjskolen i Århus Slide 11 Servlet implementationer Servlet implementationer: –GenericServlet Package javax.servlet Bruges til ikke web baserede servlets (jeg tror aldrig jeg har set een – er der nogen der har et godt eksempel, så sig til) –HttpServlet Package javax.servlet.http Bruges til Web-baserede servlets

12 Ingeniørhøjskolen i Århus Slide 12 HttpServlet Class Class HttpServlet –Overskriver service metoden Differentierer mellem HTTP get and post requests –Definerer metoderne doGet and doPost til at behandle HTTP requests Indpakker HTTP request (der jo egentligt er en strøm af bytes = et tekst dokument) i HttpServletRequest og HttpServletResponse objekterne Der så stiller en række metoder til rådighed hvormed vi kan udtrække data, og manipulere med HTTP response dokumentet, der i sidste ende er det som brugeren præsenteres for –Der er fire andre metoder på HTTPServlet klassen der ikke gennemgås her

13 Ingeniørhøjskolen i Århus Slide 13 HttpServletRequest Interface Interface HttpServletRequest –Oprettes af servlet containeren og sendes til “ service” metoden Der af HttpServlet videresendes til doGet eller doPost –Indeholder klient request og request behandlings metoder –Udover doGet og doPost listes på næste side yderligere metoder, men de gennemgås først senere ved eksempel

14 Ingeniørhøjskolen i Århus Slide 14 HttpServletRequest Interface

15 Ingeniørhøjskolen i Århus Slide 15 HttpServletResponse Interface Interface HttpServletResponse –Oprettes af Servlet Containeren og sendes til service metoden Der af HttpServlet videresendes til doGet eller doPost –Leverer metoder til at producere et svar (response) der bliver til HTTP response dokumentet, der endeligt havner i f.eks. browseren til rendering –Yderligere metoder listes på næste side til senere opslag, men gennemgås først senere ved eksempel

16 Ingeniørhøjskolen i Århus Slide 16 Http ServletResponse Interface

17 Ingeniørhøjskolen i Århus Slide 17 FORM og server-side scripting 1 HTTP Request (over TCP/IP) GET /feedback (Java servlet) Bruger indtaster data i form feltet i browser og taster submit: http://feedbackForm.htm 2 Webserveren modtager requestet: sender det videre til ServletContaineren, der opretter bl.a. HttpServletRequest og HttpServletResponse. Parametre hentes fra HttpServletRequest og der skrives til response 3 En typisk Header kunne se ud som følger: HTTP/1.0 200 OK Server: Netscape-Communications/1.1 Date: Tuesday, 25-Nov-97 01:22:04 GMT Last-modified: Thursday, 20-Nov-97 10:44:53 GMT Content-length: 6372 Content-type: text/html... her følger resten af dokumentet Browseren modtager response: Renderer HTML dokumentet til brugervenlig form Webserver findes via IP adresse & DNS Lytter på port f.eks. 80

18 Ingeniørhøjskolen i Århus Slide 18 HTTP GET request med data Håndtering af HTTP Requests med Data –Http request følger formatet: Servlet_url ? query_string –Query string format: Parameter_name = value (kaldet name/value par) Name/value par separeres med ” &” tegnet –Eksempel: \feedback?navn=Stefan&stilling=lektor

19 Ingeniørhøjskolen i Århus Slide 19 WelcomeServl et2.java 1) Hent fornavnsparamet er 2) Skriv et XHTML response til repsonse Writer objektet 1 // Fig. 9.12: WelcomeServlet2.java 2 // Processing HTTP get requests containing data. 3 package com.deitel.advjhtp1.servlets; 4 5 import javax.servlet.*; 6 import javax.servlet.http.*; 7 import java.io.*; 8 9 public class WelcomeServlet2 extends HttpServlet { 10 11 // process "get" request from client 12 protected void doGet( HttpServletRequest request, 13 HttpServletResponse response ) 14 throws ServletException, IOException 15 { 16 String firstName = request.getParameter( "firstname" ); 17 18 response.setContentType( "text/html" ); 19 PrintWriter out = response.getWriter(); 20 21 // send XHTML document to client 22 23 // start XHTML document 24 out.println( " " ); 25 26 out.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD " + 27 "XHTML 1.0 Strict//EN\" \"http://www.w3.org" + 28 "/TR/xhtml1/DTD/xhtml1-strict.dtd\">" ); 29 30 out.println( 31 " " ); 32 33 // head section of document 34 out.println( " " ); Obtain the parameter from the request and assign the value to a string.

20 Ingeniørhøjskolen i Århus Slide 20 WelcomeServl et2.java 35 out.println( 36 " Processing get requests with data " ); 37 out.println( " " ); 38 39 // body section of document 40 out.println( " " ); 41 out.println( " Hello " + firstName + ", " ); 42 out.println( "Welcome to Servlets! " ); 43 out.println( " " ); 44 45 // end XHTML document 46 out.println( " " ); 47 out.close(); // close stream to complete the page 48 } 49 } Include the value in the response.

21 Ingeniørhøjskolen i Århus Slide 21 WelcomeServl et2.html Denne side indeholder et form element der tager “firstname” og sender et GET request til vores Servlet 1 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 4 5 6 7 8 9 Processing get requests with data 10 11 12 13 14 15 16 Type your first name and press the Submit button 17 18 19 20 21 22 23 vi ser at firstname overføres i URL’en med værdien Paul

22 Ingeniørhøjskolen i Århus Slide 22 Redirect af HTTP Requests Redirection –Tillader en Servlet at redirecte et request via –Metoden sendRedirect på HttpServletResponse Smart til: –Kontrolklasser (Dispatcher Servlets) kontrol logik, der leder og fordeler (dispatcher) Pattern: Frontcontroller

23 Ingeniørhøjskolen i Århus Slide 23 RedirectServ let.java Define Servlet RedirectServ let Process get request 1 // Fig. 9.18: RedirectServlet.java 2 // Redirecting a user to a different Web page. 3 package com.deitel.advjhtp1.servlets; 4 5 import javax.servlet.*; 6 import javax.servlet.http.*; 7 import java.io.*; 8 9 public class RedirectServlet extends HttpServlet { 10 11 // process "get" request from client 12 protected void doGet( HttpServletRequest request, 13 HttpServletResponse response ) 14 throws ServletException, IOException 15 { 16 String location = request.getParameter( "page" ); 17 18 if ( location != null ) 19 20 if ( location.equals( "deitel" ) ) 21 response.sendRedirect( "http://www.deitel.com" ); 22 else 23 if ( location.equals( "welcome1" ) ) 24 response.sendRedirect( "welcome1" ); 25 26 // code that executes only if this servlet 27 // does not redirect the user to another page 28 29 response.setContentType( "text/html" ); 30 PrintWriter out = response.getWriter(); 31 32 // start XHTML document 33 out.println( " " ); Obtain the page parameter for redirection location. Redirect user to another page or servlet.

24 Ingeniørhøjskolen i Århus Slide 24 RedirectServ let.java Create error page 34 35 out.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD " + 36 "XHTML 1.0 Strict//EN\" \"http://www.w3.org" + 37 "/TR/xhtml1/DTD/xhtml1-strict.dtd\">" ); 38 39 out.println( 40 " " ); 41 42 // head section of document 43 out.println( " " ); 44 out.println( " Invalid page " ); 45 out.println( " " ); 46 47 // body section of document 48 out.println( " " ); 49 out.println( " Invalid page requested " ); 50 out.println( " <a href = " + 51 "\"servlets/RedirectServlet.html\">" ); 52 out.println( "Click here to choose again " ); 53 out.println( " " ); 54 55 // end XHTML document 56 out.println( " " ); 57 out.close(); // close stream to complete the page 58 } 59 }

25 Ingeniørhøjskolen i Århus Slide 25 RedirectServ let.html 1 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 4 5 6 7 8 9 Redirecting a Request to Another Site 10 11 12 13 Click a link to be redirected to the appropriate page 14 15 16 www.deitel.com 17 18 Welcome servlet 19 20 21 Send get request to RedirectServlet with the page parameter.

26 Ingeniørhøjskolen i Århus Slide 26 Program Output

27 Ingeniørhøjskolen i Århus Slide 27 Session Tracking –HTTP er en “stateless” protokol –Der er altså INGEN sammenhæng mellem to handlinger en bruger måtte udføre fra en browser Ønskes der f.eks. et beskyttet lukket lag … Så skal der bruges brugernavn og evt. password Men da der ikke er nogen state indbygget i HTTP Så er vi nødt til at skabe det eksplicit –Servlets har forskellige teknologier til dette der er styret af Servlet Containeren

28 Ingeniørhøjskolen i Århus Slide 28 Session Tracking Tracking teknologier –Cookies De fleste browsere understøtter Cookies, information der lagres på klientens harddisk og medsendes ved kommunikation –Session tracking Understøttes automatisk i JSP sider –URL rewriting Vi sender et unik ID med i URL parameterne (WAP applikationer) –Hidden form elements Kan bruges til at fastholde information mellem request’s

29 Ingeniørhøjskolen i Århus Slide 29 Cookies –Små tekst data filer –Kan bruges til at gemme information på tværs af HTTP kald f.eks. til identificere en tidligere bruger for server-side programmer, som f.eks. en Servlet –Sendes og hentes i HTTP headeren –Lever i en browser session eller en angivet maks. alder hvorefter den slettes –Problem med at en bruger kan slå “cookies” fra så er vi på spanden (alvorligt)

30 Ingeniørhøjskolen i Århus Slide 30 Session Tracking med HttpSession HttpSession interface –Bruges til at styre en session –En session svarer typisk til en brugers almindelige interaktion med en Web-applikation – dvs. en “normal” anvendelses situation –Derfor indbygget automatik –En session lever I serverens hukommelse –Der tildeles et unikt ID til en bruger –Der kan gemmes name/value par, kaldet attributes Værdier er Java objekter MEGET smart, da der kan laves objekter der er unikke for netop denne bruger, og netop den session han befinder sig i. –Udløber når: Browser session slutter (brugeren lukker sin browser) Session har timeout (i forhold til sidste HTTP request) Servlet invalidated (via kald til invalidate) – f.eks. “log ud” Servlet container nedlukkes (Tomcat)

31 Ingeniørhøjskolen i Århus Slide 31 SessionServl et.java Define Servlet SessionServl et 1 // Fig. 9.25: SessionServlet.java 2 // Using HttpSession to maintain client state information. 3 package com.deitel.advjhtp1.servlets; 4 5 import javax.servlet.*; 6 import javax.servlet.http.*; 7 import java.io.*; 8 import java.util.*; 9 10 public class SessionServlet extends HttpServlet { 11 private final Map books = new HashMap(); 12 13 // initialize Map books 14 public void init() 15 { 16 books.put( "C", "0130895725" ); 17 books.put( "C++", "0130895717" ); 18 books.put( "Java", "0130125075" ); 19 books.put( "VB6", "0134569555" ); 20 } 21 22 // receive language selection and create HttpSession object 23 // containing recommended book for the client 24 protected void doPost( HttpServletRequest request, 25 HttpServletResponse response ) 26 throws ServletException, IOException 27 { 28 String language = request.getParameter( "language" ); 29 30 // Get the user's session object. 31 // Create a session (true) if one does not exist. 32 HttpSession session = request.getSession( true ); 33 34 // add a value for user's choice to session Hent det eksisterende session objekt. Hvis den ikke findes, opret en ny.

32 Ingeniørhøjskolen i Århus Slide 32 Deployment af Web-applikationer Web-applikationer (defineret sidste gang) –Kan i Java verdenen bestå af JSPer og servlets –Der er en given mappe struktur, der i øvrigt er standardiseret i J2EE og er derfor “næsten” ens på tværs af forskellige Servlet Containers Der kan bruges Web Application Archive (WAR) Hvilket næsten alle udviklingsværktøjer kan generere Eller filerne kan lægges direkte i en mappe struktur Hvilket vi vil gøre af hensyn til forståelsen –Der kan konfigureres vha. konfigurations filerne Server.xml –Opretter Web Applikationer (context) Web.xml –Mapper servlet navn og placering –Definerere URL mønstre

33 Ingeniørhøjskolen i Århus Slide 33 server.xml 1 2 <Context path = "/advjhtp1" 3 docBase = "webapps/advjhtp1" 4 reloadable = "true"> 5 I filen “server.xml” styres overordnet hvilke Web applikationer der er deployeret på serveren. Hver “Web-applikation” får sin egen “context”, herunder en “rod” eller “doucment base” (docBase) Hvorfra alle stier er relative internt i applikationen.

34 Ingeniørhøjskolen i Århus Slide 34 Web.xml Hver Web Applikation har i sin “context” et konfigurationsscrip t som kun gælder for netop denne kontekst. Det er filen “Web.xml”. Her opsættes detaljer om alle servlets applikationen anvender 1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 3 "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> 4 5 6 7 8 9 Advanced Java How to Program JSP 10 and Servlet Chapter Examples 11 12 13 14 This is the Web application in which we 15 demonstrate our JSP and Servlet examples. 16 17 18 19 20 welcome1 21 22 23 A simple servlet that handles an HTTP get request. 24 25 26 27 com.deitel.advjhtp1.servlets.WelcomeServlet 28 29 30 31 32 33 welcome1 Maps a servlet name to its fully qualified class name.

35 Ingeniørhøjskolen i Århus Slide 35 Web.xml fortsat Under ”mappings” knytter man en given servlet med en relativ sti, eller et mønster, der svarer til URL relativt til document base. Der kan opsættes mange andre parametre i dette katalog, som f.eks. Timeout for sessionen m.v. 34 /welcome1 35 36 37 Map servlet to URL pattern. The pattern is relative to the server address and application context root.


Download ppt "Internetteknologi 2 (ITNET2) Java teknologi på Internettet J2EE Servlets."

Lignende præsentationer


Annoncer fra Google