190 likes | 353 Views
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
E N D
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 • <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>
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)); • }