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

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

1 Wprowadzenie do J2EE

Architektura Model-View-Controller

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

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

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

Projektowanie aplikacji J2EE w architekturze Model-View-Controller

Komunikacja między serwletami

Piotr Laskowski Krzysztof Stefański. Java Servlets

prepared by: Programowanie WWW Servlety

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

Java Database Connectivity

Architektury Usług Internetowych. Laboratorium 1. Servlety

prepared by: Programowanie WWW Model-View-Controller

Aplikacje internetowe i rozproszone - laboratorium

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

Wzorce prezentacji internetowych


Java EE: Serwlety i filtry serwletów

Zagadnienia projektowania aplikacji J2EE

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

Architektury Usług Internetowych. Laboratorium 1 Servlety

Programowanie w języku Java

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

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

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

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

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

Java wybrane technologie spotkanie nr 3. Serwlety

JavaServer Pages. Konrad Kurdej Karol Strzelecki

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

Tworzenie aplikacji J2EE w technologii Struts

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Java wybrane technologie spotkanie nr 5. Java Server Pages

Aplikacje WWW - laboratorium

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

Serwlety i JSP na platformie Java EE. Damian Makarow

mgr inż. Michał Paluch

J2EE wzorce projektowe. Alicja Truszkowska

Kurs WWW 1. Paweł Rajba

Java Server Faces narzędzie do implementacji w wy prezentacji

Przegląd d innych rozwiąza. zań szkieletowych dla J2EE

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

Dostęp do baz danych z aplikacji J2EE

Testowanie aplikacji Java Servlets

Zaawansowane aplikacje internetowe laboratorium

Przegląd technologii JSP

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

Enterprise JavaBeans (EJB)

Programowanie komponentowe 5

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

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

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

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

Serwery aplikacji. dr Radosław Matusik. radmat

Programowanie wielowarstwowe i komponentowe JSP, JSF

Wprowadzenie do Enterprise JavaBeans 2.0

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

Enterprise JavaBeans

Zagadnienia Programowania Obiektowego Agata Hejmej

Tworzenie i wykorzystanie usług

JavaServer Faces (JSF)

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

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

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

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

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium

Wybierz kategorię Java Web i typ projektu Web Application. Kliknij przycisk Next >.

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

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

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

TIN Techniki Internetowe Lato 2005

STRUTS 2. Krystyna Bury Katarzyna Sadowska Joanna Pyc Politechnika Wrocławska Wydział Informatyki i Zarządzania Informatyka, III rok

Wybrane działy Informatyki Stosowanej

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Oracle9iAS: instalacja i konfiguracja aplikacji J2EE

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Podstawowe wykorzystanie Hibernate

Zaawansowane Aplikacje Internetowe

In»ynieria systemów informacyjnych - Adam Krechowicz

Aplikacje Internetowe, Servlety, JSP i JDBC

Wybrane działy Informatyki Stosowanej

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Java Server Faces - wprowadzenie

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium

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

Metody dostępu do danych

Programowanie obiektowe

Zastosowanie komponentów EJB typu Session

Aplikacje WWW - laboratorium

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Infrastruktura aplikacji WWW I

Transkrypt:

Serwlety Java: zagadnienia zaawansowane Data Sources Data Sources Przykład pliku data-sources.xml Obiekt Data Source stanowi logiczną definicję bazy danych programista korzysta z obiektu Data Source serwer aplikacji dokonuje odwzorowania obiektu Data Source na fizyczną bazę danych Aplikacje J2EE wykorzystują obiekty Data Source w następujący sposób: przeszukują serwis nazw przy pomocy JNDI łączą się z bazą danych przy pomocy metod klasy Connection Obiekty Data Source są zarejestrowane w drzewie JNDI <data-source class="com.evermind.sql.drivermanagerdatasource connection-driver="oracle.jdbc.driver.oracledriver" name="oracleds" location="jdbc/oracleds" xa-location="jdbc/xa/oracleds" ejb-location="jdbc/ejb/oracleds" min-connections="5" max-connections="25" username="oe" password="oe" url="jdbc:oracle:thin:@<host>:<port>:<sid>" />

Wykorzystywanie obiektów Data Sources try { Context ic = new InitialContext(); DataSource ds = (DataSource)ic.lookup("jdbc/OracleDS"); Connection conn = ds.getconnection(); catch (SQLException se) { catch (NamingException ne) { Servlet Filters javax.servlet.filter Servlet Filter: przykład Interfejs javax.servlet.filter definiuje trzy metody: void init(filterconfig) void dofilter(servletrequest, ServletResponse, FilterChain) void destroy() Metoda dofilter(): Analizuje nagłówek żądania Modyfikuje nagłówki odpowiedzi, opakowując obiekt request Modyfikuje odpowiedź, opakowując obiekt response Wywołuje kolejny filtr w łańcuchu import javax.servlet.*; import javax.servlet.filter; import java.io.*; public class HelloFilter implements Filter { private FilterConfig filterconfig; public void init(filterconfig filterconfig){ System.out.println("Filter Initialized"); public void dofilter (ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("Hello from Filter"); chain.dofilter(request, response); public void destroy(){

Konfiguracja filtrów: web.xml <filter> <filter-name>hellofilter</filter-name> <filter-class>hellofilter</filter-class> </filter> <filter-mapping> <filter-name>hellofilter</filter-name> <servlet-name>stateservlet</servlet-name> </filter-mapping> HttpSession HttpSession Obiekt HttpSession reprezentuje tożsamość klienta Tworzony przy pomocy metody getsession() obiektu HttpRequest Może być utworzony przez dowolny serwlet obsługujący żądanie klienta Może być współdzielony przez wiele serwletów HttpSession session = req.getsession(true); HttpSession - przykład public void doget( ) { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); HttpSession session = request.getsession(true); String sessionid = session.getid(); Integer sessioncount = (Integer)session.getAttribute("sessionCount"); if (sessioncount == null) { sessioncount = new Integer(0); else { sessioncount = new Integer(sessionCount.intValue() + 1); session.setattribute("sessioncount", sessioncount); out.println("<p>number of requests for the session with the id of " + "<b>" + sessionid + "</b> is: " + sessioncount);

Czas życia sesji Sesje wygasają automatycznie, lecz istnieje możliwość ich zakończenia Date dayago = new Date( System.currentTimeMillis() - 24*60*60*1000); Date hourago = new Date( ) // an hour ago Date created = new Date( session.getcreationtime()); Date accessed = new Date( ) if (created.before(dayago) accessed.before(hourago)) { session.invalidate(); session = //create new Architektura Model-View-Controller JSP Model 1 JSP Model 1 1 żadanie 4 JSP baza danych Nadchodzące żądania od przeglądarki są przekazywane bezpośrednio do aplikacji JSP, która odpowiada za ich przetwarzanie i generowanie odpowiedzi dla klientów. Architektura dla prostych zastosowań. przeglądarka odpowiedź 2 Java Bean 3

JSP Model 2 JSP Model 2 przeglądarka 1 żądanie 5 odpowiedź Serwlet (Controller) 3 JSP (View) 4 2 tworzenie Java Bean (Model) baza danych Przetwarzanie podzielone pomiędzy komponenty prezentacyjne (View) i komponenty komunikacyjne (Controller) Główna zaleta: komponenty prezentacyjne (View) nie zawierają logiki przetwarzania Pozwala to na rozdział ról programistów Komponent komunikacyjny (Controller) stanowi pojedynczy punkt wejścia do aplikacji, co umożliwia jednorodne zarządzanie stanem aplikacji, bezpieczeństwem oraz formą prezentacji Przykład: JSP Model 1 Formularz HTML

Dokument JSP JavaBean Przykład: JSP Model 2 Formularz HTML

Serwlet (getinfo) JavaBean (getdatabean) JavaBean (getdatabean) c.d. Dokument JSP (showinfo)

Elementy środowiska Struts Środowisko Java Struts Struts Servlet: moduł komunikacyjny (Controller) dla całej aplikacji J2EE Zbiór klas JavaBeans, wykorzystywanych podczas realizacji modułów modelu (Model) Zbiór bibliotek znaczników do wykorzystania przez moduły JSP Plik konfiguracyjny aplikacji: web.xml Plik konfiguracyjny aplikacji: web.xml c.d. <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <!-- Standard Action Servlet Configuration (with debugging) --> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.actionservlet</servlet-class> <init-param> <param-name>application</param-name> <param-value>applicationresources</param-value> </init-param>... </servlet> Definicja serwletu ActionServlet <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- Struts Tag Library Descriptors --> <taglib> <taglib-uri>/web-inf/struts-bean.tld</taglib-uri> <taglib-location>/web-inf/struts-bean.tld</taglib-location> </taglib>... </web-app> Skojarzenie żądań *.do z serwletem ActionServlet Definicje bibliotek znaczników Struts

Działanie serwletu ActionServlet Serwlet ActionServlet dokona automatycznego przekształcenia otrzymanych parametrów do obiektu JavaBeans, nazywanego ActionForm Serwlet ActionServlet wywoła obiekt klasy Action, który może skorzystać z obiektu Działanie serwletu ActionServlet Odwzorowanie żądania użytkownika (*.do) w konkretne klasy Action i ActionForm odbywa się w oparciu o definicje z pliku struts-config.xml: <struts-config> <form-beans> <form-bean name="submitform" type="submitform"/> </form-beans> <action-mappings> <action path="/submit" type="submitaction" name="submitform" input="/submit.jsp" scope="request"> <forward name="success" path="/submit.jsp"/> <forward name="failure" path="/submit.jsp"/> </action> </action-mappings></struts-config> Elementy struts-config.xml path - nazwa żądania "submit.do", rozszerzenie ".do" należy pominąć type - nazwa klasy Action name - nazwa logiczna elementu ActionForm (form-bean) input - strona wyświetlająca błędy walidacji scope - zasięg obiektu ActionForm (np. "session") Znaczniki "forward" definiują dalszą nawigację w przypadku otrzymania odpowiedzi "success" lub "failure" z obiektu Action Przykład: dokument JSP <%@ page language="java" %> <%@ taglib uri="/web-inf/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/web-inf/struts-html.tld" prefix="html" %> <%@ taglib uri="/web-inf/struts-logic.tld" prefix="logic" %> <html><head><title>submit example</title></head> <body><h3>example Submit Page</h3> <html:errors/><html:form action="submit.do"> Last Name: <html:text property="lastname"/><br> Address: <html:textarea property="address"/><br> Sex: <html:radio property="sex" value="m"/>male <html:radio property="sex" value="f"/>female<br> Married: <html:checkbox property="married"/><br> Age: <html:select property="age"> <html:option value="a">0-19</html:option> <html:option value="b">20-49</html:option> <html:option value="c">50-</html:option> </html:select><br><html:submit/></html:form></body></html>

Przykład: klasa ActionForm Przykład: klasa Action public final class SubmitForm extends ActionForm { /* Last Name */ private String lastname = "Hansen"; // default value public String getlastname() { return (this.lastname); public void setlastname(string lastname) { this.lastname = lastname;... public final class SubmitAction extends Action { public ActionForward perform(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { SubmitForm f = (SubmitForm) form; // get the form bean String lastname = f.getlastname(); request.setattribute("lastname", lastname.touppercase()); return (mapping.findforward("success"));