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

Slides:



Advertisements
Lignende præsentationer
Den danske befolknings syn på handicappedes rettigheder
Advertisements

VMS data Geografisk og tidsmæssig udvikling af indsatsen i tobisfiskeriet v/ dataspecialist Josefine Egekvist Sekretariat for myndighedsbetjening.
Atomer Et programmeret forløb. En måde at lære på.
UU-Aalborg Evaluering af brobygning og intro 2013/14 Velkommen UU-Aalborg Ungdommens Uddannelsesvejledning.
ADR (AUTOMATIC DELIVERY REWARDS ) (Nyt program - 1. september) LifePak ® (eksempel) – 72,40 PSV 401,60 DKK med 5 % rabat= 381,52 DKK (68,78 PSV) Fragt.
Analyse for Ældre Sagen: Anvendelse af nye teknologiske kommunikationsmidler Rapport Oktober 2008.
v/ Professor Lars Ehlers, Aalborg Universitet
Elevernes evaluering af grundforløbet Efterår 2012.
Velkommen hos Juvel A/S
Dagens program  Emne: Tim Berners-Lees WWW koncept og deraf følgende innovationer Forbered hver for sig Præsenter og diskutér i grupper Fremlæggelse med.
Samlet årsrapport for Sønderparken 2013 SIP-socialpsykiatri
Bolig selskabernes Landsforening– Almene lejeboliger - Maj/Juni Almene lejeboliger - Danmarkspanelet - Maj/Juni 2010.
Sortering af affald Dato: 17. december Agenda Sortering af affald Dato: 17. december 2010 TNS Gallup A/S Kontaktperson Celia Paltved-Kaznelson Danmarks.
J2EE Java Server Pages (JSP) Introduktion Internetteknologi 2 (ITNET2)
Analyse for Ældre Sagen: Trafikundersøgelse: Cykel, cykelhjelm mv Rapport Marts 2010.
- eller skal det være det ?
13 – Database med JDBC. 2 NOEA2009Java-kursus – JDBC JDBC JDBC er et standard bibliotek til at tilgå relational databaser API’et er en standardiseret.
Arkitektur Embedded SQL Tema Persistens
1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF.
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
1 Netværksprogrammering 2 Plan Socket-baseret kommunikation Fjernmetodekald (RMI) - Designmønsteret Proxy Databasetilgang (JDBC)
Problemer med at bruge tympanometri? Slagelse og Middelfart okt.-nov
View Procedures Trigger og Function Jesper Tørresø DAB1 E07 1. november 2007.
Arbejdsmarkedsuddannelser – også for personer med læse-, skrive- og regnevanskeligheder Oplæg fra AMU-Fyn Konference d. 22/5 -07.
Nordre Skole Elevernes vurdering af vores undervisningsmiljø Undersøgelsen foretaget i 2008/2009 Der er anvendt TERMOMETER fra DCUM.

Representations for Path Finding in Planar Environments.
Udvælgelse af Patientforløb - Tragtmodel
DCS/DTS fællesmøde januar 2010 Denne præsentation har været fremlagt ved DCS / DTS Fællesmøde 2010 og Poul Erik Mortensen har alle rettighederne til gengivelse.
Kvalitetstest af Palles Gavebod Spørgeskemaundersøgelse November 2010 – januar 2011 Center for Playware DPU.
HUSKESPIL – den lille tabel
Naboskabet - en undersøgelse af det sociale liv i Skovengen Skovengen.
1 & Om holdninger og holdningsændring blandt ledere og medarbejdere på sociale institutioner Evalueringsmedarbejder.
Titel: Arial, fed, skriftstr. 20, mørkegrå. Tekst: Arial, normal, fed eller kursiv, skriftstr. 10, 12 og 14 til print – 16 og 18 til projektor – mørkegrå.
Relativ vigtighed for elektroniske ressourcer,24,22,20,18,16,14,12,10 Indeks FARM nem at bruge Info om anvendelse af elektroniske.
 2 3  3 =  83  43  53  63  73  93  10 4.
Resultatet af en arbejdsproces
Oplæg til Nofa4 i Trondheim d maj 2013 Ved Lektor Rune Christiansen
Pleje og Sundhed Gennemførte719 Inviterede895 Svarprocent80% FREDERICIA KOMMUNE MTU og Psykisk APV 2012 Rapportspecifikationer.
Programering af mobile enheder Windows Phone Storage.
1 Powerpointserie om In-line færdiggørelse ved Heatsettrykning Avisrotation Magasindybtryk Den Grafiske Højskole.
Sommeren 1942 Gruppen får to nye medlemmer
Region Midtjyllands tilbud 2013
Agenda 1.Informationer 1.Excel i fb.m. projekt 2 2.Reserver tid til projekt 2 3.Øvelse: a / b = c 2.Opsamling fra sidst 3.Estimation (konfidensintervaller)
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
ETU 2008 | Elevtilfredshedsundersøgelse Erhvervsskolen Nordsjælland HTX (Teknisk Gymnasium) - Hillerød Baseret på 313 besvarelser.
1 Forretningsidé ”Scooterracks123 tilbyder et produkt hvor parkeringsenheder skaber; orden, reducerer ødelagte gulve, ruder og ridsede vægge, mindsker.
1 Borgerpanelet i Silkeborg Kommune.
D 3 5A A A 16 5D 15 5A 14 5D A B D D A B A A D
Nå ud med jeres budskab – få budskabet ind Konference om rådgivning af deltidslandmænd 5. oktober 2011.
Finansiel vurdering af investeringer
Internetteknologi 2 (ITNET2) Java teknologi på Internettet J2EE Servlets.
Matematik B 1.
Claus Brabrand, ITU, Denmark Mar 10, 2009EFFECTIVE JAVA Effective Java Presentation Workshop Claus Brabrand [ ] ( “FÅP”: First-year Project.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
Januar 2009 MandagTirsdagOnsdagTorsdagFredagLørdagSøndag Uge 2. Anette Ø. Kl Tina H. Lone M. 6 Kl Britt H. 7 Kl Vinnie G. Gerda.
Fundamentale datastrukturer
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Ministeriet for Fødevarer, Landbrug og Fiskeri Danmarks JordbrugsForskning Næringsstofoverskud, effektiviteten i produktionen og tab af næringsstof- fer.
1 Kap. 4, Jordens Tyngdefelt = Torge, 2001, Kap. 3. Tyngdekraftens retning og størrelse g (m/s 2 ) Acceleration Tyngdepotentialet (W): evene til at udføre.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
1 Erfaringer fra videnledelse i COWI Fredag d. 24. august Aalborg Universitet Livslang Uddannelse 2001.
Svampebekæmpelse – sidste nyt fra landsforsøgene Landskonsulent Ghita Cordsen Nielsen Dansk Landbrugsrådgivning Landscentret | Planteavl Planteproduktion.
Præsentationens transcript:

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

Ingeniørhøjskolen i Århus Slide 2 af 58 Indhold i denne præsentation Java Server Pages (JSP): –Simpelt eksempel hvor vi gør brug af en database sammen med JSP –Brug af custom tags samt JSTL –Brug af Expression Language (EL)

Ingeniørhøjskolen i Århus Slide 3 Action Vi tager endnu et DEITEL eksempel –Eksemplet er en gæste bog (GuestBook) Der benytter sig af en database til at gemme data I kapitel 30 i DEITEL fik I et eksempl på hvordan en Servlet kunne tilgå en JDBC database – dette var et klassisk skolebogs eksempel Dog bør man ikke tillade så tæt kobling i større Web Applikationer Hos DEITEL eksemplet afkobles der derfor vha. to JavaBeans, en value-bean og en data-bean Klassen GuestBean og klassen GuestDataBean

Ingeniørhøjskolen i Århus Slide 4 af 24 Guest- Bean.java Define Bean GuestBean Storage Bean 3 package com.deitel.advjhtp1.jsp.beans; 4 5 public class GuestBean { 6 private String firstName, lastName, ; 7 8 // set the guest's first name 9 public void setFirstName( String name ) 10 { 11 firstName = name; 12 } public String getFirstName() 16 { 17 return firstName; 18 } public void setLastName( String name ) 22 { 23 lastName = name; 24 } public String getLastName() 28 { 29 return lastName; 30 } public void set ( String address ) 34 { 35 = address; } 39 public String get () 40 { 41 return ; 42 } 43 }

Ingeniørhøjskolen i Århus Slide 5 af 24 Guest- DataBean.java Define Class GuestDataBean Set up database 1 // Fig : GuestDataBean.java 2 // Class GuestDataBean makes a database connection and supports 3 // inserting and retrieving data from the database. 4 package com.deitel.advjhtp1.jsp.beans; 5 6 // Java core packages 7 import java.io.*; 8 import java.sql.*; 9 import java.util.*; public class GuestDataBean { 12 private Connection connection; 13 private PreparedStatement addRecord, getRecords; // construct TitlesBean object 16 public GuestDataBean() throws Exception 17 { 18 // load the Cloudscape driver 19 Class.forName( "COM.cloudscape.core.RmiJdbcDriver" ); // connect to the database 22 connection = DriverManager.getConnection( 23 "jdbc:rmi:jdbc:cloudscape:guestbook" ); getRecords = 26 connection.prepareStatement( 27 "SELECT firstName, lastName, FROM guests" 28 ); addRecord = 31 connection.prepareStatement( 32 "INSERT INTO guests ( " + 33 "firstName, lastName, ) " + 34 "VALUES ( ?, ?, ? )" 35 ); Defines the database driver, URL, and SQL statements.

Ingeniørhøjskolen i Århus Slide 6 af 24 Guest- DataBean.java Database access methods 36 } // return an ArrayList of GuestBeans 39 public List getGuestList() throws SQLException 40 { 41 List guestList = new ArrayList(); // obtain list of titles 44 ResultSet results = getRecords.executeQuery(); // get row data 47 while ( results.next() ) { 48 GuestBean guest = new GuestBean(); guest.setFirstName( results.getString( 1 ) ); 51 guest.setLastName( results.getString( 2 ) ); 52 guest.set ( results.getString( 3 ) ); guestList.add( guest ); 55 } return guestList; 58 } // insert a guest in guestbook database 61 public void addGuest( GuestBean guest ) throws SQLException 62 { 63 addRecord.setString( 1, guest.getFirstName() ); 64 addRecord.setString( 2, guest.getLastName() ); 65 addRecord.setString( 3, guest.get () ); addRecord.executeUpdate(); 68 } // close statements and terminate database connection Obtain the guest list from the database. Return each guest in a bean.

Ingeniørhøjskolen i Århus Slide 7 af 24 Guest- DataBean.java Close database 71 protected void finalize() 72 { 73 // attempt to close database connection 74 try { 75 getRecords.close(); 76 addRecord.close(); 77 connection.close(); 78 } // process SQLException on close operation 81 catch ( SQLException sqlException ) { 82 sqlException.printStackTrace(); 83 } 84 } 85 }

Ingeniørhøjskolen i Århus Slide 8 af 24 GuestBook- Login.jsp useBean action 1 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 " <jsp:useBean id = "guest" scope = "page" 12 class = "com.deitel.advjhtp1.jsp.beans.GuestBean" /> 13 <jsp:useBean id = "guestData" scope = "request" 14 class = "com.deitel.advjhtp1.jsp.beans.GuestDataBean" /> Guest Book Login body { 23 font-family: tahoma, helvetica, arial, sans-serif; 24 } table, tr, td { 27 font-size:.9em; 28 border: 3px groove; 29 padding: 5px; 30 background-color: #dddddd; 31 } Obtain an instance of each bean. Assigns the bean name within the JSP.

Ingeniørhøjskolen i Århus Slide 9 af 24 GuestBook- Login.jsp Obtain information from user <% // start scriptlet if ( guest.getFirstName() == null || 41 guest.getLastName() == null || 42 guest.get () == null ) { %> Enter your first name, last name and 48 address to register in our guest book First name Last name Use to extract the parameters from the request – and save them in the “guest” bean Check for data

Ingeniørhøjskolen i Århus Slide 10 af 24 GuestBook- Login.jsp Add new guest to book <input type = "submit" 78 value = "Submit" /> <% // continue scriptlet } // end if 87 else { 88 guestData.addGuest( guest ); %> <% // continue scriptlet } // end else %> Calls the guestData Bean to write this new guest into the address book. Then forward the client to the guestBookView JSP.

Ingeniørhøjskolen i Århus Slide 11 af 24 GuestBook- View.jsp 1 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 " <jsp:useBean id = "guestData" scope = "request" 14 class = "com.deitel.advjhtp1.jsp.beans.GuestDataBean" /> Guest List body { 23 font-family: tahoma, helvetica, arial, sans-serif; 24 } table, tr, td, th { 27 text-align: center; 28 font-size:.9em; 29 border: 3px groove; 30 padding: 5px; 31 background-color: #dddddd; 32 } Obtain an instance of the GuestDataBean class with useBean action.

Ingeniørhøjskolen i Århus Slide 12 af 24 GuestBook- View.jsp Guest List Last name 43 First name <% // start scriptlet List guestList = guestData.getGuestList(); 53 Iterator guestListIterator = guestList.iterator(); 54 GuestBean guest; while ( guestListIterator.hasNext() ) { 57 guest = ( GuestBean ) guestListIterator.next(); %> "> Obtain, then Iterate through the guestList and display its contents.

Ingeniørhøjskolen i Århus Slide 13 af 24 GuestBook- View.jsp <% // continue scriptlet } // end while %>

Ingeniørhøjskolen i Århus Slide 14 af 24 GuestBook- ErrorPage.jsp Error page 1 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 " Error! bigRed { 19 font-size: 2em; 20 color: red; 21 font-weight: bold; 22 } <% // scriptlet to determine exception type 30 // and output beginning of error message 31 if ( exception instanceof SQLException ) 32 %> An SQLException 35

Ingeniørhøjskolen i Århus Slide 15 af 24 GuestBook- ErrorPage.jsp 36 <% 37 else if ( exception instanceof ClassNotFoundException ) 38 %> A ClassNotFoundException <% 43 else 44 %> An exception occurred while interacting with the guestbook database The error message was: Please try again later

Ingeniørhøjskolen i Århus Slide 16 Custom Tag Libraries Indkaplser kompleks JSP funktionalitet i et skræddersyet tag Scriptlets kan være svære at forstå for HTML udviklere Defineret i Tag i pakken javax.servlet.jsp.tagtext Extender normalt TagSupport eller BodyTagSupport Tillader udviklere at udvikle JSP sider uden Java viden Kan manipulere JSP sider direkte Der kan købes tag libraries Jeg har blandede følelser – der er pro et contra her … JSPs tilgang via taglib direktivet –DEITEL tabel viser sammenhængene

Ingeniørhøjskolen i Århus Slide 17 Eksempel fra DEITEL Der skal laves en klasse der extender TagSupport klassen Her kan der laves ny funktionalitet Der skal laves et XML dokument (.tld ) der kaldes en tag library descriptor file. Ligesom ved Servlets kobler dette dokument til én eller flere klasser der extender TagSupport Herefter skal der blot bruges direktivet: – Der så kan bruge: –

Ingeniørhøjskolen i Århus Slide 18 af 24 CustomTagWel come.jsp Custom tag example Program Output 1 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 " Simple Custom Tag Example The following text demonstrates a custom tag: Specify the location of the tag library with the taglib directive. Call custom tag.

Ingeniørhøjskolen i Århus Slide 19 af 24 WelcomeTagHa ndler.java Define tag handler WelcomeTagHa ndler Implements custom tag functionality 1 // Fig : WelcomeTagHandler.java 2 // Custom tag handler that handles a simple tag. 3 package com.deitel.advjhtp1.jsp.taglibrary; 4 5 // Java core packages 6 import java.io.*; 7 8 // Java extension packages 9 import javax.servlet.jsp.*; 10 import javax.servlet.jsp.tagext.*; public class WelcomeTagHandler extends TagSupport { // Method called to begin tag processing 15 public int doStartTag() throws JspException 16 { 17 // attempt tag processing 18 try { 19 // obtain JspWriter to output content 20 JspWriter out = pageContext.getOut(); // output content 23 out.print( "Welcome to JSP Tag Libraries!" ); 24 } // rethrow IOException to JSP container as JspException 27 catch( IOException ioException ) { 28 throw new JspException( ioException.getMessage() ); 29 } return SKIP_BODY; // ignore the tag's body 32 } 33 } Load tag and print welcome.

Ingeniørhøjskolen i Århus Slide 20 af 24 advjhtp1- taglib.tld Define tag information 1 2 <!DOCTYPE taglib PUBLIC 3 "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" 4 " advjhtp A simple tab library for the examples welcome com.deitel.advjhtp1.jsp.taglibrary.WelcomeTagHandler empty Inserts content welcoming user to tag libraries Custom tag library descriptor file (advjhtp1-taglib.tld). Required taglibrary meta information Designate the tags name and location, and that this tag has no attributes.

Ingeniørhøjskolen i Århus Slide 21 Custom Tag med attributter Mulighed for at sende data med I følgende eksempel gennemgås dette detaljeret N.B. dette gennemgås kun kursorisk – det er ikke pensum

Ingeniørhøjskolen i Århus Slide 22 af 24 CustomTagAtt ribute.jsp 1 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 " Specifying Custom Tag Attributes Demonstrating an attribute with a string value Demonstrating an attribute with an expression value <% 27 String name = request.getParameter( "name" ); 28 %> " /> Include the custom tag library. Specifying an attribute for a custom tag.

Ingeniørhøjskolen i Århus Slide 23 af 24 Welcome2TagH andler.java Define Class Welcome2TagH andler.java Displays attribute value 3 package com.deitel.advjhtp1.jsp.taglibrary; 4 5 // Java core packages 6 import java.io.*; 7 8 // Java extension packages 9 import javax.servlet.jsp.*; 10 import javax.servlet.jsp.tagext.*; public class Welcome2TagHandler extends TagSupport { 13 private String firstName = ""; // Method called to begin tag processing 16 public int doStartTag() throws JspException 17 { 18 // attempt tag processing 19 try { 20 // obtain JspWriter to output content 21 JspWriter out = pageContext.getOut(); // output content 24 out.print( "Hello " + firstName + 25 ", Welcome to JSP Tag Libraries!" ); 26 } // rethrow IOException to JSP container as JspException 29 catch( IOException ioException ) { 30 throw new JspException( ioException.getMessage() ); 31 } 33 return SKIP_BODY; // ignore the tag's body 34 } 37 public void setFirstName( String username ) 38 { 39 firstName = username; 40 } 41 }

Ingeniørhøjskolen i Århus Slide 24 af 24 advjhtp1- taglib.tld welcome com.deitel.advjhtp1.jsp.taglibrary.Welcome2TagHandler empty Inserts content welcoming user to tag libraries. Uses 13 attribute "name" to insert the user's name firstName 18 true 19 true Element tag for the welcome2 custom tag. Define attribute parameters

Ingeniørhøjskolen i Århus Slide 25 Expression Language (EL) Fra Servlet 2.4 / JSP 2.0 specifikationerne JSP 2.1 / JSF 1.0: Unified Expression Language Simplificere data behandling med udtryk Alternativ til at bruge scriplets / inline Java kode Immediate Evaluation Deferred Evaluation

Ingeniørhøjskolen i Århus Slide 26 EL Eksempel En form med to tekstfelter udfylt af en ”customer” bean – og en submit funktion

Ingeniørhøjskolen i Århus Slide 27 JSTL JavaServer Pages Standard Tag Library Samling af tags (elementer) til brug i JSP Alternativ til scriplets Ovenstående erstatter for eksempel behovet for en scriplet med en løkke

Ingeniørhøjskolen i Århus Slide 28 JSTL Oversigt

Ingeniørhøjskolen i Århus Slide 29 JSP Documents Traditionel JSP er HTML med indlejret kode –Overholder ikke XML wellformed syntaxen –Kan ikke editeres af en standard XML editor JSP Documents –Alternativ til traditionel JSP –Ren XML syntax (wellformed) –Udviklet til brug for bl.a. JSF og IDE støttet udvikling –Vil formodentligt på sigt erstatte traditionel syntax

Ingeniørhøjskolen i Århus Slide 30 JSP Document XML Syntax

Ingeniørhøjskolen i Århus Slide 31 Traditionel JSP Syntax

Ingeniørhøjskolen i Århus Slide 32 JSP Document XML Syntax Samme Dokument! Mere Elegant