Java Beans

Slides:



Advertisements
Liknande presentationer
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Advertisements

”Ett sätt att distribuera Business Objects via webben”
Algoritmer och data strukturer -Länkade listor
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
2I1070 Lektion 2 KTH-MI Peter Mozelius Servlets och databaskopplingar.
1 ITK:P2 F9 HTTP, Java servlets och Apache Tomcat DSV Peter Mozelius.
Metoder i java Det finns två typer av metoder i java
Abstract & sealed.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Next previous Lite mer om CGI-programmering Innehåll Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl. Något om Cookies. Internetprogrammering.
Next previous Lite mer om CGI-programmering Innehåll Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl Internetprogrammering F 14 Läs också: Kursboken.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
i olika programmeringsspråk
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Datasamlingar och generiska enheter
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Metoder och slingor Metoder och dess typ Slingor med while och for-satser.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Servlets — Java på serversidan. previous next 2 Servlets Introduktion Javaservlets är en i raden av SUN:s många tillämpningar av Java. Servlets kan grovt.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
Föreläsning 14 ”Enkel” Filhantering.
Java servlets och databaskopplingar
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Föreläsning 10 Stränghantering.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
2I1073 Föreläsning 2 KTH-MI Peter Mozelius Server, servlets och databaskopplingar.
Föreläsning 4 Klasser Och Objekt.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
1 Objektorienterad programmering i Java Föreläsning 5 Kort om Java-Applets.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Programmeringsteknik för K och Media
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
RMI Av: Josefina & Sarah DS04.
Presentationens avskrift:

Java Beans

Vad krävs av er idag? n Någon kunskap om Java n Intresse för komponenter n Eventuellt överenseende med demo-demoner

Agenda n Motivation för Servlets n Servlets jämfört med CGI n Servlet API n Exempel n Hur man börjar utveckla n Summering och vissa ”issues”

Motivet för Servlets n HTML sidor är inte nog –vi behöver ha någon logik bakom sidorna n Idag(?) är CGI det vanliga sättet n Servlet kan ses som en Java-version av CGI –men bättre

Vad är då CGI? Common Gateway Interface n Vanligt sätt att generera dynamisk HTML n Vad som händer är –Web-servern startar ett program –Programmet läser indata från stdin –Programmet “gör” något –Programmet skriver HTML till stdout –Web serverns returnerar genererad HTML till klienten

Vad är dåligt med CGI? n Nytt program startar varje gång –dyrt resursmässigt n Tillståndslöst –hur håller man en session n Finns bättre varianter idag

Vad gör Servlet bättre? n Initierase av ServletServern en gång –instansen “dör inte” mellan anrop –billigare n Kan hantera många anrop på en gång n Ren Java, plattformsoberoende n Can anropas från HTML eller från Applet n Man kan kommunicera mellan Servlets

Servlet, “the big picture” n Någon Servlet Server –kör och administrerar Servlet:s –laddar och “avladdar” –kallar rätt Servlet –typiskt en Servlet “enabled” WebServer

Servlet, på klientsidan n Typiskt från en browser –pekar på en URL n Kan också vara vilken Java app som helst –Applet –Annan Servlet –Applikation

Servlet paket n Två package av intresse n javax.servlet –Inrefarces –Man börjar normalt inte från denna nivå n javax.servlet.http –specialicerade för HTTP –normalt så startar man härifrån

Servlet API n Består av ett par klasser –ServlertInterface –GenericServletClass –ServletConfigInterface –ServletOutputStream, ServletInputStream –ServletRequestInterface –ServletRespondInterface n Normalt inte av intresse

ServletInterface n Några metoder definierade –init( ServletConfig ) –destroy() –service( ServletRequest, ServletResponce ) –getServletConfig() –getServletInfo()

GenericServlet n Abstrakt klass att starta ifrån –Implementerar ServletInterface –Ytterligare några metoder

HTTP paketet n Normal startpunkt –HttpServlet –HttpServletResponseInterface –HttpServletRequestInterface –HttpSession –HttpUtil

Den intressanta klassen är HttpServlet n Gör override på en eller flera metoder –goGet( HttpServletRequest request, HttpServletRequest response) –doPut( HttpServletRequest request, HttpServletRequest response) –service( ServletRequest request, ServletRequest response) n normalt rör man ej service –den kallar doGet eller DoPut med data

Det finns ett antal metoder ytterligare i HttpServlet n init ( ServletConfig ) –initiering, t.ex. databasförbindelse –kallas från ServletServern en gång n destroy () –stäng t.ex. databasförbindelse –kallas från ServletServern en gång n getServletInfo –informationssträng, används av Servern

Klassen HttpServletRequest håller preparedad data n Metoden service lägger in information automatiskt –getRequestURI, getServerPath –getParameters( string name ) –getParameterNames, getParametervalues –getSession

Klassen HttpServletResponse används för att returnera data n Innehåller funktionalitet att returnera data –setHeader –sendError –sendRedirect –getOutputStream n stream att skriva sin HTML till

Klassen HttpSession hjälper dig att hålla en session n Data mellan anrop n måste ha unikt ID på något sätt n ServletServern lagrar data mellan anrop n Metoder som normalt används –getValue, removeValue –getValueNames –putValue –isNew, invalidate

Innan vi går till exempel repeterar vi livscykeln n Livscykeln från Serverns perspektiv –Servern initierar en Servlet och anroper init –Servern anropar service-metoden många gånger –Servern avinstansierar en Servlet och anropar destroy

Första exemplet, en mycket enkel Servlet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Ex1 extends HttpServlet

Gör override på metoden doGet public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" Simple Servlet "); out.println(" "); out.println(" Simple Servlet "); out.println("Simple output."); out.println(" "); out.close(); }

Ex2 är en Servlet med tillstånd n Addera en variabel n Addera en init-metod int counter = 1000; public void init(ServletConfig config) throws ServletException { System.out.println("Initiating the Ex2 servlet"); counter = 0; }

Öka counter i varje anrop public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException,IOException { // added lines in doGet counter++; out.println("Counter value : " + counter ); }

Ex3 läser data från request out.println( "Request method :" + request.getMethod() ); out.println( "Request URI :" + request.getRequestURI() ); out.println( "Request protocol :" + request.getProtocol() ); out.println( "Servlet path :" + request.getServletPath()); out.println( "Path info :" + request.getPathInfo() ); out.println( " There are a lot more info” + “to get (see next example)");

I Ex4 så skickar parametar i anropet n Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = request.getParameter(name); out.println("Parameter : " + name + " = " + request.getParameter(name)); } Parameter : param1 = 33 Parameter : Service = test

Ex5, använd ett HTML form för input What is your income? more Your name? What TV shows do yo watch? Operah Rapport Bingo Lotto –På klientsidan

Ex5, läs av parametrarna Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); String vals[] = (String[]) request.getParameterValues(name); if (vals != null) { for (int i = 0; i<vals.length; i++) { out.println("Parameter : "+name + " : "+vals[i]); }

En servlet kan ha “minne” mellan anrop baserat på ID n Typfallet är en affär –man besöker flera avdelningar –adderar saker till shoppingvagnen n Servlet:en måste minnas vad som plockas –lagra data –identifiera användaren

Servlet session n Identifikation av användaren –genom cockies –genom URL extension n Data mellan anropen –måste identifiera –kan få data från HttpSession

Exempel på session n Håller reda på antal inviduella anrop public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException,IOException { counter++; HttpSession session = request.getSession(true);

Hämtar och sparar undan data // Get data with specific key Integer ival = (Integer) session.getValue("Ex6.count"); if (ival==null) // if null (first time) ival = new Integer(1); else ival = new Integer(ival.intValue() + 1); session.putValue("Ex6.count", ival);// put back // Write out the data out.println("You have hit this page " + ival + " times. "); out.println("Total hits to this page " + counter + " times. ");

Andra saker som kan tas fram: out.println(" Request and Session Data: "); out.println("Session ID in Request: " + request.getRequestedSessionId()); out.println(" Is Session ID in Request from Cookie: ” + request.isRequestedSessionIdFromCookie()); out.println(" Is Session ID in Request from URL: " + request.isRequestedSessionIdFromUrl()); out.println(" Is Session ID valid : " + request.isRequestedSessionIdValid());

Andra saker som kan tas fram: out.println(" Session Data: "); out.println("New Session: " + session.isNew()); out.println(" Session ID: " + session.getId()); Date crt = new Date( session.getCreationTime() ); out.println(" Creation Time: " + crt); Date lat = new Date( session.getLastAccessedTime() ); out.println(" Last Accessed Time: " + lat );

Att tänka på n Threads –Finns bara en instans av varje Servlet –måste vara thread safe –alternativt n implements SingleThreadModel

Hur man gör på sin egen maskin för att utveckla Servlets n Setup –JDK –JSDK2.0 n –CLASSPATH c:\jsdk2.0\lib –PATHc:\jsdk2.0\bin

Hur man gör på sin egen maskin för att utveckla Servlets n Kör –Starta ServletRunner –Placera dina Servlets i JSDK2.0/examples –Starta om SrrvletRunner efter omkompilering –Kör från t.ex. Netscape

Hur man gör på sin egen maskin för att utveckla Servlets, forts n Starta en Servlet Server –ServletRunner eller en WebServer n Skriv dina egna Servlet:s –som vanligt –Placera dina Servlets i JSDK2.0/examples –Starta om ServletRunner efter omkompilering –Kör från t.ex. Netscape