Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

16 - JSP. 2 NOEA2009Java-kursus – JSP Developement platform You need a J2ee compatible server There is more possibilities. Here we look at: –Tomcat &

Lignende præsentationer


Præsentationer af emnet: "16 - JSP. 2 NOEA2009Java-kursus – JSP Developement platform You need a J2ee compatible server There is more possibilities. Here we look at: –Tomcat &"— Præsentationens transcript:

1 16 - JSP

2 2 NOEA2009Java-kursus – JSP Developement platform You need a J2ee compatible server There is more possibilities. Here we look at: –Tomcat & Axis (Apache), only webservice –Sun Application Server with NetBeans But it could have been: –Websphere with Eclipse (IBM) –JBoss ("gnu") (with NetBeans, Eclipse,...) –JBulider –Apache Geronimo –mv.

3 3 NOEA2009Java-kursus – JSP J2EE, briefly

4 4 NOEA2009Java-kursus – JSP J2EE covers from frontend to backend Enterprise Information Systems (EIS): Relational Database, Legacy Applications, ERP Systems

5 5 NOEA2009Java-kursus – JSP Some essential parts of J2EE Servlet - Class that communicates by http (generates html, xml,...) –No directly counterparts in.Net, but is in the area of remoting JSP - Java Server Script. –Similar to ASP.NET (not ASP classic!) –When it is requested the 1st time, it is precompiled to a servlet and thereafter a class file. –That is also happens in ASP.NET JavaBeans - Components, that lives in the J2EE container –Entity beans are non volatile objects, that refers to entities in e.g. database –Session beans are volatile objects that takes care of communication with the client

6 6 NOEA2009Java-kursus – JSP N-tier applications

7 7 NOEA2009Java-kursus – JSP Examples of n-tier 4-tier J2EE applications –HTML client, JSP/Servlets, EJB, JDBC/Connector 3-tier J2EE applications –HTML client, JSP/Servlets, JDBC 3-tier J2EE applications –EJB standalone applications, EJB, JDBC/Connector B2B Enterprise applications –J2EE platform to J2EE platform through the exchange of JMS or XML-based messages

8 8 NOEA2009Java-kursus – JSP WebService model in J2EE

9 9 NOEA2009Java-kursus – JSP J2EE (+J2SE+J2ME+..) and.NET (comparision) Both J2EE and.Net supports object based n-tier applications Both runs on several platforms (.net by Mono) But: –More providers of j2ee (primary Sun and IBM, but also Oracle, Nowell...) –Java is (unofficial) build on standards. But is not under control of official authority. –C# is defined in a ANSI standard, but in praxis under MS control –J2EE contains a component container, that takes care of security, persistency i.e. –VisualStudio is a better IDE (imo) –.....

10 10 NOEA2009Java-kursus – JSP JSP

11 11 NOEA2009Java-kursus – JSP Serverscript Er et script sprog som køres på serveren til at generere html-kode. ASP, JSP og PHP er eksempler på scriptssprog Der skal være en fortolker til det givne sprog. Serveren finder ud af hvilken fortolker, der skal anvendes vha. mime typer

12 12 NOEA2009Java-kursus – JSP Hvad er JSP? Modspil til ASP og PHP Standard web-adgang til J2EE (web-server) Bygger på Servlets –men er lettere at skrive, specielt ved output tunge servlets –og lettere at lave tool support

13 13 NOEA2009Java-kursus – JSP Eksempel Week= Year=

14 14 NOEA2009Java-kursus – JSP Elementer Statisk tekst (HTML eller XML) Direktiver Scripting elementer Implicitte variable Standard tags Brugerdefinerede tags

15 15 NOEA2009Java-kursus – JSP Direktiver Page –language –extends –imports –.. Include taglib

16 16 NOEA2009Java-kursus – JSP Scripting Declarations – Scriptlets – Expressions –

17 17 NOEA2009Java-kursus – JSP Forskel på <%! og <% udføres første gang siden loades (i en session). Bruges f.eks. til erklæringer og initialisering af variable: udføres hver gang siden (re)loades. Bruges f.eks til generering af html: Antal er ”+count+” ”); %>

18 18 NOEA2009Java-kursus – JSP Implicite objekter request response session application

19 19 NOEA2009Java-kursus – JSP Expressions En expression (udtryk) har formen: Typisk vil en expression tilføje en streng til html-koden. F.eks: Nu indsættes en streng:

20 20 NOEA2009Java-kursus – JSP Et andet eksempel Express Yourself <!– body { background-color: #ffffff; } h1 { text-align: center; color: #008888; } u { color: #ff0000; } table { margin-left: 10%; margin-right: auto; } tr td { font: smaller; } p { margin-left: 5%; font-family: sans-serif; } -->

21 21 NOEA2009Java-kursus – JSP Expressions Some basic expressions: call for an unformatted java.util.Date() returns: call for the real path to the root of this JSP returns:

22 22 NOEA2009Java-kursus – JSP call for the URL path and name of this JSP returns: call for the file path and name of this JSP returns:

23 23 NOEA2009Java-kursus – JSP If we add some other methods and combine some of the above we get nicer output: The current time is: This page was last modified:

24 24 NOEA2009Java-kursus – JSP Erklæringer Erklæring kan erklære en variabel som i Java. Men man kan også lave metoder. En erklæring har formen: F.eks: Variablen kan så senere bruges

25 25 NOEA2009Java-kursus – JSP Load counter JSP erklæring: Counter Declarations Counter Denne side er reloaded gange

26 26 NOEA2009Java-kursus – JSP Metoder Metoder kan også erklæres: Hej, jeg hedder ”+ navn +” ”; } %> Kaldes med: <%=hejMedDig(”Sigurd”);

27 27 NOEA2009Java-kursus – JSP Scriplets Er når man blander koden med JSP. Ved tunge scripts bør man indkapsle i metoder eller i java klasser. En fil med mange scriplets kan være svær at læse. Eksempel på scriplet: Linie

28 28 NOEA2009Java-kursus – JSP URL’s URL: Uniform Resource Locator Er det der står i adresse feltet i browseren F.eks: http://www.computerworld.dk/Vis_artikel.asp?ArticleID= 12 Eller en_anden_port.ah.dk:337

29 29 NOEA2009Java-kursus – JSP Metoder til aflæsning af URL’s request:getScheme() Aflæser protokollen request:getServerName() Aflæser servernavn som ip adresse eller navn request.getServerPort() Aflæser portnummer request.getRequestURI() Aflæser selve sidens sti. Dvs. det der kommer mellem servernavnet og søgestrengen

30 30 NOEA2009Java-kursus – JSP QueryStrings Man kan overføre værdier i URL’n Bruges f.eks i søgemaskiner eller i indkøbskurven i et ehandelssystem www.hunden.dk/vishund.jsp?race=”labrador”&”farve=”sort” &ben=4 request.getParameter(String name) aflæser værdien F.eks: request.getParameter(”race”) vil returnere ”labrador” Tal fås således: int antalBen=Integer.parseInt(request.getParameter(”ben”)); Hele strengen fås med: request.getQueryString() request.getParameterNames() returnerer navne på parametrene

31 31 NOEA2009Java-kursus – JSP Forms Navn: Giver en ny url: minside.jsp?navn=... method angiver hvordan URL’en skal dannes: –post tilføjer søgestrengen –get laver en helt ny url

32 32 NOEA2009Java-kursus – JSP get / post / action Get: Tilføjer en QueryString til URL’en Bruges ved simple forms, hvor strengen er mindre end 255 tegn Post:Sender data umiddelbart efter at resultat-url’en er fundet. Man kan ikke se data i url’en. De fås med getParameter(..) ActionIndlæser en ny side med parametrene. Den url, der står i browseren er den samme.

33 33 NOEA2009Java-kursus – JSP Et eksempel – post Navnet er Navn

34 34 NOEA2009Java-kursus – JSP Eksempel – Get Navnet er Navn

35 35 NOEA2009Java-kursus – JSP Eksempel – Action formtest.jsp: Navn result.jsp: Navnet er

36 36 NOEA2009Java-kursus – JSP Indlæsning af flere ens parametre F.eks varer til en indkøbskurv Her bruges metoden: String [] request.getParameterValues(String name)

37 37 NOEA2009Java-kursus – JSP Eksempel <% //Hent alle værdier for vareNavn String varer[] = request.getParameterValues("vareNavn");%> <% //Udskriv alle værdier for (int i=0; i vare nr. er

38 38 NOEA2009Java-kursus – JSP Forms, som de bruges meget <% //Hvis form er sendt som resultat af en POST sættes et flag boolean isOK=false; if(request.getMethod().equals("POST")){ isOK=true; } %> <% // Hvis den er ok, så udskriv resultat, eller bed om input if(isOK){%> Navn er Email er

39 39 NOEA2009Java-kursus – JSP Forsat.... <% //Hvis den ikke er ok, så vis formen if(!isOK){%> Navn > Email >

40 40 NOEA2009Java-kursus – JSP Validering Check at inputdata er gyldige (valide): F.eks: Navn skal angives

41 41 NOEA2009Java-kursus – JSP Scopes i JSP Udover de generelle scopes kan man definere hvilket scope et objekt skal befinde sig i: –Page Eksisterer kun for siden. Når siden forlades dør variable/objekter –Session Eksisterer for sessionen. Sålænge browseren er åben, og ikke timed out –Application Eksisterer på server niveau. Sålænge serveren kører

42 42 NOEA2009Java-kursus – JSP Scriptelementer Direktiver – Declarations – Scriptlets – Expressions –

43 43 NOEA2009Java-kursus – JSP (Forenklet) model

44 44 NOEA2009Java-kursus – JSP Hvor dannes der her html-kode? <%! //erklæring af banner og links array String [] billeder = {"sas.gif", "kasino.gif", "bredband.gif","bolig.bmp"}; String [] links = {"http://www.sas.dk", "http://www.casino.com","http://www.tdc.dk","http://www.bolig.d k"}; int index=0; //initialisering af index til arrays %> "> " width="468" height="60" border="0"> <% //flyt index index++; if(index==billeder.length) index=0; //reset index %>

45 45 NOEA2009Java-kursus – JSP Gode råd Gør det i små skridt. Så kan du overskue, hvor det går galt Lav designet først Og lad vær med at tænke på JSP her. Overvej hvilken del af html’en i designet at JSP skal skrive. Skriv resten af JSP-koden.

46 46 NOEA2009Java-kursus – JSP Session Med sessionsstyring er det muligt at tilpasse information og navigationsmuligheder til den enkelte bruger Og registrere i f.eks et CRM-system, hvad brugeren gør. HTTP (HTML) er udviklet til at vise statisk HTML. Derfor er der ikke indbygget sessionsstyring. Sessionsstyring forudsætter serverside programmer eller scripts

47 47 NOEA2009Java-kursus – JSP Session og JSP Første gang en bruger loader en side fra sitet genereres et unikt sessionid, som gemmes i browseren. Hvis det er muligt bruges en cookie, ellers tilføjes en querystring til URL’n Samtidigt oprettes et unikt sessionobjekt på serveren, som bl.a også indeholder id’et. Et id kan kun tilknyttet et sessionobjekt

48 48 NOEA2009Java-kursus – JSP Attributes Sessionobjektet anvendes ofte til at gemme forskellige variable. Variable gemmes altså på serveren, og ikke i f.eks en cookie Dette gøres med setAttribute(String navn, Object value) F.eks: session.setAttribute(”brugernavn”,”Børge”); Den hentes igen med getAttribute(String navn) F.eks: String bruger=session.getAttribute(”brugernavn”); Istedet for getAttribute og setAttribute kan man bruge hhv. getValue og setValue. Men de er deprecated, dvs de er på vej ud.

49 49 NOEA2009Java-kursus – JSP Object setAttribute og getAttribute gemmer værdier af typen Object. Fordelen er at alle objekter af klassser i Java kan gemmes. F.eks kan en indkøbskurv laves som en klasse, der gemmes. Ulempen er at simple datatyper, f.eks int og boolean ikke kan gemmes direkte. Man er nødt til lave dem til et objekt. F.eks kan en int gemmes således: int ant=7; session.setAttribute(”antal”,new Integer(ant)); Den aflæses således: int ant=(Integer) session.getAttribute(”antal”).intValue();

50 50 NOEA2009Java-kursus – JSP Andre metoder getAttributeNames() giver en liste med de anvendte attributer. getCreationTime() giver tidspunktet for oprettelse af sessionobjektet getID() giver sessionid’et. Kan være interessant hvis man kører flere services samtidigt eller ved logning getLastAccessedTime() returnerer hvor lang tid der er gået siden sidste gang brugeren har gjort noget på sitet

51 51 NOEA2009Java-kursus – JSP Flere int getMaxInactiveInterval () giver timeout tiden setMaxInactiveInterval (int) sætter timeout tiden invalidate() lukker sessionen, f.eks ved logoff isNew() returnerer om sessionen er ny. Kan bruges til at det er indgangen til sitet removeAttribute(String navn) sletter attributen.

52 52 NOEA2009Java-kursus – JSP Cookies Cookies er en streng, som gemmes på brugerens pc. Bruges f.eks til gemme oplysninger om sessionen midlertidigt, eller valgte parametre, som kan indlæses næste gang. En cookie har en udløbsdato, hvorefter den slettes. Det er kun muligt at læse cookies man selv har gemt. Man kan ikke (pt.) overføre virus via cookies. Cookies kan slåes fra i browseren.

53 53 NOEA2009Java-kursus – JSP Gem værdier i en Cookies Opret en cookie: Cookie minCookie= new Cookie(”test”,”Dette er en test”); response.addCookie(minCookie); Læs cookien: cookies[] cookieArray=request.getCookies(); int i=0; boolean found=false; while(!found&&i <cookieArray.length){ if(cookieArray[i].getName().equals(”test”){ found=true; out.println(”Værdien er ”+cookieArray[i].getValue()); } i++; }

54 54 NOEA2009Java-kursus – JSP Databaser og drivere Enkeltstående PC –dBase, Paradox, Access mm. dbServer –DB/2, MS SQL, Oracle, Sybase mm Forskellige SQL-dialekter ODBC –Object DataBase Connectivity - et forsøg på ensartet tilgang til alle databaser under Windows, mange laver ODBC- drivere JDBC –Objektorienteret indpakning af ODBC med visse ændringer i designet, JDBC-ODBC bridge, java.sql-pakken

55 55 NOEA2009Java-kursus – JSP Hvad skal vi bruge? ODBC-driver JDBC-ODBC bridge JDBC-klasser (import Java.sql.*) Dvs. for at køre skal vi: –oprette en database (Interbase/Access) –sætte ODBC-driveren til databasen op (datasource) –Arbejde med java.sql-pakken i vores Javaprogram

56 56 NOEA2009Java-kursus – JSP Hvilke JDBC-klasser skal vi bruge? Connection –Repræsenterer selve forbindelsen til databasen. Kan fx returnere oplysninger om metadata og generere statementobjekter: Statement –Objekter bruges til at udføre et sql-statement ResultSet –Indeholder en tabel, resultatet af et sql-statement (returneres af statement-objektet). Data tilgås række for række, kolonnerne tilgås vilkårligt

57 57 NOEA2009Java-kursus – JSP package Package svarer til biblioteker i Javafilen: package dk.ah; Fysisk ligger den på..../dk/ah

58 58 NOEA2009Java-kursus – JSP Find alle - klassen Opgaver: public static AnsatList findAlle(){ AnsatList nylist = new AnsatList(); Ansat a; String query="SELECT * FROM Ansat"; try{ Statement stmt = con.createStatement(); results = stmt.executeQuery(query); while( results.next() ){ a = new Ansat(); a.setAnsatNr(results.getInt(1)); a.setFornavn(results.getString(2)); a.setEfternavn(results.getString(3)); a.setFoedselsdato(results.getString(4)); a.setUddannelse(results.getString(5)); a.setMaanedsloen(results.getInt(6)); a.setAfdeling(results.getInt(7)); nylist.add(a); } }//slut try catch(Exception e){ System.out.println("Query exception: Fejl i indlæsning fra databasen. (exists)"+e); } return nylist; }

59 59 NOEA2009Java-kursus – JSP Indsæt public static void indsaet(Ansat a){ //PRE: a findes ikke i databasen //POST: a er indsat i databasen og i administratoren String query="INSERT INTO Ansat VALUES(" + " '" + Integer.toString(a.getAnsatNr())+"','"+ a.getFornavn()+"','"+ a.getEfternavn()+"','"+ a.getFoedselsdato()+"','"+ a.getUddannelse()+"','"+ Integer.toString(a.getMaanedsloen())+"','"+ Integer.toString(a.getAfdeling())+"')"; try{ Statement stmt = con.createStatement(); stmt.executeUpdate(query); }//slut try catch(Exception e){ System.out.println("Insert exception i db: "+e); }

60 60 NOEA2009Java-kursus – JSP Slet public static void slet(Ansat a){ //PRE: a findes i databasen //POST: a er slettet i databasen String query="DELETE FROM ANSAT WHERE AnsatNr=" + a.getAnsatNr(); try{ Statement stmt = con.createStatement(); stmt.executeUpdate(query); }//slut try catch(Exception e){ System.out.println("Delete exception i db: "+e); }

61 61 NOEA2009Java-kursus – JSP Metode 1: ”Den pæne måde” Databaseadgangen indkabsles i class-filer, som ligger på serveren. Entiteter behandles som objekter Man kan ikke se i JSP filen at der er tale om SQL Husk at erklære klassen public I Tomcat skal klassen ligge under root\web-inf\classes

62 62 NOEA2009Java-kursus – JSP Et eksempel //Bemærk at her ligger klassen i minpakke... <% //Vis tabel med alle ansatte out.print(" "); AnsatList al=Opgaver.findAlle(); //AnsatList er en sekvens af ansatte for(int i=0;i<al.count();i++){ out.print(" "); Ansat a=al.inspect(i); //Hent ansat på i’te plads out.println(" "+a.getFornavn()+" "+a.getEfternavn()+" "); out.print(" "); } out.print(" "); %>

63 63 NOEA2009Java-kursus – JSP Metode 2: ”Den mindre pæne” Man bruger ikke klasser på serveren, men erklærer metoder i JSP-filen. <%! //Metode til at skrive næste række String writeNextRow() throws SQLException{ String strOut=null; if(results.next()==true){ strOut=" "; strOut+=" "+results.getInt(1)+" "; strOut+=" "+results.getString(2)+" "; strOut+=" "+results.getString(3)+" "; strOut+=" ";} return strOut; } %>

64 64 NOEA2009Java-kursus – JSP Metode 3: Den upæne måde (Men ofte anvendte) Man skriver det der hvor brug for det. <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:firma","",""); Statement stmt = con.createStatement(); ResultSet results = stmt.executeQuery("SELECT * FROM Ansat"); %>

65 65 NOEA2009Java-kursus – JSP Opgaver Lav et rullebanner med 3 bannere der skifter for hvert reload Ved reload: vis hvor lang der er gået siden du load’ede første gang. Hint: long System.currentTimeMillis() giver tiden i millisekunder siden 1970.

66 66 NOEA2009Java-kursus – JSP Opgave Lav en form til oprettelse af ny bruger –Brugernavn*, Password*,Navn*,By,Alder, E-mail, Hjemmeside Vis de indtastede værdier på en ny side. Gør de værdierne med * tvungne og de andre valgfrie Skriv passe fejltekster til brugeren

67 67 NOEA2009Java-kursus – JSP Opgave Lav et login skærmbillede som en form ’Hardcod’ to brugeid med password. Gem i session: Den bruger som er logget på Udlæs i en anden side hvem, der er logget på Gem den bruger, som sidst er logget på i en cookie. Brug cookien som defaultværdi i loginbilledet


Download ppt "16 - JSP. 2 NOEA2009Java-kursus – JSP Developement platform You need a J2ee compatible server There is more possibilities. Here we look at: –Tomcat &"

Lignende præsentationer


Annoncer fra Google