181 JAVA – JSP Java EE training: JAVA SERVER PAGES PODSTAWY.

Slides:



Advertisements
Podobne prezentacje
Wstęp do strumieni danych
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
Java dla studentów II roku Wydziału Fizyki PW Przemysław Duda, 2012
Mgr inż.Marcin Borkowski Podstawy Java Część II
Programowanie obiektowe
Programowanie obiektowe Andrzej Ziółkowski Wykład 3.
Klasy i obiekty.
Wzorce.
PROGRAMOWANIE STRUKTURALNE
Tworzenie i obsługa programów – przykład 3 uwagi cd. Wykorzystując różne klasy biblioteki języka Java należy pamiętać w jakim pakiecie się znajdują. Wszystkie.
Nguyen Hung Son Uniwersytet Warszawski
Programowanie obiektowe w Javie
Serwery Aplikacji ASP .NET Web Objects Arkadiusz Popa.
Model – View - Controler
Tworzenie ASP.NET Web Form
Bartosz Walter Inżynieria oprogramowania Lecture XXX JavaTM – część II Bartosz Walter
Gniazda komunikacji sieciowej w języku Java
Platforma J2EE korporacyjny standard wytwarzania złożonych systemów informatycznych Autor: Jarosław Lis Warszawa, 2006r.
Wzorce projektowe w J2EE
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.

Zarządzanie stanem aplikacji Mechanizm Sesji
Język Java Wielowątkowość.
Projektowanie warstwy serwera DisplayTag. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Projektowanie warstwy serwera Acegi. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.
Projektowanie warstwy serwera Spring MVC - uzupełnienie.
Projektowanie warstwy serwera Znaczniki jsp. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Projektowanie warstwy serwera Wprowadzenie. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Technologia JSP.
Serializacja Serializacja pozwala zamienić obiekt na sekwencję bajtów, w sposób umożliwiający później wierne odtworzenie jego zawartości Inna nazwa to.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Aplikacje Internetowe
Integracja aplikacji Wykład 2
Transakcje zarządzane kontenerem
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Tworzenie aplikacji mobilnych
Tworzenie aplikacji mobilnych
Programowanie obiektowe – zastosowanie języka Java SE
JAVA.
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Inicjalizacja i sprzątanie
Seminarium problemowe
Wykonał: Michał Nikołajuk
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Systemy zarządzania treścią Wykład 5
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
XML Publisher Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przeznaczenie XML Publisher Przeznaczenie XML Publisher Definiowanie Definiowanie.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
Technologie internetowe Wykład 7 Kontrola danych użytkownika.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Podstawy języka skryptów
Prom Pisanie pluginów Maciej Sobkowiak & Tomek Ciesielczyk.
Elementy JavaServer Pages. Dyrektywy JSP  Elementy dyrektyw używane są do określania tej informacji o stronie, która pozostaje bez zmiany między żądaniami.
Paweł Starzyk Obiektowe metody projektowania systemów
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Zarządzanie stanem w aplikacjach ASP.NET Elżbieta Mrówka-Matejewska
Tworzenie dokumentacji w systemie Doxygen Paweł Strużyński 25 maja 2011.
Programowanie Obiektowe – Wykład 6
(według:
Programowanie Obiektowe – Wykład 2
Klasy wewnętrzne. Praktyka użycia interfejsów i klas wewnętrznych
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
Aplikacje i usługi internetowe
Zapis prezentacji:

181 JAVA – JSP Java EE training: JAVA SERVER PAGES PODSTAWY

182 Źródło strony JSP <%-- Document : index Created on : , 15:47:11 Author : Paolo --%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " JSP Page Hello World!

183 Wygenerowany servlet package org.apache.jsp; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory(); private static java.util.Vector _jspx_dependants; private org.apache.jasper.runtime.ResourceInjector _jspx_resourceInjector; public Object getDependants() { return _jspx_dependants; } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { }

184 Metoda _jspService standardowe zmienne lokalne.... PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; JspWriter _jspx_out = null; PageContext _jspx_page_context = null; try { response.setContentType("text/html;charset=UTF-8"); response.setHeader("X-Powered-By", "JSP/2.1"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; _jspx_resourceInjector = (org.apache.jasper.runtime.ResourceInjector) application.getAttribute("com.sun.appserv.jsp.resource.injector"); }

185 Metoda _jspService cd..... out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n"); out.write(" \" out.write("\n"); out.write(" JSP Page \n"); out.write(" \n"); out.write(" Hello World! \n"); out.write(" \n"); } catch (Throwable t) { if (!(t instanceof SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) out.clearBuffer(); if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); } } finally { _jspxFactory.releasePageContext(_jspx_page_context); } }......

186 Predefiniowane zmienne request – Pierwszy argument metody do obsługi parametrów żądania(typ obiektu HttpServletRequest) response – Drugi argument metody do obsługi odpowiedzi (typ obiektu HttpServletResponse ) out – Obiekt do generowania odpowiedzi przez servlet,(typ obiektu JspWriter) wykorzystuje buforowanie session – Obiekt do obsługi mechanizmu sesji związanej z żądaniem (typ obiektu HttpSession) Mechanizm sesji może być wyłączony przez dyrektywę page application – obiekt do obsługi zmiennych dostępnych w całej aplikacji webowej (typ obiektu ServletContext) Dostęp uzyskany jest przez metodę getServletContext().

187 Elementy stron jsp Skryptlety Komentarze Dyrektywy Deklaracje Wyrażenia Akcje

188 Wyrażenia (Expressions) out.print( MyElements.JSPElement.Add(2, 3) ); out.print( new MyElements.JSPElement().Subtract(2, 3) ); public class JSPElement { public static double Add(double a, double b) { return a+b; } public double Subtract(double a, double b) { return a-b; }

189 Wyrażenia cd (Składnia XML) Uwaga nie można mieszać znaczników XML ze standardowymi na jednej stronie Java Expression

190 Skryplety Format – Wynik Kod zostaje wstawiony Bezpośrednio do metody _jspService Przykład <% String queryData = request.getQueryString(); out.println(" Parametry zadania GET " + queryData); %> Składnia w formacie XML Java Code

191 Skryplety przykład Color Testing <% String bgColor = request.getParameter("bgColor"); if ((bgColor == null)||(bgColor.trim().equals(""))){ bgColor = "WHITE"; } %> "> Test zmiany koloru tła " ".

192 Skryplety właściwości Skryplety są wstawiane w servlet dokładnie tak jak zostały napisane, Niekoniecznie muszą tworzyć pełne wyrażenia w języku Java, Jednak pełne wyrażenia są barziej przejżyste łatwiejsze do analizy Przykład: Have a nice day! Have a lousy day! Kod wynikowy w servlecie – if (Math.random() < 0.5) { out.println("Have a nice day!"); } else { out.println("Have a lousy day!"); }

193 Deklaracje Format Wynik Kod jest wstawiany do definicji klasy servletu poza istniejącymi metodami Przykład Składnia w formacie XML Java Code Uwagi: Pola są użyteczne. Deklaracje metod lepiej jest definiować w osobnych klasach

194 Deklaracje: przykład Kod strony JSP Some Heading <%! private String randomHeading() { return(" " + Math.random() + " "); } %>

195 Deklaracje: Przykład Kod Servletu public class xxxx implements HttpJspPage { private String randomHeading() { return(" " + Math.random() + " "); } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); HttpSession session = request.getSession(); JspWriter out = response.getWriter(); out.println(" Some Heading "); out.println(randomHeading());... }... } // koniec servletu

196 Delklaracje Przykład 2 JSP Declarations <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> JSP Declarations Accesses to page since server reboot:

197 Metody init i destroy w stronach JSP Strony JSP mogą wymagać wywołania metod init i destroy Servlet wygenerowny ze strony JSP może już wykorzystywać te funkcje Nie można więc wykorzystać deklaracji do ich zdefiniowania, gdyż spowoduje to problemy Rozwiązanie: Przeładwać funkcje jspInit i jspDestroy. Automatycznie generowane servlety wywołują te funkcje, których ciało w wersji podstawowej jest puste

198 Dyrektywy

199 Dyrektywa page import Format Wynik Dodaje instrukcje import do definicji servletu Uwagi Klasy wykorzystywane przez strony JSP muszą być zawarte w pakietach (czyli umieszczoene w odpowiednich katalogach np..: …/WEB-INF/classes Przykład

200 Dyrektywa page contentType Format Wynik Określa tym MIME strony generowanej przez servlet utworzony na podstawie definicji strony JSP Uwagi – Wartość atrybutu nie może być określona podczas obsługi żądania Przykład

201 Dyrektywa page contentType cd Ustawienie atrybutu contentType nie może być wyrażeniem warunkowycm Poniższy kod powoduje ustawienie typu MIME ( application/vnd.ms- excel) niezależnie od parametrów żądania Trzeba wykorzystać skryplet i wywołać metodę response.setContentType <% String format = request.getParameter("format"); if ((format != null) && (format.equals("excel"))) { response.setContentType("application/vnd.ms-excel"); } %>

202 Dyrektywa page session Format Wynik Określa czy na dana strona implementuje mechanizm Sesji Uwagi Domyślnie ustawiona na true Wyłącznie pozwala zaoszczędzić pamięć w przypadku bardzo obciążonego serwera 16

203 Dyrektywa page buffer Format Wynik Określa rozmiar bufora wykorzystywanego przez zmienną out Uwagi Buforowanie umożliwia ustawienie nagłówków HTTP nawet jeśli pewna część strony została już wygenerowana (dopuki buffor nie został zapełniony lub celowo opróżniony) Serwer może zastosować większy buffor niż zdefiniowano (nie mniejszy)

204 Dyrektywa page errorPage Format Wynik Określa stronę JSP przeznaczonej do obsługi wyjątku wygenerowanego leczni nie przechwyconego przez bierzącą stronę. Uwagi Wygenerowany wyjątek jest dosteępny automatycznie dla docelowej strony JSP prze zmienną exception Plik konfiguracyjny web.xml pozwala na zdefniowanie wielu stron do obsługi konkretnych wyjątków bądź błędów HTTP

205 Dyrektywa page isErrorPage Format Wynik Określa że bierząca strona bezie stroną przeznaczoną do obsługi błędów generowanych przez inną stronę JSP Uwagi Tworzona jest dodatkowo zmienna o nazwie exception Należy przechwytywać jak najwięcej wyjątków mechanizm stron do obsługi błędów stosować w sytuacjach wyjątkowych

206 Dyrektywa page extends Format Wynik Określa klasę bazową dla wygenerowanego na podstawie strony JSP servletu Uwagi Stosować rozważnie Typowe zastosowanie to wykorzystanie klas dostarczonych przez producenta serwera, na którym uruchamiana jest aplikacja (np.. Identyfikacja użytkownika itp.)

207 Inne dyrektywy Format Wynik Informacja dla systemu, że kod nie jest bezpieczny (threadsafe), więc sysem powinien wyłączyć wspólny dostęp do zasobów dla innych wątków Zazwyczaj oznacza to że servlet impelmentuje SingleThreadModel Uwagi Unikać, Powoduje degradację wydajności Format Wynik Włącza bądź wyłącza JSP 2.0 Expression Language

208

209 JSP Expressions – Format: – Wrapped in out.print and inserted into _jspService JSP Scriptlets – Format: – Inserted verbatim into the servlets _jspService method JSP Declarations – Format: –Inserted verbatim into the body of the servlet class Predefined variables – request, response, out, session, application Limit the Java code that is directly in page – Use helper classes, beans, servlet/JSP combo (MVC), JSP expression language, custom tags XML Syntax – There is alternative JSP syntax that is sometimes useful when generating XML-compliant documents. But is more trouble than it is worth for most HTML applications