Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

J2EE Java Server Pages (JSP) Introduktion Internetteknologi 2 (ITNET2)

Lignende præsentationer


Præsentationer af emnet: "J2EE Java Server Pages (JSP) Introduktion Internetteknologi 2 (ITNET2)"— Præsentationens transcript:

1 J2EE Java Server Pages (JSP) Introduktion Internetteknologi 2 (ITNET2)

2 Ingeniørhøjskolen i Århus Slide 2 af 68 Indhold i denne præsentation •”Klassisk” Java Server Pages (JSP): –Udtryk, Scriplets, Direktiver, implicitte objekter, standard actions –Vi tager nogle eksempler – det gør det nemmere at illustrere –Brug af Java Beans til ”pænere” struktur (afkobling & Command Pattern) –Deployment •Næste gang JSF

3 Ingeniørhøjskolen i Århus Slide 3 Gode nyheder •Der er gode nyheder for de der syntes at Servlets var trælse og tidskrævende •JSP er sjove, nemme og effektive (lige så hurtige som Servlets) •Faktisk så kan det meste af den funktionalitet som Servlets skal løse klares ved brug af JavaBeans (Command Pattern)

4 Ingeniørhøjskolen i Århus Slide 4 Java Server Pages introduceret •JavaServer Pages (JSP) –Udvidelse af servlet teknologi –MEN bliver altid i sidste ende til Servlets –Blot en nemmere repræsentation –Kan bruges med EJB 2.1 / 3.0 eller JDBC / POJO •JSF: potentiel afløser

5 Ingeniørhøjskolen i Århus Slide 5 Simplest tænkelige JSP side •Oprindeligt elementet der skaber en JSP side. I dag kan EL benyttes i stedet/supplerende •En JSP side (simpel.jsp) kan altså se sådan ud: – en meget, meget simpel side ” %> •Brug af = svarer til out.print(…) og kaldes et “udtryk” •Næste side følger en komplet side

6 Ingeniørhøjskolen i Århus Slide 6 af 58 Clock.jsp Simple JSP expression 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 10 11 12 A Simple JSP Example 13 14 15.big { font-family: helvetica, arial, sans-serif; 16 font-weight: bold; 17 font-size: 2em; } 18 19 20 21 22 Simple JSP Example 23 24 25 26 27 28 29 30 31 32 33 34 JSP expressions deliniated by. This will insert a string representation of the date.

7 Ingeniørhøjskolen i Århus Slide 7 af 58 Clock.jsp Program Output 35 36 37 38

8 Ingeniørhøjskolen i Århus Slide 8 Implicitte objekter •Følgende implicitte variable skabes ved load –application (scope: application) –session (scope: session) –pagecontext (scope: page) –out (-”-) –config (-”-) –page (-”-) –exception (-”-) –response (-”-) –request (request) •Og er tilgængelige i netop dette scope

9 Ingeniørhøjskolen i Århus Slide 9 Brug af scripting i JSP •Scripting –Tillader JSP sider at have Java kode indlejret i siden –Der skelnes mellem: •Deklarationer (declarations) •Scriptlets •Udtryk (expressions) •Kommentarer

10 Ingeniørhøjskolen i Århus Slide 10 Scripting komponenter •Scriptlets –Afgrænset af –Større blokke af Java kode (pas på – brug Command Pattern) •Kommentarer –Inde i scriptlets bruges // og /* */ som kendt fra Java –Rene JSP kommentarer –XHTML kommentarer (ikke JSP) •Udtryk (Expressions) –Afgrænset af –Resultatet konverteres automatisk til et String objekt

11 Ingeniørhøjskolen i Århus Slide 11 Scripting komponenter fortsat •Deklarationer (declarations) –Afgrænses af –Bruges til at definere metoder og variable –Dette kan dog gøres i en alm. Scriptlet i stedet –Bør generelt undgås, brug Command Pattern i stedet •Direktiver –Afgrænses af –F.eks. import og extend (kommer senere) •Escape –Se DEITEL tabel næste side

12 Ingeniørhøjskolen i Århus Slide 12 Escape af tegn

13 Ingeniørhøjskolen i Århus Slide 13 Scripting Eksempel •På de næste par sider følger et DEITEL eksempel som viser større mængder af Java kode indlejret som Scriptlets i en JSP side •Generel anbefaling: undgå eller minimer mængden af Scriptlets, øger kobling og gør mere forvirrende

14 Ingeniørhøjskolen i Århus Slide 14 af 58 Welcome.jsp Demonstrate scriptlet and expressions 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 10 11 12 Processing "get" requests with data 13 14 15 16 17 <% // begin scriptlet 18 19 String name = request.getParameter( "firstName" ); 20 21 if ( name != null ) { 22 23 %> 24 25 26 Hello, 27 Welcome to JavaServer Pages! 28 29 30 <% // continue scriptlet 31 32 } // end if 33 else { 34 Obtain request parameter via scriptlet. Expression will display the string value of name

15 Ingeniørhøjskolen i Århus Slide 15 af 58 Welcome.jsp 35 %> 36 37 38 Type your first name and press Submit 39 40 41 42 43 44 45 <% // continue scriptlet 46 47 } // end else 48 49 %> 50 51 52 Program Output

16 Ingeniørhøjskolen i Århus Slide 16 Standard metoder (actions) •Hjælper med at løse en lang række almindelige JSP opgaver –Dynamisk inkludering af indhold (fra andre JSP sider m.v.) –Forwarding af Requests –Brug af JavaBeans (altså brug af objekter) –De fleste behandles dynamisk ved run time (requst time) –Genkendes ved og •En oversigt er hentet fra DEITEL på de følgende sider •Nærmere eksempler gives efterfølgende •ALLE KAN LØSES “MANUELT” VED BRUG AF REN JAVA KODE i SCRIPTLETS!!!!

17 Ingeniørhøjskolen i Århus Slide 17 Standard metoder (actions)

18 Ingeniørhøjskolen i Århus Slide 18 action •Mulighed for at inkluderer indhold dynamisk –Skaber en kopi af en resource •Som regel en XHTML eller en anden JSP side •Sker dynamisk •Svarer til RequestDispatcher.include() i Servlets •

19 Ingeniørhøjskolen i Århus Slide 19 Action eksempel •Eksempel hentet fra DEITEL –Bruger action til at hente et par HTML og JSP sider –Banner.html og Toc.html samt Clock2.jsp i siden Include.html

20 Ingeniørhøjskolen i Århus Slide 20 af 58 Banner.html 1 2 3 4 5 Java(TM), C, C++, Visual Basic(R), 6 Object Technology, and Internet and 7 World Wide Web Programming Training 8 On-Site Seminars Delivered Worldwide 9 10 11 12 13 deitel@deitel.com 14 15 978.579.9911 16 490B Boston Post Road, Suite 200, 17 Sudbury, MA 01776 18 19

21 Ingeniørhøjskolen i Århus Slide 21 af 58 Toc.html 1 2 3 4 5 Publications/BookStore 6 7 8 9 What's New 10 11 12 13 Downloads/Resources 14 15 16 17 FAQ (Frequently Asked Questions) 18 19 20 21 Who we are 22 23 24 25 Home Page 26 27 28 Send questions or comments about this site to 29 30 deitel@deitel.com 31 32 Copyright 1995-2002 by Deitel & Associates, Inc. 33 All Rights Reserved. 34

22 Ingeniørhøjskolen i Århus Slide 22 af 58 Clock2.jsp 1 2 3 4 5 6 7 <p class = "big" style = "color: cyan; font-size: 3em; 8 font-weight: bold;"> 9 10 11 12 13 14

23 Ingeniørhøjskolen i Århus Slide 23 af 58 Include.jsp 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 10 Using jsp:include 11 12 13 body { 14 font-family: tahoma, helvetica, arial, sans-serif; 15 } 16 17 table, tr, td { 18 font-size:.9em; 19 border: 3px groove; 20 padding: 5px; 21 background-color: #dddddd; 22 } 23 24 25 26 27 28 29 30 <img src = "images/logotiny.png" 31 width = "140" height = "93" 32 alt = "Deitel & Associates, Inc. Logo" /> 33 34 35

24 Ingeniørhøjskolen i Århus Slide 24 af 58 Include.jsp 36 37 38 <jsp:include page = "banner.html" 39 flush = "true" /> 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 <jsp:include page = "clock2.jsp" 56 flush = "true" /> 57 58 59 60 61 62 action tag, accesses external resources.

25 Ingeniørhøjskolen i Århus Slide 25 Hvad kan vi bruge det til? •Vi får en yderligere mulighed for at afgrænse form og indhold fra hinanden •Kløgtige studerende husker måske brug af CSS til dette formål •Frames er nu ikke længere nødvendigt hvis man vil undgå at lave ”template programmering” på en smart måde

26 Ingeniørhøjskolen i Århus Slide 26 Action Gør det muligt for en JSP side at redirecte til en anden side •Den kørende JSP stopper med at processere og overføre straks HTTP request til den nye side •Dette har dog givet lidt ballade ved nogle JSP containere!! •Page attributten bestemmer hvad der forwardes til •Eksempel fra DEITEL følger

27 Ingeniørhøjskolen i Århus Slide 27 af 58 Forward1.jsp 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 10 Forward request to another JSP 11 12 13 14 <% // begin scriptlet 15 16 String name = request.getParameter( "firstName" ); 17 18 if ( name != null ) { 19 20 %> 21 22 23 <jsp:param name = "date" 24 value = " " /> 25 26 27 <% // continue scriptlet 28 29 } // end if 30 else { 31 32 %> 33 34 35 Type your first name and press Submit If the firstname parameter is specified, forward the user to the second page with the current date.

28 Ingeniørhøjskolen i Århus Slide 28 af 58 Forward1.jsp Program Output 36 37 38 39 40 41 42 <% // continue scriptlet 43 44 } // end else 45 46 %> 47 48 49

29 Ingeniørhøjskolen i Århus Slide 29 af 58 Forward2.jsp 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 <html xmlns = "http://www.w3.org/1999/xhtml"v 8 9 10 Processing a forwarded request 11 12 13.big { 14 font-family: tahoma, helvetica, arial, sans-serif; 15 font-weight: bold; 16 font-size: 2em; 17 } 18 19 20 21 22 23 Hello, 24 Your request was received and forwarded at 25 26 27 28 29 30 31 32 33 34 35

30 Ingeniørhøjskolen i Århus Slide 30 af 58 Forward2.jsp Program Output 36 37 38

31 Ingeniørhøjskolen i Århus Slide 31 Action • Action –Tilføjer f.eks. Applet, JavaBean or XHTML element –Gør det muligt for klienten at downloade Java plug-in –Finder selv ud af hvilken klient der er tale om, og hvordan den understøtter plug-ins –(DEITEL har et eksempel – det vil vi ikke gennemgå her

32 Ingeniørhøjskolen i Århus Slide 32 Action •Måske DET vigtigste Action element •Gør det muligt for JSP at bruge Java Objekter •Samme scope muligheder som de implicitte –Dvs. application, session, page og request •Må specifiere attributterne class eller type –Attributten class vil instansiere et nyt objekt –DEITEL tabel følger med oversigt over useBean attributter

33 Ingeniørhøjskolen i Århus Slide 33 Action •I det følgende vises et eksempel på UseBean –En Java klasse “Rotator” defineres og –Adrotator.jsp siden benytter Rotator klassen til at skifte bannere ud dynamisk –Da det er på “application” scope, så er det på tværs af sessioner. Der sikres altså at hver ny forespørgsel får et nyt banner –Dette kunne være hentet via database opslag, eller RMI eller andet! –Derfor smart med “afkobling” •Efterfølgende tager vi et mere avanceret eksempel

34 Ingeniørhøjskolen i Århus Slide 34 af 58 Rotator.java Define JavaBean Rotator 1 // Fig. 31.17: Rotator.java 2 // A JavaBean that rotates advertisements. 3 package com.deitel.advjhtp1.jsp.beans; 4 5 public class Rotator { 6 private String images[] = { "images/jhtp3.jpg", 7 "images/xmlhtp1.jpg", "images/ebechtp1.jpg", 8 "images/iw3htp1.jpg", "images/cpphtp3.jpg" }; 9 10 private String links[] = { 11 "http://www.amazon.com/exec/obidos/ASIN/0130125075/" + 12 "deitelassociatin", 13 "http://www.amazon.com/exec/obidos/ASIN/0130284173/" + 14 "deitelassociatin", 15 "http://www.amazon.com/exec/obidos/ASIN/013028419X/" + 16 "deitelassociatin", 17 "http://www.amazon.com/exec/obidos/ASIN/0130161438/" + 18 "deitelassociatin", 19 "http://www.amazon.com/exec/obidos/ASIN/0130895717/" + 20 "deitelassociatin" }; 21 22 private int selectedIndex = 0; 23 24 // returns image file name for current ad 25 public String getImage() 26 { 27 return images[ selectedIndex ]; 28 } 29 30 // returns the URL for ad's corresponding Web site 31 public String getLink() 32 { 33 return links[ selectedIndex ]; 34 } 35

35 Ingeniørhøjskolen i Århus Slide 35 af 58 Rotator.java 36 // update selectedIndex so next calls to getImage and 37 // getLink return a different advertisement 38 public void nextAd() 39 { 40 selectedIndex = ( selectedIndex + 1 ) % images.length; 41 } 42 }

36 Ingeniørhøjskolen i Århus Slide 36 af 58 Adrotator.jsp 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 <jsp:useBean id = "rotator" scope = "application" 8 class = "com.deitel.advjhtp1.jsp.beans.Rotator" /> 9 10 11 12 13 AdRotator Example 14 15 16.big { font-family: helvetica, arial, sans-serif; 17 font-weight: bold; 18 font-size: 2em } 19 20 21 22 23 24 25 26 AdRotator Example 27 28 29 <a href = "<jsp:getProperty name = "rotator" 30 property = "link" />"> 31 32 <img src = "<jsp:getProperty name = "rotator" 33 property = "image" />" alt = "advertisement" /> 34 Create a new instance of the rotator bean named rotator. getProperty action functions the same as calling rotator.getLink()

37 Ingeniørhøjskolen i Århus Slide 37 af 58 Adrotator.jsp Program Output 35 36 37

38 Ingeniørhøjskolen i Århus Slide 38 Action •Senere kigger vi på lidt mere avancerede anvendelser af use bean –Eksemplet er en gæste bog (GuestBook) –Der benytter sig af en database til at gemme data og afkobler præsentations JSP fra databasen via en database wrapper og value beans.

39 Ingeniørhøjskolen i Århus Slide 39 Direktiver •Information der sendes til JSP containeren til at specificere egenskaber ved løsningen (properties) –Error pages (fejl sider) –Statisk inkludering af indhold (i modsætning til dynamisk) –Specificering af skræddersyede tag libraries (kommer vi til) –Der bruges –Sker på oversættelses tidspunktet (complilering) OG ER ALTSÅ STATISK!

40 Ingeniørhøjskolen i Århus Slide 40 Directives fra DEITEL

41 Ingeniørhøjskolen i Århus Slide 41 Page Directive •Specificerer JSP indstillinger for siden •Bl.a. nedarvning fra klasse (skal være en Servlet i sagens natur), “import” af pakker, brug af fejlsider, mime type (XHTML eller WML osv.) •Oversigt vises i følgende DEITEL tabel •Eksempel: •

42 Ingeniørhøjskolen i Århus Slide 42 Page Directive

43 Ingeniørhøjskolen i Århus Slide 43 Page Directive fortsat

44 Ingeniørhøjskolen i Århus Slide 44 Include Directive •Inkluderer indhold fra en given kilde •Har een attribut: file –Specificerer den URL der skal loades •Forskelle fra –<jsp:include) opdaterer dynamisk hver gang koden køres –Ændringer er altså reflekteret straks –Include direktivet fastholder det originale materiale fra kompilerings tidspunktet – hurtigere – men ej dynamisk •Eksempel fra DEITEL: –Laver include.jsp men denne gang med include direktivet

45 Ingeniørhøjskolen i Århus Slide 45 af 58 Include- Directive.jsp 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 Include directive examples

46 Ingeniørhøjskolen i Århus Slide 46 Deployment •Der gælder basalt set de samme regler som for Servlets •MEN: det er IKKE nødvendigt manuelt at mappe JSP sider – de kan kaldes direkte •WEB-INF kataloget skal stadigvæk bruges til at gemme klasser, og WEB.XML kan bruges (bør bruges) – til opsætning af diverse parameter (såsom ”session- timeout” m.v.) •Der skal stadigvæk oprettes en ”Context” i Server.xml


Download ppt "J2EE Java Server Pages (JSP) Introduktion Internetteknologi 2 (ITNET2)"

Lignende præsentationer


Annoncer fra Google