Programowanie obiektowe Andrzej Ziółkowski Wykład 5
Aplikacje internetowe Miejsce działania programu – serwer, komputer użytkownika Instalowanie programów, dostępność Aktualizacje oprogramowania Bezpieczeństwo Bezstanowość
Programy internetowe HTML, CSS, XML, XHTML JavaScript – komputer użytkownika CGI, Perl, C - serwer PHP - serwer Java applet – komputer użytkownika Java servlet - serwer ASP, ASP.NET, C# - serwer
Aplet – zasada działania Aplet – program napisany w języku Java, uruchamiany ze stron WWW w przeglądarce. Przechowywany (po skompilowaniu) na serwerze razem ze stronami HTML Przesyłany razem ze stronami HTML na komputer użytkownika i tam uruchamiany Korzysta z wydzielonego obszaru (okna) na stronie HTML Tworzony jako klasa dziedzicząca po klasie Applet z pakietu java,applet lub javax.swing.JApplet. Odpowiedni obiekt tej klasy tworzy przeglądarka po załadowaniu strony HTML, gdzie aplet jest „osadzony”.
Osadzanie apletu na stronie HTML <head> <title>Cw2</title> <meta content="text/html; charset=windows-1250" http-equiv="Content-Type"> <link href="std1.css" type="text/css" rel="stylesheet"> </head> <body> Cw2 - Program rysujący:<br><br> <applet code="cw2/cw2.class" archive="cw2.jar" width="500" height="350"> </applet> <br><br> Źródło: <a href="cw2.java">cw2.java</a> </body> </html> <applet code= " aplet.class" width="500" height="350"> </applet>
Parametry apletu code=”plik.class” width=”400” height=”300” codebase=”adres URL” archive=”plik.jar” name=”nazwa apletu” mayscript vspace=”10” hspace=”10” align=”left” alt=„”tekst wyświetlany gdy nie można uruchomić” <param name=”nazwa” value=”wartość”>
Przykładowy aplet import java applet.*; public class ProstyAplet extends Applet { public void paint(Graphics g) { g.drawText(20,10,”To ja ProstyAplet”); }
Najważniejsze składowe apletu import java applet.*; public class NazwaApletu extends Applet { public void init() { // inicjacja apletu } public void start() { // wznowienie pracy public void stop() { // wstrzymanie pracy public void destroy() { // zamykanie okna przeglądarki public void paint(Graphics g) { // malowanie public void repaint() { // odświeżanie po zmianie wyglądu
Inicjacja apletu Obiekt apletu tworzy przeglądarka na podstawie danych ze strony HTML Metoda init() jest wywoływana tylko raz na początku działania apletu ale po utworzeniu obiektu i ustaleniu środowiska pracy. W konstruktorze dane potrzebne w aplecie mogą być jeszcze niedostępne i dlatego wprowadzono metodę init() wywoływaną później aby tam robić inicjację.
Wyświetlanie informacji w aplecie Za wygląd aplety odpowiedzialna jest metoda paint wywoływana gdy trzeba odmalować obszar lub część obszaru apletu Metoda paint powinna zawierać malowanie całego obszaru apletu Do malowania używamy metod z klasy Graphics np.: g.drawText(x,y,”tekst”); g.drawRect(x,y,w,h);
Tworzenie okien dialogowych Za pomocą apletu można tworzyć złożone programy z nowymi okami dialogowymi do wprowadzania danych. Dialog dlg1 = new Dialog(this); // … // budowanie dialogu // … dlg1.setVisible(true);
Pobieranie parametrów z HTML Wstawiając aplet w pliku HTML możemy podać dodatkowe parametry: <applet code=”ap.class” width=400 height=300> <param name=par1 value=100> <param name=par2 value=”tekst”> </applet> W aplecie dostęp do parametrów zapewnia metoda getParameter: int par1; String s = getParameter(”par1”); if (s == null) par1 = 10; // wartość domyślna else par1 = Integer.parseInt(s); // podstawienie wartości
Pobieranie informacji z linii adresu W aplikacjach internetowych parametry miedzy kolejno wyświetlanymi stronami są często przekazywane jako uzupełnienie adresu URL np. http://www.strona.pl?par1=val1@par2=val2 Parametry te można pobrać wykorzystując metodę getDocumentBase() String s = getDocumentBase().ToString(); W polu s zostanie umieszczona cała linia adresu, z której można wyodrębnić potrzebne informacje.
Aplety i JavaScript Wymagany paramet apletu mayscript. Wykorzystujemy klasę JSObject: import netscape.javascript.*; jscript = JSObject.getWindow(this); Wywołanie funkcji JavaScript jscript.call(nazwaFunkcji,tablicaParametrów); Użycie JavaScript w aplecie jscript.eval(TekstKomendyJavaScript); Dostęp do metod apletu w JavaScript document.nazwaApletu.metodaApletu(…
Ograniczenia apletów Powód – bezpieczeństwo Aplety nie mają dostępu do plików na komputerze użytkownika. Nie mogą uruchamiać programów na komputerze użytkownika. Mogą się komunikować jedynie z serwerem, z którego zostały pobrane. Wyjątki Aplety uruchamiane w appletviewer Aplety podpisane
Przykład apletu – wybór koloru Strona HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Cw4a</title> <meta content="text/html; charset=windows-1250" http-equiv="Content-Type"> <link href="std1.css" type="text/css" rel="stylesheet"> </head> <body> Cw4a - Wybieranie koloru:<br><br> <applet code="cw4/cw4.class" archive="cw4.jar" width="365" height="420"> </applet> <br><br> </body> </html>
Tworzenie apletu w NetBeans
Przykład apletu – wybór koloru package cw4; public class cw4 extends javax.swing.JApplet { /** Initializes the applet cw4 */ public void init() { try { java.awt.EventQueue.invokeAndWait(new Runnable() { public void run() { initComponents(); } }); } catch (Exception ex) { ex.printStackTrace(); …
Przykład apletu – wybór koloru private void niebieskiMouseMoved(java.awt.event.MouseEvent evt){ aktualny.setBackground(new java.awt.Color(0, 0, 255)); } private void niebieskiMouseClicked(java.awt.event.MouseEvent evt) { wybrany.setBackground(new java.awt.Color(0 , 0, 255 )); private void zielonyMouseMoved(java.awt.event.MouseEvent evt) { aktualny.setBackground(new java.awt.Color(0,255,0)); private void zielonyMouseClicked(java.awt.event.MouseEvent evt) { wybrany.setBackground(new java.awt.Color(0,255,0)); private void czerwonyMouseMoved(java.awt.event.MouseEvent evt) { aktualny.setBackground(new java.awt.Color(255,0,0)); private void czerwonyMouseClicked(java.awt.event.MouseEvent evt) { wybrany.setBackground(new java.awt.Color(255,0,0));