Tworzenie usług internetowych. Servlety cz. 1

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

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

Architektury Usług Internetowych. Laboratorium 1. Servlety

prepared by: Programowanie WWW Servlety

Programowanie w języku Java

1 Wprowadzenie do J2EE

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

Architektury Usług Internetowych. Laboratorium 1 Servlety

Java EE: Serwlety i filtry serwletów

In»ynieria systemów informacyjnych - Adam Krechowicz

Java wybrane technologie spotkanie nr 3. Serwlety

Wybrane działy Informatyki Stosowanej

Piotr Laskowski Krzysztof Stefański. Java Servlets

prepared by: Programowanie WWW Model-View-Controller

Java Server Faces - wprowadzenie

Przegląd technologii JSP

Aplikacje internetowe i rozproszone - laboratorium

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

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

Java Database Connectivity

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

Wzorce prezentacji internetowych

JavaServer Pages. Konrad Kurdej Karol Strzelecki

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

Aplikacje WWW - laboratorium

Java rozszerzenie. dr. A. Dawid

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

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

Testowanie podstawowej konfiguracji serwera w środowisku NetBeans


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

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

Wybrane działy Informatyki Stosowanej

Zaawansowane aplikacje internetowe laboratorium

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

Aplikacje WWW - laboratorium

Wprowadzenie do J2EE. Maciej Zakrzewicz.

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

Java w Internecie - czy to ma sens? ;)

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

Java wybrane technologie spotkanie nr 5. Java Server Pages

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

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

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

Aplikacje WWW - laboratorium

Tworzenie aplikacji internetowych w języku Java

Aplikacje WWW - laboratorium

Serwlety i JSP na platformie Java EE. Damian Makarow

Tworzenie i wykorzystanie usług

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

Aplikacje Internetowe, Servlety, JSP i JDBC

Laboratorium 1 Wprowadzenie do PHP

Wybrane działy Informatyki Stosowanej

TIN Techniki Internetowe Lato 2005

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

Zaawansowane aplikacje internetowe

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Wybrane działy Informatyki Stosowanej

Programowanie wielowarstwowe i komponentowe

Architektura Model-View-Controller

Podstawowe wykorzystanie Hibernate

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

Wybrane Działy Informatyki Stosowanej LABORATORIUM 1.

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

Programowanie w Javie 2. Płock, 26 luty 2014 r.

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Komunikacja między serwletami

JAVA : APLIKACJE WEBOWE I JAVA EE WPROWADZENIE

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

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

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

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

mgr inż. Michał Paluch

Aplikacje RMI

Facelets ViewHandler

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

Aplikacje WWW - laboratorium

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

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

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

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

Aplikacje RMI Lab4

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Aplikacje WWW - laboratorium

SOAP. Autor: Piotr Sobczak

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

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

Projektowanie aplikacji J2EE w architekturze Model-View-Controller

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Aplikacje Internetowe. przygotował:

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

Transkrypt:

Tworzenie usług internetowych Servlety cz. 1

Aplikacje WEB Aplikacje WEB to zestaw komponentów programistycznych, działających po stronie serwera i dynamicznie reagujących na zlecenia ze strony programów klienckich, zgłaszane za pośrednictwem protokołu sieciowego (najczęściej HTTP). Technologie tworznia aplikacji WEB w Javie Servlet (Java Servlet Technology) JSP (Java Server Page) JSF (Java Server Face)

Apliakcje Web w Javie

Serwlety Serwlet podstawowa technologia służąca do tworzenia apliakcji WEB (Java Servlet Technology) Serwlet jest klasą Javy, rozszerzającą funkcjonalność serwerów w przetwarzaniu zleceń programów klienckich. Przy programowaniu serwletów wykorzystujemy klasy z pakietu javax.servlet - stanowiącego interfejs programistyczny Servlet API. Klasy te i ich metody dostarczają różnorodnych środków odbierania i reagowania na zlecenia klientów oraz przesyłania im wyników (odpowiedzi).

Java Server Pages Pierwotnie język skryptowy odpowiedzialny za widok Obecnie obsługuje znaczniki, wywołujące odpowiednie procedury Java Server Pages Standard Tag Library pozwala na tworzenie stron osobom nie znającym się na programowaniu w Javie JSP są tak naprawdę servletami, które są kompilowane do klas Java

Java Server Faces Java Server Faces Technologia przeznaczona do elastycznego generowania GUI aplikacji WEB po stronie serwera, ale przede wszystkim umożliwiająca lepszą separację modeli i widoków, której - mimo wszystko - JSP do końca nie zapewnia. Wersje 1.1, 1.2 aktualnie 2.0, 2.X Odpowiednik ASP.NET

Apache Tomcat serwer http://tomcat.apache.org/ - strona projektu Aktualna wersja Tomcat 7.0.68, 8.0.33, 9.0.0 Servlet 3.0 JSP 2.2 Niezbędna jest Java SE w wersji min.6 (http://www.oracle.com/technetwork/java/) Możliwe jest podłączenie Tomcat a do serwera Apache lub IIS możliwe jest zatem równoległe działanie kilku serwerów na jednym porcie (np. PHP i Java).

Pierwszy serwlet import java io *; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; @WebServlet("/hello") public class HelloWorld extends HttpServlet { @Override public void doget ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getwriter(); out.println("hello World");

Pierwszy serwlet @WebServlet("/address") Adres URL tworzony jest następująco http://hostname/appname/address doget Kod do obsługi żądania HTTP GET. Analogicznie istnieje funkcja dopost HttpServletRequest Obiekt zawierający wszystko, co przychodzi do serwera. Żądanie wysłane z przeglądarki HttpServletResponse Obiekt używany do wysłania różnych rzeczy do serwera. Często używaną funkcją jest getwriter, zwracająca obiekt klasy PrintWriter (ten sam co System.out). @Override Zaznaczenie, że napisywana jest funkcja jest wirtualna

Konfiguracja Eclipse

Generowanie strony HTML @WebServlet("/test1") public class TestServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head><title>a Test Servlet</title></head>"); out.println("<body bgcolor=\"#fdf5e6\">"); out.println("<h1>test</h1>"); out.println("<p>simple servlet for testing.</p>" ); out.println("</body></html>");

Wdrożenie aplikacji Wdrażanie aplikacji (deployment) Utworzenie dyskryptora wdrożenia web.xml Umiejscowienie wszystkich klas, plików HTML, JSP w odpowiednich katalogach o określonej strukturze Poinformowanie serwera o kontekście aplikacji (miejsce, gdzie się znajduje) Skopiowanie aplikacji do katalogu webapps Utworzenie pliku *.war Utworzenie deskryptora kontekstu

Katalogi /mojaapplikacja WEB-INF classes pakiet/klasa.class *.class lib *.jar web.xml *.jsp *.html *.xml *.gif

web.xml <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="webapp_id" version="3.0"> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>

Definiowanie serwletów Annotacje pojawiły się w wersji 3.0 We wcześniejszych <=2.5 serwlety definiowało się w web.xml Java package mypackage; public class MyServlet extends HttpServlet { web.xml <servlet> <servlet-name>myname</servlet-name> <servlet-class>mypackage.myservlet</servlet-class> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name>myname</servlet-name> <url-pattern>/my-address</url-pattern> </servlet-mapping> W rezultacie: http://hostname/appname/my-address Teraz (wersja 3.0) @WebServlet("/my-address") public class MyServlet extends HttpServlet {

Parametry Są przesyłane jako tzw. query-string w adresie URL (GET) lub dołączone są po nagłówku protokołu HTTP (POST), np. http://host/path?user=marty+hall&origin=bwi&dest=lax Najczęściej pochodzą z formatek, np. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD><TITLE>A Sample Form Using GET</TITLE></HEAD> <BODY BGCOLOR="#FDF5E6"> <H2 ALIGN="CENTER">Przykładowa formatka z GET</H2> <FORM ACTION="http://localhost:8088/Test/test.html" METHOD="GET > <CENTER> Imie: <INPUT TYPE="TEXT" NAME="imie" VALUE="Jan"><BR/> Nazwisko: <INPUT TYPE="TEXT" NAME="nazwisko" VALUE="Kowalski"> <P><INPUT TYPE="SUBMIT"></P> </CENTER> </FORM> </BODY> </HTML>

Czytanie parametrów w serwletach request.getparameter("name") Zwraca pierwszą wartość o nazwie name zakodowaną w querystring Działa dla żądania GET i POST request.getparametervalues("name") Zwaraca tablicę wartości parametów o nazwie name request.getparameternames() lub request.getparametermap() Zwraca enumerację lub mapę parametrów

Przykład Formularz na stronie HTML <FORM ACTION="trzyParametry"> Pierwszy parametr: <INPUT TYPE="TEXT" NAME="param1" > <BR/> Drugi parametr: <INPUT TYPE="TEXT" NAME="param2"><BR/> Trzeci parametr: <INPUT TYPE="TEXT" NAME="param3"><BR/> <CENTER> <INPUT TYPE="SUBMIT"> </CENTER> </FORM>

Przykład Serwlet trzyparametry protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getwriter(); out.println("<html>\n"); out.println("<head><title>test 3 parametrow</title></head>"); out.println("<body BGCOLOR=\"#FDF5E6\">"); out.println("<h1 ALIGN=\"CENTER\"> Dane: </H1>"); out.println("<ul>"); out.println(" <LI><B>param1</B>: "+request.getparameter("param1")); out.println(" <LI><B>param2</B>: "+request.getparameter("param2")); out.println(" <LI><B>param3</B>: "+request.getparameter("param3")); out.println("</ul>"); out.println("</body></html>");

Odczyt wszystkich parametrów protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head><title>wszystkie parametry</title> </HEAD>"); out.println("<body BGCOLOR=\"#FDF5E6\">"); out.println("<h1 ALIGN=CENTER>Parametry</H1>"); out.println("<table BORDER=1 ALIGN=CENTER>"); out.println("<tr BGCOLOR=\"#FFAD00\">"); out.println("<th>nazwa parametru</th><th>parameter Value(s)</TH>");

Odczyt wszystkich parametrów (cd) Enumeration<String> paramnames = request.getparameternames(); while(paramnames.hasmoreelements()) { String paramname = (String)paramNames.nextElement(); out.print("<tr><td>" + paramname + "\n<td>"); String[] paramvalues = request.getparametervalues(paramname); if (paramvalues.length == 1) { String paramvalue = paramvalues[0]; if (paramvalue.length() == 0) { out.println("<i>brak wartosci</i>"); else { out.println(paramvalue); else { out.println("<ul>"); for(int i=0; i<paramvalues.length; i++) { out.println("<li>" + paramvalues[i]); out.println("</ul>"); out.println("</table>\n</body></html>");

Uwagi Reakcja na POST taka sam jak GET protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { doget(request, response); Sprawdzanie parametrów if ((param == null) (param.trim().equals(""))) { //pusty parametr lub brak else { // jest jakaś dana

Przykłady użycia serwletów Generowanie obrazków Generowanie arkuszy kalkulacyjnych

Generowanie arkusza Excel @WebServlet("/excelTest") public class exceltest extends HttpServlet { private static final long serialversionuid = 1L; protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("application/vnd.ms-excel"); PrintWriter out = response.getwriter(); out.println("\tq1\tq2\tq3\tq4\tsuma"); out.println("jablka\t78\t87\t92\t29\t=suma(b2:e2)"); out.println("pomarancze\t77\t86\t93\t30\t=suma(b3:e3)");

Generowanie obrazów Krzystanie z klasy java.awt.image.bufferedimage rysowanie obrazka Ustawienie typu kontentu response.setcontenttype("image/jpeg"); Strumień wyjściowy OutputStream out = response.getoutputstream(); Wysłanie obrazka w formacie JPEG strumieniem wyjściowym try { ImageIO.write(image, "jpg", out); catch(ioexception ioe) { System.err.println("Error writing JPEG file: " + ioe);

Generowanie obrazów przykład @WebServlet("/obrazek") public class Obrazek extends HttpServlet { private static final long serialversionuid = 1L; protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { BufferedImage image = new BufferedImage(320, 200, BufferedImage.TYPE_INT_RGB); Graphics2D g = (Graphics2D)image.getGraphics(); g.setbackground(color.white); g.clearrect(0, 0, 320, 200); g.setcolor(color.black); g.drawline(0, 0, 320, 200); response.setcontenttype("image/jpeg"); OutputStream out = response.getoutputstream(); try { ImageIO.write(image, "jpg", out); catch(ioexception ioe) { System.err.println("Error writing JPEG file: " + ioe);