Programowanie w języku Java

Podobne dokumenty
Elementy JEE. 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages.

prepared by: Programowanie WWW Servlety

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Java wybrane technologie spotkanie nr 4. Serwlety c.d.

Piotr Laskowski Krzysztof Stefański. Java Servlets

Architektury Usług Internetowych. Laboratorium 1. Servlety

Java wybrane technologie spotkanie nr 3. Serwlety

Java Database Connectivity

Aplikacje internetowe i rozproszone - laboratorium

Java EE: Serwlety i filtry serwletów


Architektury Usług Internetowych. Laboratorium 1 Servlety

1 Wprowadzenie do J2EE

Serwlety Java: zagadnienia zaawansowane. Data Sources. Data Sources. Przykład pliku data-sources.xml

Serwlety. Co to jest serwlet? Przykładowy kod serwletu. Po co są serwlety?

Zaawansowane aplikacje internetowe laboratorium

Java wybrane technologie spotkanie nr 5. Java Server Pages

Przegląd technologii JSP

Aplikacje WWW - laboratorium

Wzorce prezentacji internetowych

prepared by: Programowanie WWW Model-View-Controller

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 09

In»ynieria systemów informacyjnych - Adam Krechowicz

b) Jako nazwę projektu wpisz SerwletyJSPJSTL. Nie zmieniaj wartości pozostałych opcji. Kliknij przycisk Next >.

Tworzenie usług internetowych. Servlety cz. 1

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Java rozszerzenie. dr. A. Dawid

Serwlety i JSP. Autor: Marek Zawadka deekay@gazeta.pl

JavaServer Pages. Konrad Kurdej Karol Strzelecki

Programowanie w Sieci Internet filtry oraz web.xml. Kraków, 11 stycznia 2013 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

JAVA I SIECI. MATERIAŁY:

Java Enterprise Edition spotkanie nr 4. Java Server Pages c.d.

Java Enterprise Edition spotkanie nr 3. Serwlety c.d.

Wprowadzenie do JSP. Marcin Apostoluk, Tadeusz Pawlus, Wojciech Walczak. Technologie Biznesu Elektronicznego, 7 marzec 2006

Aplikacja wielowątkowa prosty komunikator

TIN Techniki Internetowe Lato 2005

Aktywne i dynamiczne strony WWW. Elementy projektowania stron WWW. Część 3. Formularze HTML przykład. Formularze HTML. dr inŝ.

Serwlety i JSP na platformie Java EE. Damian Makarow

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Programowanie w języku Java

Architektura Model-View-Controller

Wybrane działy Informatyki Stosowanej

mgr inż. Michał Paluch

Java w Internecie - czy to ma sens? ;)

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Aplikacja wielow tkowa prosty komunikator

JAVA : APLIKACJE WEBOWE I JAVA EE WPROWADZENIE

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Aplikacje WWW - laboratorium

SOAP. Autor: Piotr Sobczak

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Aplikacje WWW - laboratorium

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Katalog książek cz. 2

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Java jako j zyk programowania serwerów WWW / aplikacji Webowych servlety

Projektowanie aplikacji J2EE w architekturze Model-View-Controller

Programowanie obiektowe

J2EE wzorce projektowe. Alicja Truszkowska

Plan wykładu. Dostęp do bazy danych. Architektura JDBC. Dostęp do baz danych z aplikacji Java EE

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

Programowanie obiektowe

Bezpieczne uruchamianie apletów wg

Kurs WWW 1. Paweł Rajba

Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach

Java. Programowanie Obiektowe Mateusz Cicheński

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Multimedia JAVA. Historia

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Aplikacje Internetowe, Servlety, JSP i JDBC

Czym są serwlety Java? Serwlety Java. Zalety serwletów Java (w porównaniu z CGI)

Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

Wybrane działy Informatyki Stosowanej

Testowanie aplikacji Java Servlets

Remote Method Invocation 17 listopada 2010

Strumienie i serializacja

JAX-RS czyli REST w Javie. Adam Kędziora

Programowanie obiektowe

Wywoływanie metod zdalnych

Podejście obiektowe do budowy systemów rozproszonych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Programowanie w Internecie. Podstawy użycia JSP. Paweł Kasprowski. vl06z

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

Aplikacje WWW - laboratorium

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Analiza porównawcza technologii tworzenia aplikacji internetowych dla baz danych Oracle

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wywoływanie metod zdalnych

Tworzenie i wykorzystanie usług

Java Platform Micro Edition

Transkrypt:

Programowanie w języku Java Wykład 6: Programowanie rozproszone: Servlety, JSP JEE warstwa WWW Programowanie w języku Java 2 1

Interakcje serwer-klient Programowanie w języku Java 3 Technologie warstwy internetowej Programowanie w języku Java 4 2

Konfiguracja serwera internetowego Pliki.war - automatyczna instalacja (deploy) Programowanie w języku Java 5 Struktura servletów import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class ThreadServlet extends HttpServlet { public void init(servletconfig config) throws ServletException { public ServletConfig getservletconfig(); public void service(httpservletrequest req, HttpServletResponse res) throws IOException { public String getservletinfo() { public void destroy() { Zamiast service() może być doget() i dopost() Programowanie w języku Java 6 3

Przykład Programowanie w języku Java 7 Przykład cd. Programowanie w języku Java 8 4

Kod przykładowego servletu import java.io.*; import java.util.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class GreetingServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); response.setbuffersize(8192); PrintWriter out = response.getwriter(); out.println("<html>" + "<head><title>hello</title></head>"); out.println("<body bgcolor=\"#ffffff\"> "<img src=\"duke.waving.gif\" alt=\"duke waving\">" + "<h2>hello, my name is Duke. What's yours?</h2> <form method=\"get\">" + "<input type=\"text\" name=\"username\" size=\"25\">" + "<p></p>" + "<input type=\"submit\" value=\"submit\"> <input type=\"reset\" value=\"reset\">" + "</form>"); String username = request.getparameter("username"); if ((username!= null) && (username.length() > 0)) { RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher("/response"); if (dispatcher!= null) { dispatcher.include(request, response); out.println("</body></html>"); out.close(); Programowanie w języku Java 9 Kod servletu generującego odpowiedź import java.io.*; import java.util.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class ResponseServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getwriter(); String username = request.getparameter("username"); if ((username!= null) && (username.length() > 0)) { out.println("<h2>hello, " + username + "!</h2>"); public String getservletinfo() { return "The Response servlet says hello."; Programowanie w języku Java 10 5

Konfiguracja serwera Instalacja serwletów: wgranie skompilowanych servletów do kartoteki classes rejestracja serwletów w pliku web.xml Wywołanie: http://sewer:8080/hello2/greeting Programowanie w języku Java 11 Plik web.xml <?xml version="1.0" encoding="utf-8"?> - <web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>hello2</display-name> - <servlet> <display-name>greetingservlet</display-name> <servlet-name>greetingservlet</servlet-name> <servlet-class>servlets.greetingservlet</servlet-class> </servlet> - <servlet> <display-name>responseservlet</display-name> <servlet-name>responseservlet</servlet-name> <servlet-class>servlets.responseservlet</servlet-class> </servlet> - <servlet-mapping> <servlet-name>greetingservlet</servlet-name> <url-pattern>/greeting</url-pattern> </servlet-mapping> - <servlet-mapping> <servlet-name>responseservlet</servlet-name> <url-pattern>/response</url-pattern> </servlet-mapping> </web-app> Programowanie w języku Java 12 6

Formularze HTML Struktura znacznika: <FORM ACTION= </FORM> Akcja: ACTION= servlets/mojservlet - obsługa przez wskazany servlet Brak akcji: przesłanie danych pod aktualny adres URL Pola formularzy: Pole1: <INPUT TYPE= TEXT NAME= par1 VALUE= x > <INPUT TYPE= SUBMIT VALUE= Wyślij > Inne typy: PASSWORD, RADIO, itp. Programowanie w języku Java 13 Odczyt parametrów formularza request.getparameter( p1 ) zwraca String request.getparametervalues( p1 ) zwraca tablicę stringów request.getparameternames() obiekt typu Enumeration Programowanie w języku Java 14 7

Przykład: aplet komunikujący się z servletem (1) import java.io.*; import javax.servlet.servletexception; import javax.servlet.http.*; public class EchoServlet extends HttpServlet { public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException,IOException { try { response.setcontenttype("application/x-java-serialized-object"); InputStream in = request.getinputstream(); ObjectInputStream inputfromapplet = new ObjectInputStream(in); String echo = (String) inputfromapplet.readobject(); OutputStream outstr = response.getoutputstream(); ObjectOutputStream oos = new ObjectOutputStream(outstr); oos.writeobject(echo); oos.flush(); oos.close(); catch (Exception e) { e.printstacktrace(); Programowanie w języku Java 15 Aplet komunikujący się z servletem (2) import java.applet.applet; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; public class EchoApplet extends Applet { private TextField inputfield = new TextField(); private TextField outputfield = new TextField(); private TextArea exceptionarea = new TextArea(); public void init() { setlayout(new GridBagLayout()); Label title=new Label("Echo Applet", Label.CENTER); title.setfont(new Font("SansSerif", Font.BOLD, 14)); GridBagConstraints c.gridwidth = GridBagConstraints.REMAINDER; c.weightx = 1.0; c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(5, 5, 5, 5); add(title, c); c.anchor = GridBagConstraints.EAST; add(new Label("Input:", Label.RIGHT), c); c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 1.0; add(inputfield, c); Button sendbutton = new Button("Send"); c.gridwidth = GridBagConstraints.REMAINDER; add(sendbutton, c); sendbutton.addactionlistener(newactionlistener() { public void actionperformed(actionevent e) { onsenddata(); ); c.anchor = GridBagConstraints.EAST; add(new Label("Output:", Label.RIGHT), c); c.gridwidth = GridBagConstraints.REMAINDER; c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 1.0; add(outputfield, c); outputfield.seteditable(false); c.anchor = GridBagConstraints.EAST; add(new Label("Exception:", Label.RIGHT), c); c.gridwidth = GridBagConstraints.REMAINDER; c.weighty = 1; c.fill = GridBagConstraints.BOTH; add(exceptionarea, c); exceptionarea.seteditable(false); Programowanie w języku Java 16 8

Aplet komunikujący się z servletem (3) private URLConnection getservletconnection() throws MalformedURLException, IOException { URL urlservlet = new URL(getCodeBase(), "echo"); URLConnection con = urlservlet.openconnection(); con.setdoinput(true); con.setdooutput(true); con.setusecaches(false); con.setrequestproperty("content-type", "application/x-java-serialized-object"); return con; private void onsenddata() { try { String input = inputfield.gettext(); URLConnection con = getservletconnection(); OutputStream outstream = con.getoutputstream(); ObjectOutputStream oos = new ObjectOutputStream(outstream); oos.writeobject(input); oos.flush(); oos.close(); InputStream instr = con.getinputstream(); ObjectInputStream inputfromservlet = new ObjectInputStream(instr); String result = (String) inputfromservlet.readobject(); inputfromservlet.close(); instr.close(); outputfield.settext(result); catch (Exception ex) { ex.printstacktrace(); exceptionarea.settext(ex.tostring()); Programowanie w języku Java 17 Inne możliwości servletów Obsługa cookies Śledzenie sesji Analiza nagłówków żądań Generowanie niestandardowych odpowiedzi Przesyłanie plików w różnych formatach Programowanie w języku Java 18 9

Podstawowe konstrukcje JSP <H1> Kod w HTMLu </H1> <!-- komentarz HTML --> <% -- komentarz JSP --> <%= wyrażenie w Javie %> <% Skryptlet (blok instrukcji w Javie) %> <%! definicja pola lub metody %> <%@ dyrektywa atrybut= wartość %> <jsp:akcja> </jsp:akcja> - format XML Programowanie w języku Java 19 Domyślne zmienne HttpServletRequest request HttpServletResponse response Writer out HttpSession session ServletContext application ServletConfig config PageContext pagecontext page = this Programowanie w języku Java 20 10

Koniec Programowanie w języku Java 21 11