Zaawansowane Aplikacje Internetowe



Podobne dokumenty
Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Spring MVC Andrzej Klusiewicz 1/18

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Zaawansowane Aplikacje Internetowe

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

PERSON Kraków

Programowanie w internecie nazwa przedmiotu SYLABUS A. Informacje ogólne

TAJEMNICA BANKOWA I OCHRONA DANYCH OSOBOWYCH W PRAKTYCE BANKOWEJ

Politechnika Wrocławska

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

INTENSE BUSINESS INTELLIGENCE PLATFORM

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

POLITYKA PRYWATNOŚCI SKLEPU INTERNETOWEGO

API transakcyjne BitMarket.pl

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

Kompozycja i dziedziczenie klas

JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO

elektroniczna Platforma Usług Administracji Publicznej

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Automatyzacja procesu publikowania w bibliotece cyfrowej

Specyfikacja techniczna banerów Flash

Rozliczenia z NFZ. Ogólne założenia. Spis treści

System kontroli wersji SVN

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Microsoft Management Console

Integracja systemów, integracja procesów

Wartości domyślne, szablony funkcji i klas

PROJEKT. w sprawie: wyboru Przewodniczącego Nadzwyczajnego Walnego Zgromadzenia Spółki

Instrukcja Obsługi STRONA PODMIOTOWA BIP

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

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

Podstawa prawna: Ustawa z dnia 15 lutego 1992 r. o podatku dochodowym od osób prawnych (t. j. Dz. U. z 2000r. Nr 54, poz. 654 ze zm.

Polityka prywatności strony internetowej wcrims.pl

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

Poniżej instrukcja użytkowania platformy

Aplikacje internetowe i rozproszone - laboratorium

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

OPIS PRZEDMIOTU ZAMÓWIENIA DO ZAPYTANIA KE1/POIG 8.2/13

Instrukcja postępowania w celu podłączenia do PLI CBD z uwzględnieniem modernizacji systemu w ramach projektu PLI CBD2

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Instrukcja dotycząca generowania klucza dostępowego do Sidoma v8

Konfiguracja współpracy urządzeń mobilnych (bonowników).

Konfiguracja programu Outlook 2007 do pracy z nowym serwerem poczty (Exchange)

Odpowiedzi na pytania zadane do zapytania ofertowego nr EFS/2012/05/01

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Instrukcja programu PControl Powiadowmienia.

Opis instalacji systemu Intranet Komunikator

Adapter USB do CB32. MDH-SYSTEM ul. Bajkowa 5, Lublin tel./fax lub kom e mail: info@mdh-system.pl

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Konfiguracja historii plików

Warunki Oferty PrOmOcyjnej usługi z ulgą

InsERT GT Własne COM 1.0

Praca na wielu bazach danych część 2. (Wersja 8.1)

SZABLONY KOMUNIKATÓW SPIS TREŚCI

1) TUnŻ WARTA S.A. i TUiR WARTA S.A. należą do tej samej grupy kapitałowej,

Przedmiot: Projektowanie dokumentów WWW. Laboratorium 3: Strona domowa cz. III Formularze. Opracował: Maciej Chyliński

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Ewidencja abonentów. Kalkulacja opłat

PFR Wstępnie wypełnione zeznanie podatkowe. PIT-37 i PIT-38 za rok 2015

Instalacja Plugin. Rys. 1. Folder Plugin.

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

PL/SQL. Zaawansowane tematy PL/SQL

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

VLAN Ethernet. być konfigurowane w dowolnym systemie operacyjnym do ćwiczenia nr 6. Od ćwiczenia 7 należy pracować ć w systemie Linux.

MySource Matrix CMS - PROSTY INTERFEJS UŻYTKOWNIKA. INSTRUKCJA ver 1.2

INSTRUKCJA Panel administracyjny

raceboard-s Szybki start

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Instrukcja instalacji oraz wykorzystania podpisu cyfrowego

Konfiguracja Wyszukiwarki

Konfiguracja poczty. Konfiguracja poczty w Outlook (pakiet Microsoft Office)

Formularz rzeczowo-cenowy PAKIET 2

Kancelaris - Zmiany w wersji 2.50

Logowanie do systemu Faktura elektroniczna

Evidence Based Scheduling

Podatek przemysłowy (lokalny podatek od działalności usługowowytwórczej) :02:07

W dobie postępującej digitalizacji zasobów oraz zwiększającej się liczby dostawców i wydawców

Ogólna charakterystyka kontraktów terminowych

Symfonia Produkcja Instrukcja instalacji. Wersja 2013

Projektowanie bazy danych

Instrukcja UŜytkownika HaloŚląski - serwisu telefonicznego dla klientów korporacyjnych

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

Strona główna góra

Instrukcja. 1 Zamawiając kuriera. W Paczkomacie lub POK. 3 Nadając list polecony. nadawania przesyłek z Allegro: (Punkt Obsługi Klienta)

Co nowego w systemie Kancelaris 3.31 STD/3.41 PLUS

KATEDRA INFORMATYKI STOSOWANEJ PŁ ANALIZA I PROJEKTOWANIE SYSTEMÓW INFORMATYCZNYCH

Zagadnienia Programowania Obiektowego Agata Hejmej

Zagospodarowanie magazynu


Platforma do obsługi zdalnej edukacji

DE-WZP JJ.3 Warszawa,

WYJAŚNIENIA. Wyjaśniam

Logowanie do mobilnego systemu CUI i autoryzacja kodami SMS

Regulamin Usługi Certyfikat SSL. 1 Postanowienia ogólne

Transkrypt:

framework Katedra Mikroelektroniki i Technik Informatycznych Łódź, 13 października 2010

1 Wprowadzenie Informacje organizacyjne 2 3 4

Informacje o przedmiocie Informacje organizacyjne Dokładne informacje o przedmiocie znajdują się na stronie: http://neo.dmcs.p.lodz.pl/zswww/ Kontakt Wykład prowadzi: mgr inż. Doktorant w Katedrze Mikroelektroniki i Technik Informatycznych Email: pmazur@dmcs.pl Telefon: 42 631-26-51

Warunki zaliczenia Wprowadzenie Informacje organizacyjne Warunkiem zaliczenia wykładu jest pomyślne zrealizowanie projektu oraz zaliczenie kolokwium wykładowego. Projekt będzie realizowany samodzielnie. Należy zastosowań następujące biblioteki/technologie: Spring Framework 3.0. Hibernate ORM.. Spring Security

Tematyka wykładu Budowanie aplikacji internetowych w oparciu o otwarte, ogólnodostępne narzędzia korzystające z platformy J2EE. Spring Framework jako przykład kontenera IoC Spring Security jako biblioteka zabezpieczająca aplikację internetową jako silnik MVC Hibernate jako przykład biblioteki mapowania obiektowo-relacyjnego

Java Beans Wprowadzenie JavaBeans oraz EJB (Enterprise Java Beans) jest próbą usystematyzowania typów obiektów wykorzystywanych w języku Java. W założeniach twórców obiekty tworzone podczas uruchamiania aplikacji J2EE można pogrupować w kategorie. Przykładowe kategorie obiektów. Singleton Obiekt sesyjny (Stateful/Stateless Session Bean) Obiekt typu Entity (Entity Bean) Obiekt sterowany komunikatami (Message Driven Bean)

Java Beans Wprowadzenie Każdy obiekt typu Bean musi spełniać pewne wymagania: Bezargumentowy konstruktor Wszystkie pola powinny być zakresu prywatnego Dostęp do pól odbywa się za pomocą akcesorów get/set

Java Beans Wprowadzenie Uzasadnienie wymagań: Z początku metody typu get/set miały umożliwić kontrolę dostępu do pól klasy Z czasem umożliwiły jednak usprawnianie działania beanów za pomoca generacji kodu Bezargumentowy konstruktor umozliwia automatyczne tworzenie nowych instancji obiektów

Proxy Wprowadzenie Większość bibliotek opisywanych na wykładzie korzysta z tzw: Proxy aby usprawnić działanie beanów. Korzystanie z obiektów typu proxy pozwala na wstawienie dodatkowego kodu do klasy. Przykłady proxy: JDK 1.4 Proxy (Interfejs) CGLIB Proxy JavaAssist Proxy

Spring Framework Spring Framework jest (między innymi) kontenerem typu IoC (Inversion of Constrol) umożliwiającym tzw: Wstrzykiwanie Zależności (Dependency Injection - DI). za pomocą plików XML i/lub annotacji Deklaratywna transakcyjność oraz współpraca z wieloma popularnymi bibliotekami ORM (@Transactional) Warstwa MVC do budowania aplikacji internetowych opartych na platformie J2EE Dodatkowe klasy usprawniające pracę aplikacji (Obsługa wysyłania wiadomości E-Mail, Raportowanie itd..)

Spring Security Wprowadzenie Biblioteka powstała z włączenia ACEGI Security do projektu Spring. Udostępnia interfejs zabezpieczania aplikacji oparty na rolach oraz uprawnieniach (ACL - Access Control List). Korzysta z AOP w celu umożliwienia zabezpieczania wykonania metod (annotacja @Secured). Umożliwia kontrolę dostępu z poziomu kontrolera MVC Kontrola dostępu z poziomu widoku: tag: ifallgranted

Wprowadzenie Implementacja modelu MVC przygotowywana przez Apache Software Foundation. Prosta w konfiruacji Mechanizm oparty na wykonywaniu akcji Implementacja kontrolera w oparciu o przestrzenie nazw oraz wyniki akcji Intensywne wykorzystanie polityki Convention over Configuration

Framework

Framework przygotowany przez Apache Software Foundation powstały z połączenia frameworków WebWork 2 oraz Struts Podejście do aplikacji internetowych na zasadzie Akcja - Rezultat Grupowanie akcji za pomocą pakietów Rozbudowany system wyzwalaczy (Interceptors) Podejście Convention over Configuration

Przykładowy plik konfiguracyjny struts.xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> </struts> Przy budowaniu aplikacji zaleca się uruchomienie trybu deweloperskiego: struts.xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devmode" value="true" /> </struts>

Plik konfiguracyjny struts.xml może zawierać wiele sekcji, przykłady: Sekcja pakietów package Sekcja definicji akcji action Sekcja interceptorów interceptors Sekcja wyników result-types Sekcja obsługi wyjątków global-exception-mappings Sekcje opisane są szczegółowo na stronie http://struts.apache.org/2.x/docs/configurationelements.html

Wraz z rozwojem kolejne części pliku konfiguracyjnego zostały sukcesywnie zastępowane annotacjami. Obecnie większość konfiguracji może odbywać się bez ingerencji w plik konfiguracyjny. Pozostają jednak elementy które powinny się w pliku znaleźć np: stałe Przykłady stałych <constant name="struts.devmode" value="true" /> <constant name="struts.action.extension" value="do" /> <constant name="struts.url.includeparams" value="none" /> Definicje stałych nie są prezycyjnie określone, nowe stałe mogą być definiowane w dodatkowych pluginach

Migracja konfiguracji z pliku do annotacji, oraz wykorzystywanie konwencji powiązanej z poszczególnymi elementami to przykład Convention over Configuration Polityka ta została wprowadzana wraz z kolejnymi wersjami frameworku w postaci pluginów codebehind oraz zastępującego go convention plugin Aby dodać plugin do wystarczy zwykle przegrać odpowiedni plik.jar - funkcjonalność zostanie automatycznie uruchomiona przy starcie frameworka.

Przydatne pluginy Convention Plugin - uruchamia mechanizmy Convention over configuration Config Browser Plugin - panel administracyjny prezentujący listę akcji, wyników oraz interceptorów Tiles Plugin/Sitemesh Plugin - pluginy integrujące z bibliotekami ułatwiającymi budowanie rozkładu stron Spring Plugin - integracja ze Spring Framework JSON Plugin - przdstawienie wyniku w postaci JSON JasperReports Plugin - obsługa raportowania za pomocą biblioteki JasperReports

Przykładowa aplikacja korzystająca z Convention over configuration Plik konfiguracyjny <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devmode" value="true" /> <constant name="struts.convention.action.packages" value="org.app"/> </struts> Stała struts.convention.action.packages pozwala na ustawienie głównego pakietu do poszukiwania akcji. Framework przeskanuje wszystkie klasy znajdujące się w tym pakiecie w poszukiwaniu akcji które można wykonać.

Przykładowa klasa akcji Wprowadzenie org.app.actions.test.java package org.app.actions; public class Test extends ActionSupport{ } @Override public String execute() throws Exception { System.out.println("Przykładowa akcja "); return SUCCESS; } Jeżeli został uaktywniony plugin convention akcja jest od razu dostępna pod adresem: http://serwer/aplikacja/actions/test.action Nazwa pakietu względem stałej struts.convention.action.packages oraz nazwa klasy zostały uwzględnione w adresie. Nazwa akcji podlega konwersji do camelcase

W poprzednim przykładzie nazwa pakietu względem stałej struts.convention.action.packages to tzw: Przestrzeń Nazw (namespace) Przestrzenie nazw bezpośrednio mapują się na adresy URL Przestrzeń nazw każdej akcji można nadpisać: dodając do klasy akcji annotację @Namespace @Namespace("/mynamespace") public class Test extends ActionSupport{ } @Override public String execute() throws Exception { System.out.println("Przykładowa akcja "); return SUCCESS; }

Co się stanie po wykonaniu akcji? Po wykonaniu akcji następuje wykonanie jednego z możliwych rezultatów Jeżeli uaktywniony jest convention plugin a nie został zdefiniowany rezultat akcji zostanie automatycznie zaprezentowana strona: \WEB-INF\content\przestrzen_nazw\nazwa_akcji.jsp

Przykład akcji ze zdefiniowany rezultatem @Result(name="success", location="aaa.jsp") public class Test extends ActionSupport{ } @Override public String execute() throws Exception { System.out.println("Przykładowa akcja "); return SUCCESS; } Korzystając z konfiguracji w poprzednich przykładach zostanie zaprezentowany plik: /WEB-INF/content/actions/aaa.jsp

Wykonanie danego rezultatu zależy od wartości zwróconej przez metodę execute() Wartośc zwrócona przez metodę execute() jest typu String

Przykład akcji z wieloma rezultatami @Results({ @Result(name="success",location="aaa.jsp"), @Result(name="input", location="bbb.jsp"), @Result(name="myresult",location="myresult.jsp") }) public class Test extends ActionSupport{ private Integer test=0; @Override public String execute() throws Exception { if (test==0) return SUCCESS; if (test>1 && test<10) return INPUT; else return "myresult"; } public Integer gettest() { return test; } } public void settest(integer test) { this.test = test; }

W powyższym przykładzie została wprowadzona zmienna typu Integer test Zmienna ta zostanie automaytycznie ustawiona przez framework na jedną z wartości: Przekazanej w adresie url: test=6 Przekazanej poprzez formularz <input type="text" name="test" />

posiada kilka wbudowanych typów rezultatów DispatcherResult - domyślny StreamResult - jeżeli resultatem ma być strumień binarny (np: download pliku, obrazek) PlainTextResult - serwuje statyczne pliki tekstowe/html RedirectActionResult - przekierowanie na inną stronę Przekierowanie do innej akcji @Result(name="myresult", type="redirectaction", params={"actionname","zosia"})

Strona wyświetlona poprzez uruchomienie rezultatu jest zwykłą stroną JSP dostarcza rozbudowaną bibliotekę tagów, które integrują się z frameworkiem - nie ma jednak konieczności korzystania z nich strona.jsp - wyświetlenie wartości zmiennej test z akcji <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> Wartość zmiennej test: <s:property value="test" />

Prosty formularz form.jsp <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <s:form action="formularz"> <s:textfield name="zmienna"></s:textfield> <s:submit value="ok"></s:submit> </s:form> Po wysłaniu formularza zostaniemy przekierowani do akcji formularz jeżeli ta akcja będzie posiadała pole zmienna zostanie ono ustawione wartością z formularza.