Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Rozměr: px
Začít zobrazení ze stránky:

Download "Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů"

Transkript

1 Tvorba informačních systémů 1/46 Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009

2 Tvorba informačních systémů 2/46 Úvod Obsah Model Objektově-relační mapování () Login a zamezení neoprávněného přístupu k akcím Vzhled aplikace

3 Tvorba informačních systémů 3/46 Úvod Ukázková aplikace exam/exam6/samplestruts2app.zip

4 Tvorba informačních systémů 4/46 Model Model Struts2 nedefinuje způsob implementace modelu (tzv. doménových či business objektů) Doménové objekty tedy můžeme implementovat jako: Třídy JavaBean (JB) komponenty Enterprice JavaBean (EJB) komponenty... Doménové objekty nejčastěji reprezentují záznam z tabulky, součástí modelu je i tzv. objektově-relační mapování (), které mapuje relace databáze na tyto objekty. můžeme naimplementovat nebo použijeme nějaký rámec (např. JPA/Hibernate).

5 Tvorba informačních systémů 5/46 Model Strategie držení spojení s databázovým systémem Při implementaci přístupu můžeme uplatnit tyto strategie: Otevřít spojení pro každý požadavek, vykonat jej a pak spojení zrušit (neefektivní, otevření spojení je časově náročnější operace). Otevřít spojení pro každého uživatele a uchovávat jej v session (pouze pro malý počet uživatelů). Sdílet "pool" otevřených spojení mezi všemi uživateli (nejčastější).

6 Tvorba informačních systémů 6/46 Na následujících slidech si ukážeme pomocí Hibernate, který bude do Struts2 integrován pomocí rámce Spring. Hibernate následně přistupuje do databáze SQL Server Poznámka: Využití těchto rámců nad J2EE nevyžaduje instalaci, je reprezentováno jar soubory, které jsou začleněny do projektu resp. do výsledného war souboru.

7 Tvorba informačních systémů 7/46 Příklad V následující ukázce vysvětlíme všechny kroky nutné pro zobrazení záznamů z tabulky Person v tabulce, formuláře pro vložení nového/editaci existujícího záznamu a akci pro zrušení vybraného záznamu.

8 Tvorba informačních systémů 8/46 Příklad, sql/create.sql pro SQL Server 2008 CREATE TABLE Person ( i d INT NOT NULL PRIMARY KEY IDENTITY, l o g i n VARCHAR( 6 ) UNIQUE, VARCHAR( 5 0 ) UNIQUE NOT NULL, password VARCHAR( 2 0 ) NOT NULL, firstname VARCHAR( 2 0 ) NOT NULL, middlename VARCHAR( 2 0 ), secondname VARCHAR( 2 0 ) NOT NULL, 2 VARCHAR( 5 0 ), i n s t i t u t i o n VARCHAR( ) NOT NULL, web VARCHAR( 7 0 ) ) ; CREATE INDEX Person_login ON Person ( l o g i n ) ; CREATE INDEX Person_ ON Person ( ) ; CREATE INDEX Person_secondName ON Person ( secondname ) ;

9 Tvorba informačních systémů 9/46 1 package model ; 2 import javax. persistence. E n t i t y ; 3 import javax. persistence. Id ; 5 public class Person { 7 private S t r i n g l o g i n ; 8 private S t r i n g ; 9 private S t r i n g password ; 10 private S t r i n g firstname ; 11 private S t r i n g middlename ; 12 private S t r i n g secondname ; 13 private S t r i n g 2 ; 14 private S t r i n g i n s t i t u t i o n ; 15 private S t r i n g web ; Řádky 4 a 6: Všimněte si tzv. anotací metadat o třídách, atributech případně metodách. Příklad, 1. krok, model.person 1/2 Třída model.person reprezentuje doménový objekt, v tomto případě představuje záznam z tabulky Person.

10 Tvorba informačních systémů 10/46 Příklad, 1. krok, model.person 2/2 1 public S t r i n g getlogin ( ) { 2 return l o g i n ; 3 } 4 5 public void setlogin ( S t r i n g l o g i n ) { 6 this. l o g i n = l o g i n ; 7 } public S t r i n g getweb ( ) { 12 return web ; 13 } public void setweb ( S t r i n g web ) { 16 this. web = web ; 17 } 18 } Popis: Třída musí obsahovat set/get metody pro všechny atributy, konvence stejná jako u JavaBean.

11 Tvorba informačních systémů 11/46 Příklad, 1. krok, Popis model.person je tzv. EJB entity bean instance reprezentuje entitu napříč různými session a přístupnou různými klienty. Součást Java Persistence API (JPA) 1 API pro. Entity bean tvoří vrstvu mezi klientem databáze a databázovým systémem (vývojář se nemusí starat o schéma relace, řízení spojení s databází,...). Ve třídě využíváme tzv. EJB3/JPA anotace 2 jedná se o perzistentní definuje atribut, který je součástí identity objektu (tedy primární hodnota atributu (často primárního klíče) je generována

12 Tvorba informačních systémů 12/46 Řádek 6: Vrat všechny entity poměrně nebezpečná metoda (uživatel v GUI vidí z celé tabulky jen několik záznamů). Řádek 10: Vrat entitu dle hodnoty klíče Příklad, 2. krok, service.personservice Nyní musíme definovat tzv. business logiku, tedy operace které budeme nad entitami stejného typu provádět. Nejprve definujeme rozhraní PersonService: 1 package s e r v i c e ; 2 import java. u t i l. L i s t ; 3 import model. Person ; 4 5 public interface PersonService { 6 public L i s t <Person > f i n d A l l ( ) ; 7 public void update ( Person Person ) ; 8 public void i n s e r t ( Person Person ) ; 9 public void d e l e t e ( S t r i n g l o g i n ) ; 10 public Person f i n d ( S t r i n g l o g i n ) ; 11 }

13 Tvorba informačních systémů 13/46 Řádky 9 a 13: anotace Příklad, 3. krok, service.personserviceimpl 1/3 Nyní musíme definovat implementaci rozhraní jedná se o EJB session bean (doménový objekt je EJB entity bean). 1 package s e r v i c e ; 2 import java. u t i l. L i s t ; 3 import javax. persistence. EntityManager ; 4 import javax. persistence. PersistenceContext ; 5 import javax. persistence. Query ; 6 import org. springframework. t r a n s a c t i o n. annotation. T r a n s a c t i o n a l ; 7 import model. Person ; 8 10 public class PersonServiceImpl implements PersonService { 11 private EntityManager em; public void setentitymanager ( EntityManager em ) { 15 this.em = em; 16 }

14 Tvorba informačních systémů 14/46 Příklad, 3. krok, service.personserviceimpl 2/3 ( " unchecked " ) 2 public L i s t <Person > f i n d A l l ( ) { 3 Query query = em. createquery ( " s e l e c t p FROM Person p " ) ; 4 return query. g e t R e s u l t L i s t ( ) ; 5 } 6 7 public void update ( Person person ) { 8 em. merge ( person ) ; 9 } public void i n s e r t ( Person person ) { 12 em. merge ( person ) ; 13 } Popis: K databázi přistupujeme zprostředkovaně přes entity manager. Řádek 3: Všimněte si SQL dotazu ve kterém figuruje doménový objekt.

15 Tvorba informačních systémů 15/46 Příklad, 3. krok, service.personserviceimpl 3/3 1 public void d e l e te ( S t r i n g l o g i n ) { 2 Person person = f i n d ( l o g i n ) ; 3 i f ( person! = null ) { 4 em. remove ( person ) ; 5 } 6 } 7 8 public Person f i n d ( S t r i n g l o g i n ) { 9 return em. f i n d ( Person. class, l o g i n ) ; 10 } private EntityManager getentitymanager ( ) { 13 return em; 14 } 15 }

16 Tvorba informačních systémů 16/46 Příklad, View personlist.jsp persondetail.jsp

17 Tvorba informačních systémů 17/46 Příklad, 4. krok, Akce 1/3 person_list zobrazeni záznamů v tabulce person_delete zrušení vybraného záznamu person_update aktualizace vybraného záznamu person_insert vložení nového záznamu persondetail nabídnutí formuláře s možností aktualizace existujícího popř. vložení nového záznamu

18 Tvorba informačních systémů 18/46 Příklad, 4. krok, Akce 2/3, personlist.jsp

19 Tvorba informačních systémů 19/46 Příklad, 4. krok, Akce 3/3, persondetail.jsp

20 Tvorba informačních systémů 20/46 Příklad, 4. krok, WEB-INF/classes/struts.xml 1/ <constant name= " s t r u t s. o b j e c t F a c t o r y " value= " s p ring " / > < a c t i o n name= " person_ " class=" personaction " method= " { 1 } " > 5 < r e s u l t >WEB INF / pages / person / p e r s o n L i s t. j s p < / r e s u l t > 6 < r e s u l t name= " i n p u t " >WEB INF / pages / person / persondetail. j s p < / r e s u l t > 7 < / a c t i o n >... Řádek 2: Integrace Spring do Struts2. Řádky 4 7: Sdružení akcí person_{list, delete, update, insert}. Pokud kontroler zachytí akci, pak předá řízení objektu personaction a metodě list, delete, update nebo insert. V případě aktualizace/vložení záznamu, může validace detekovat chybně zadanou hodnotu. V takové případě je vrácen persondetail.jsp, jinak je vrácen personlist.jsp.

21 Tvorba informačních systémů 21/46 Příklad, 4. krok, WEB-INF/classes/struts.xml 2/ < a c t i o n name= " persondetail " class=" personaction " method= " f i n d " > 3 < r e s u l t >WEB INF / pages / person / persondetail. j s p < / r e s u l t > 4 < / a c t i o n > 5... Řádky 2 4: Akce pro zobrazení formuláře pro zadání hodnot atributů (pro možnou aktualizaci/vložení záznamu). Pokud se jedná o aktualizace, metoda find najde instanci Person, jejichž hodnoty jsou zobrazeny ve formuláři. Pokud bychom používali čistý Strut2, pak by hodnotou atributu class byl název akční třídy, např. action.personaction.

22 Tvorba informačních systémů 22/46 Příklad, 5. krok, WEB-INF/applicationContext.xml 1/2 WEB-INF/applicationContext.xml je soubor pro konfiguraci rámce Spring, který nám zpřístupní Hibernate pro Struts <bean i d = " personservice " class=" s e r v i c e. PersonServiceImpl " / > 3 <bean i d = " personaction " scope= " prototype " 4 class=" a c t i o n. PersonAction " > 5 < c o n s t r u c t o r arg r e f = " personservice " / > 6 < / bean> 7... Řádek 3: Definujeme objekt personservice jako instanci třídy service.personserviceimpl (session bean pracující s entitami instancemi Person). Řádky 4 6: Spojíme akční objekt Struts2 personaction (třídy action.personaction) s objektem personservice.

23 Tvorba informačních systémů 23/46 Příklad, 5. krok, WEB-INF/applicationContext.xml 2/2 Definice entity manageru využívající jako datový zdroj SQL Server <bean i d = " entitymanagerfactory " 2 class=" org..... orm. jpa. LocalContainerEntityManagerFactoryBean " > 3 < p r o p e r t y name= " datasource " r e f = " datasource " / > 4 < p r o p e r t y name= " persistenceunitname " value= " pun " / > 5 < p r o p e r t y name= " jpavendoradapter " > 6 <bean class = " org..... orm. jpa. vendor. HibernateJpaVendorAdapter " > 7 < p r o p e r t y name= " database " value= "SQL_SERVER" / > 8 < p r o p e r t y name= " showsql " value= " t r u e " / > 9 < / bean> 10 < / p r o p e r t y > 11 < / bean> 12 <bean i d = " datasource " 13 class = " org. springframework. jdbc. datasource. DriverManagerDataSource " > 14 < p r o p e r t y name= " driverclassname " 15 value= " net. sourceforge. j t d s. jdbc. D r i v e r " / > 16 < p r o p e r t y name= " u r l " value= " j d b c : j t d s : s q l s e r v e r : / / win456. vsb. cz " / > 17 < p r o p e r t y name= " username " value= " t i s " / > 18 < p r o p e r t y name= " password " value= " t i s " / >< / bean>

24 Tvorba informačních systémů 24/46 Příklad, 6. krok, action.personaction 1/5 1 package a c t i o n ; 2 import java. u t i l. L i s t ; 3 import model. Person ; 4 import s e r v i c e. PersonService ; 5 import com. opensymphony. xwork2. Action ; 6 import com. opensymphony. xwork2. Preparable ; 7 import com. opensymphony. xwork2. ActionSupport ; 8 public class PersonAction extends ActionSupport implements Preparable { 9 private PersonService s e r v i c e ; 10 private L i s t <Person > persons ; 11 private Person person ; 12 private S t r i n g l o g i n ; 13 private S t r i n g r e s u l t ; Řádek 10: Uložení kolekce záznamů z databáze (zobrazení v personlist.jsp). Řádek 11: Uložení jednoho záznamu z databáze (pro a z formuláře persondetail.jsp). Řádek 12: Uložení hodnoty klíče (např. pro person_delete).

25 Tvorba informačních systémů 25/46 Příklad, 6. krok, action.personaction 2/5 1 public PersonAction ( PersonService s e r v i c e ) { 2 this. s e r v i c e = s e r v i c e ; 3 } 4 apache. s t r u t s 2. i n t e r c e p t o r. v a l i d a t i o n. S k i p V a l i d a t i o n 6 public S t r i n g l i s t ( ) { 7 this. persons = s e r v i c e. f i n d A l l ( ) ; 8 return Action.SUCCESS; 9 } Řádek 5: Anotace - při této akci nebudou validovány položky vstupního formuláře pravidly ze souboru PersonAction-validation.xml (uložené v person). Řádek 7: Využití metody session bean PersonService vracející všechny záznamy z tabulky Person.

26 Tvorba informačních systémů 26/46 Příklad, 6. krok, action.personaction 3/5 1 public S t r i n g update ( ) { 2 S t r i n g r e t ; 3 t r y { 4 this. s e r v i c e. update ( person ) ; 5 this. person = new Person ( ) ; 6 setresult ( gettext ( " updatedone " ) ) ; 7 r e t = l i s t ( ) ; 8 } 9 catch ( Exception e ) { 10 setresult ( gettext ( " updatefailed " ) ) ; 11 r e t = Action. INPUT ; 12 } 13 return r e t ; 14 } Řádek 4: Využití metody session bean PersonService vracející všechny záznamy z tabulky Person. Řádky 6 a 10: Nastavení výsledku který se vypíše na výstupním formuláři. Řádky 7 a 11: Nastavení výsledku akce (ve struts.xml jsou pak nastaveny výstupní jsp stránky pro jednotlivé výsledky).

27 Tvorba informačních systémů 27/46 Příklad, 6. krok, action.personaction 4/5 1 public S t r i n g i n s e r t ( ) { 2 S t r i n g r e t ; 3 4 t r y { 5 this. s e r v i c e. i n s e r t ( person ) ; 6 this. person = new Person ( ) ; 7 8 setresult ( gettext ( " insertdone " ) ) ; 9 r e t = l i s t ( ) ; 10 } 11 catch ( Exception e ) { 12 setresult ( gettext ( " i n s e r t F a i l e d " ) ) ; 13 r e t = Action. INPUT ; 14 } 15 return r e t ; 16 } Obdoba metody update. Problém: V catch se zachytává pouze jeden typ výjimky. Uživateli tedy nenabídneme výpis konkrétní chyby.

28 Tvorba informačních systémů 28/46 Příklad, 6. krok, action.personaction 5/5 apache. s t r u t s 2. i n t e r c e p t o r. v a l i d a t i o n. S k i p V a l i d a t i o n 2 p u b l i c S t r i n g d e l e t e ( ) { 3 s e r v i c e. d e l ete ( l o g i n ) ; 4 r e t u r n l i s t ( ) ; 5 } apache. s t r u t s 2. i n t e r c e p t o r. v a l i d a t i o n. S k i p V a l i d a t i o n 7 p u b l i c S t r i n g f i n d ( ) { 8 i f ( l o g i n! = n u l l ) 9 { 10 person = s e r v i c e. f i n d ( l o g i n ) ; / / update 11 } 12 r e t u r n Action.SUCCESS; 13 } Řádky 1 a 6: Anotace - při této akci nebudou validovány položky vstupního formuláře. Řádky 3 a 10: Využití metod session bean PersonService. Řádek 14: get/set metody pro jednotlivé atributy.

29 Tvorba informačních systémů 29/46 Příklad, personlist.jsp 1/2 Instanci persons akční třídy můžeme do tabulky vložit ručně, nebo můžeme využít existující značku (nemusíme řešit stránkování apod.). V tomto případě využíváme značku display:tag < d i s p l a y : table name= " persons " pagesize= " 10 " s o r t = " l i s t " 3 requesturi= " " class=" d i v. datatable " > 4 < d i s p l a y : column value= " Delete " u r l = " / person_delete " 5 paramid= " l o g i n " paramproperty= " l o g i n " / > 6 < d i s p l a y : column value= " Update " u r l = " / persondetail " 7 paramid= " l o g i n " paramproperty= " l o g i n " / > Řádky 4 7: Nastavení parametru login pro akce person_delete a persondetail. 3

30 Tvorba informačních systémů 30/46 Příklad, personlist.jsp 2/2 1 < d i s p l a y : column p r o p e r t y = " l o g i n " t i t l e K e y = " l o g i n " / > 2 < d i s p l a y : column p r o p e r t y = " " t i t l e K e y = " " / > 3 < d i s p l a y : column p r o p e r t y = " password " t i t l e K e y = " password " / > 4 < d i s p l a y : column p r o p e r t y = " firstname " t i t l e K e y = " firstname " / > 5 < d i s p l a y : column p r o p e r t y = " secondname " t i t l e K e y = " secondname " 6 s o r t a b l e = " t r u e " / > 7 < d i s p l a y : column p r o p e r t y = " i n s t i t u t i o n " t i t l e K e y = " i n s t i t u t i o n " / > 8 < / d i s p l a y : table> 9 <s : u r l i d = " newurl " action= " persondetail " >< / s : u r l > 10 <s : a href= "%{newurl } " t a r g e t s = " persons " ><s : text name= "new" / >< / s : a> Řádky 1 8: Nastavení sloupců tabulky výpis jednotlivých atributů instance Person z kolekce persons. Řádek 6: Tabulku bude možné třídit dle příjmení osoby. Řádky 9 10: Naformátování odkazu pro akci persondetail.

31 Tvorba informačních systémů 31/46 Příklad, persondetail.jsp 1/ <h1><s : text name= " persondetail " / >< / h1> 3 4 <s : p r o p e r t y value= " r e s u l t " / > 5 <s : i f t e s t = "%{person == n u l l } " > 6 <s : set i d = " a c t i o n S t r " value= " person_insert " / > 7 <s : set i d = " l o g i n D i s a b l e d " value= " f a l s e " / > 8 < / s : i f > 9 <s : else> 10 <s : set i d = " a c t i o n S t r " value= " person_update " / > 11 <s : set i d = " l o g i n D i s a b l e d " value= " f a l s e " / > 12 < / s : else> Detekujeme zda metoda find třídy PersonAction vrátila nějakou instanci Person. Pokud ano, tento formulář byl vyžádán pro aktualizaci záznamu (tedy s parametrem login) a požadovaná akce je person_update. Pokud metoda find vrátila null, požadovaná akce je person_insert (požadujeme tedy vložení nového záznamu).

32 Tvorba informačních systémů 32/46 Příklad, persondetail.jsp 2/2 1 <s : form action= "%{ a c t i o n S t r } " > 2 <s : t e x t f i e l d disabled="%{logindisabled } " name= " person. l o g i n " 3 size= " 6 " key= " person. l o g i n " r e q u i r e d = " t r u e " j a v a s c r i p t T o o l t i p = " t r u e " 4 t o o l t i p = " cccnnn " value= "%{person. l o g i n } " / > 5 <s : t e x t f i e l d name= " person. " size= " 50 " key= " person. " 6 r e q u i r e d = " t r u e " value= "%{person. } " / > < / s : form> 9... Hodnota atributu name specifikuje atribut akční třídy kde bude uložena hodnota z formuláře. V tomto případě očekáváme v akční třídě atribut person s výše uvedenými atributy (jedná se tedy o instanci třídy Person). Atribut value specifikuje hodnotu uvedenou v textovém poli, v tomto případě se jedná o hodnotu atributu instance person z akční třídy. Atribut key definuje popis prvku GUI dle lokalizačních řetězců ze souborů package_properties*.

33 Tvorba informačních systémů 33/46 Akce person_list User person_list Controler Controler struts.xml struts.xml applicationcontext Localization PersonAction.list() persons PersonService.findAll() personlist

34 Tvorba informačních systémů 34/46 Proč (ne)použít JPA/Hibernate? : BlackBox problém možné problémy s výkonem. Nutnost výkonnostních testů. +: Je libo MySQL? 1 < p r o p e r t y name= " jpavendoradapter " > 2 <bean class = " org..... orm. jpa. vendor. HibernateJpaVendorAdapter " > 3 < p r o p e r t y name= " database " value= "MYSQL" / > < / bean> 6 < / p r o p e r t y > 7 8 <bean i d = " datasource " class=" org..... DriverManagerDataSource " > 9 < p r o p e r t y name= " driverclassname " value= "com. mysql. jdbc. D r i v e r " / > 10 < p r o p e r t y name= " u r l " value= " j d b c : s m y s q l : / / win456. vsb. cz / t i s " / > 11 < p r o p e r t y name= " username " value= " t i s " / > 12 < p r o p e r t y name= " password " value= " t i s " / > 13 < / bean>

35 Tvorba informačních systémů 35/46 Přihlášení do aplikace Přihlášení do aplikace Úkoly/problémy: Uložení stavu aplikace (často do session). Generování menu pro přihlášené/nepřihlášené uživatele Zamezení přístupu nepřihlášeným uživatelům k vybraným akcím

36 Tvorba informačních systémů 36/46 Přihlášení do aplikace Přihlášení, akce login struts.xml: 1 < a c t i o n name= " l o g i n _ " class=" a c t i o n. LoginAction " method= " { 1 } " > 2 < r e s u l t type= " r e d i r e c t " > p e r s o n _ l i s t < / r e s u l t > 3 < r e s u l t name= " i n p u t " > /WEB INF / pages / u t i l / l o g i n. j s p < / r e s u l t > 4 < / a c t i o n > action.loginaction: public S t r i n g execute ( ) throws Exception { 3 i f ( getusername ( )! = null && getpassword ( )! = null ) { 4 / / C a l l user domain bean using a DBMS 5 i f ( username. compareto ( " kra28 " ) == 0 && 6 password. compareto ( " a " ) = = 0 ) 7 { 8 this. session. put ( AppConstant. SessionFieldAuth, 9 new Boolean ( true ) ) ; 10 return SUCCESS; 11 } } 12 return INPUT ; }

37 Tvorba informačních systémů 37/46 Přihlášení do aplikace Odhlášení, akce logout struts.xml: 1 < a c t i o n name= " l o g o u t " class=" a c t i o n. LogoutAction " > 2 < r e s u l t type= " r e d i r e c t " > l o g i n < / r e s u l t > 3 < / a c t i o n > action.logoutaction: public S t r i n g execute ( ) throws Exception { 3 i f ( session. containskey ( AppConstant. SessionFieldAuth ) ) 4 { 5 session. remove ( AppConstant. SessionFieldAuth ) ; 6 } 7 return SUCCESS; 8 }

38 Tvorba informačních systémů 38/46 Přihlášení do aplikace Přístup k akcím Pro zabránění neoprávněného přístupu k akcím můžeme definovat tzv. interceptor, struts.xml: <package name= " person " extends= " s t r u t s d e f a u l t " > 3 < i n t e r c e p t o r s > 4 < i n t e r c e p t o r name= " a u t h e n t i c a t i o n I n t e r c e p t o r " 5 class=" i n t e r c e p t o r. A u t h e n t i c a t i o n I n t e r c e p t o r " / > 6 < i n t e r c e p t o r stack name= " d e f a u l t S e c u r i t y S t a c k W i t h A u t h e n t i c a t i o n " > 7 < i n t e r c e p t o r r e f name= " d e f a u l t S t a c k " / > 8 < i n t e r c e p t o r r e f name= " a u t h e n t i c a t i o n I n t e r c e p t o r " > 9 <param name= " excludeactions " > l o g i n, dologin< / param> 10 < / i n t e r c e p t o r r e f > 11 < / i n t e r c e p t o r stack> 12 < / i n t e r c e p t o r s > 13...

39 Tvorba informačních systémů 39/46 Přihlášení do aplikace Přístup k akcím, AuthenticationInterceptor 1/2 1 package i n t e r c e p t o r ; 2 import com. opensymphony. xwork2. i n t e r c e p t o r. ; 3 import com. opensymphony. xwork2. u t i l. ; 4 import com. opensymphony. xwork2. ; 5 import java. u t i l. ; 6 import u t i l. ; 7 8 p u b l i c class A u t h e n t i c a t i o n I n t e r c e p t o r extends A b s t r a c t I n t e r c e p t o r { 9 p r i v a t e S t r i n g a u t h e n t i c a t i o n S e s i o n F i e l d = new S t r i n g ( 10 AppConstant. SessionFieldAuth ) ; 11 p r i v a t e Set excludeactions = C o l l e c t i o n s.empty_set; p u b l i c void s e t A u t h e n t i c a t i o n S e s i o n F i e l d ( 14 S t r i n g a u t h e n t i c a t i o n S e s i o n F i e l d ) { 15 t h i s. a u t h e n t i c a t i o n S e s i o n F i e l d = a u t h e n t i c a t i o n S e s i o n F i e l d ; 16 } 17 p u b l i c void setexcludeactions ( S t r i n g values ) { 18 i f ( values! = n u l l ) { 19 t h i s. excludeactions = 20 T e x t P a r s e U t i l. commadelimitedstringtoset ( values ) ; 21 } 22 }

40 Tvorba informačních systémů 40/46 Přihlášení do aplikace Přístup k akcím, AuthenticationInterceptor 2/2 2 p u b l i c S t r i n g i n t e r c e p t ( A c t i o n I n v o c a t i o n i n v o c a t i o n ) 3 throws Exception { 4 Map session = i n v o c a t i o n. getinvocationcontext ( ). getsession ( ) ; 5 S t r i n g actionname = i n v o c a t i o n. getproxy ( ). getactionname ( ) ; 6 S t r i n g methodname = i n v o c a t i o n. getproxy ( ). getmethod ( ) ; 7 8 Object a u t h e n t i c a t i o n O b j e c t = session. get ( 9 a u t h e n t i c a t i o n S e s i o n F i e l d ) ; i f ( excludeactions. contains ( actionname ) 12 ( a u t h e n t i c a t i o n O b j e c t! = n u l l && 13 a u t h e n t i c a t i o n O b j e c t i n s t a n c e o f Boolean && 14 a u t h e n t i c a t i o n O b j e c t. equals ( Boolean.TRUE ) ) ) { 15 r e t u r n i n v o c a t i o n. invoke ( ) ; 16 } 17 r e t u r n AppConstant. ResultAuthRequired ; 18 } 19 } Metoda intercept je volána před spuštění každé akce.

41 Tvorba informačních systémů 41/46 Přihlášení do aplikace menu.jsp Menu generujeme na základě existence klíče authenticated v session. 1 <h2>menu< / h2> 2 3 <c : i f t e s t = " $ { not empty sessionscope. a u t h e n t i c a t e d } " > 4 <s : u r l i d = " p e r s o n L i s t U r l " action= " p e r s o n _ l i s t " / > 5 <s : a href= "%{ p e r s o n L i s t U r l } " ><s : text name= " p e r s o n L i s t " / >< / s : a><br / > 6 7 <s : u r l i d = " l o g o u t U r l " action= " l o g o u t " / > 8 <s : a href= "%{ l o g o u t U r l } " ><s : text name= " logoutmenuitem " / >< / s : a><br / > 9 < / c : i f > <c : i f t e s t = " $ { empty sessionscope. a u t h e n t i c a t e d } " > 12 <s : u r l i d = " l o g i n U r l " action= " l o g i n _ i n p u t " / > 13 <s : a href= "%{ l o g i n U r l } " ><s : text name= " loginmenuitem " / >< / s : a><br / > 14 < / c : i f >

42 Tvorba informačních systémů 42/46 Vzhled aplikace Kaskádové styly Můžeme využít kaskádové styly (CSS) a rozdělit aplikaci na 4 části: hlavičku, levý panel (pro menu), obsah a patičku, viz style.css: d i v. headerpanel { 3 Background c o l o r : # b0c4de ; 4 p o s i t i o n : absolute ; top : 0 px ; l e f t : 0 px ; 5 width : px ; h e i g h t : 8 0 px ; 6 } 7 d i v. contentpanel { 8 Background c o l o r : # f 5 f 5 f 5 ; 9 p o s i t i o n : absolute ; top : 8 0 px ; l e f t : px ; 10 width : px ; h e i g h t : px ; 11 } 12...

43 Tvorba informačních systémů 43/46 Vzhled aplikace personlist.jsp 1 <%@ page language= " java " contenttype= " t e x t / html ; charset= u t f 8" %> 2 <%@ t a g l i b p r e f i x = " s " u r i = " / s t r u t s tags " %> 3 <%@ t a g l i b p r e f i x = " d i s p l a y " u r i = " /WEB INF / d i s p l a y t a g. t l d " %> 4 5 <html> 6 <head> 7 < t i t l e ><s : text name= " welcomemessage " / >< / t i t l e > 8 < l i n k r e l = " s t y l e s h e e t " type= " t e x t / css " href= " s t y l e. css " > 9 < l i n k r e l = " s t y l e s h e e t " type= " t e x t / css " href= " d i s p l a y t a g. css " > 10 < / head> 11 <body> <s : i n c l u d e value= " /WEB INF / pages / u t i l / menu. j s p " / > <div class = " contentpanel " > <! Obsah > 17 / div >

44 Tvorba informačních systémů 44/46 Vzhled aplikace menu.jsp 1 <%@ t a g l i b u r i = " h t t p : / / java. sun. com / j s p / j s t l / core " p r e f i x = " c " %> 2 <%@ t a g l i b p r e f i x = " s " u r i = " / s t r u t s tags "%> 3 4 <div class=" headerpanel " > 5 <h1>sample A p p l i c a t i o n : S t r u t s 2 + SQLServer 2008< / h1> 6 < / div> 7 <div class=" footerpanel " >Write f o o t e r! < / div> 8 9 <div class=" l e f t P a n e l " > 10 <! Menu > 11 < / div>

45 Tvorba informačních systémů 45/46 Závěr Ukázková aplikace exam/exam6/samplestruts2app.zip

46 Tvorba informačních systémů 46/46 Závěr Reference core-developers-guide.html validation.html

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů Tvorba informačních systémů 1/49 Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních systémů 2/49 Úvod

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006-2007 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2006-2008 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2006 2008 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

KIV/PIA 2013 Jan Tichava

KIV/PIA 2013 Jan Tichava KIV/PIA 2013 Jan Tichava Java EE JSF, PrimeFaces Spring JPA, EclipseLink Java Platform, Enterprise Edition Persistence Zobrazovací vrstva Interakce aplikací Deployment Java Persistence API Enterprise

Více

DPKOM_06 Dědičnost entit a zpětná volání posluchači

DPKOM_06 Dědičnost entit a zpětná volání posluchači DPKOM_06 Dědičnost entit a zpětná volání posluchači 1 Obsah přednášky Jedna tabulka pro hierarchii tříd Tabulka pro konkrétní třídu Tabulka pro podtřídu Neentitní základní třídy Události zpětného volání

Více

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text()); Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového

Více

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15 Platforma Java Objektově relační mapování II Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, 2016 1 / 15 Dotazování vyhledání objektu podle

Více

Databázové systémy Cvičení 5.2

Databázové systémy Cvičení 5.2 Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako

Více

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký Anotace a Hibernate Aleš Nosek Ondřej Vadinský Daniel Krátký Anotace v Javě novinka Javy 5 umožňují k Java kódu přidávat dodatečné informace (podobně jako JavaDoc) za předchůdce anotací je možné považovat

Více

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Web Jaroslav Nečas Obsah přednášky Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Co to je web HTTP protokol bezstavový GET POST HEAD Cookies Session HTTPS

Více

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Návrh a tvorba WWW stránek 1/14. PHP a databáze Návrh a tvorba WWW stránek 1/14 PHP a databáze nejčastěji MySQL součástí balíčků PHP navíc podporuje standard ODBC PHP nemá žádné šablony pro práci s databází princip práce s databází je stále stejný opakované

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Jak ukládat a efektivně zpracovávat

Více

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5); Programovací jazyk PHP doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Třídy a objekty Výjimky Webové aplikace

Více

Enterprise Java Beans 3.0

Enterprise Java Beans 3.0 Enterprise Java Beans 3.0 Lukáš Zapletal liberix.cz EJB 3.0 a JPA 1.0 JavaBean - vysvětlení pojmu Java třída s get/is a set metodami má tedy vlastnosti žádné další podmínky nejsou kladeny JavaBean je tedy

Více

Java a Caché IV: Manipulace s objekty

Java a Caché IV: Manipulace s objekty 1 z 6 11.1.2007 11:13 přihlašovací jméno heslo Registrace Přihlásit články odkazy aktuality CZJUG konference o portálu přidejte se o nás Vyhledávání Text: najdi Oborový filtr J2ME J2SE J2EE Enterprise

Více

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ Technologie Jalapeño od InterSystems Andreas Dieckow, Principal Product Manager, Strategic Planning InterSystems Corporation Úvod Programovací jazyk Java má díky

Více

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Nástroje a frameworky pro automatizovaný vývoj Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Proces vývoje webové aplikace Předepsaná adresářová struktura. Kompilace zdrojových kódů.

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java

Více

Object-relational mapping (JPA, Hibernate)

Object-relational mapping (JPA, Hibernate) Vysoká škola báňská - technická univerzita Ostrava 17. března 2010 Obsah 1 2 3 4 namapovat chování objektového světa do relačních struktur a naopak, tak aby spolu mohli jednoduše komunikovat většina moderních

Více

(Enterprise) JavaBeans. Lekce 7

(Enterprise) JavaBeans. Lekce 7 (Enterprise) JavaBeans Lekce 7 JavaBeans vs. Enterprise JavaBeans (EJB) JavaBeans technologie: jedná se o tzv. komponentní architekturu určenou pro JSE platformu určená pro tvorbu JSE GUI programů pomocí

Více

Databáze I. Přednáška 4

Databáze I. Přednáška 4 Databáze I Přednáška 4 Definice dat v SQL Definice tabulek CREATE TABLE jméno_tab (jm_atributu typ [integr. omez.], jm_atributu typ [integr. omez.], ); integritní omezení lze dodefinovat později Definice

Více

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal Databázové systémy - SQL * definice dat * aktualizace * pohledy Tomáš Skopal Osnova přednášky definice dat definice (schémat) tabulek a integritních omezení CREATE TABLE změna definice schématu ALTER TABLE

Více

Použití databází na Webu

Použití databází na Webu 4IZ228 tvorba webových stránek a aplikací Jirka Kosek Poslední modifikace: $Date: 2010/11/18 11:33:52 $ Obsah Co nás čeká... 3 Architektura webových databázových aplikací... 4 K čemu se používají databázové

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 8 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování Entita Entitní typ

Více

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze NOVINKY V JEE EJB 3.1 Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze PROGRAM Seznámení s Java Enterprise Edition (JEE) Enterprise Java Beans (EJB) Novinky v EJB 3.1 2 JAVA EDITIONS Java

Více

8.2 Používání a tvorba databází

8.2 Používání a tvorba databází 8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Spring framework 2.0. Roman Pichlík http://sweb.cz/pichlik/ CZJUG http://java.cz/jug

Spring framework 2.0. Roman Pichlík http://sweb.cz/pichlik/ CZJUG http://java.cz/jug Spring framework 2.0 Spring framework 2.0 Roman Pichlík http://sweb.cz/pichlik/ Nejdůležitejší slide http://springframework.org/ http://www.springframework.org/documen Historie 2002 - Rod Johnson kniha

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE X33EJA Security, Realms Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE 'web.xml' 'glassfish-web.xml' dále nutno nastavit realm v admin. konzoli GF 1

Více

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,

Více

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_038.ICT.34 Tvorba webových stránek SQL stručné minimum OA a JŠ Jihlava, VY_32_INOVACE_038.ICT.34 Číslo

Více

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce Databázové systémy 2 Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: čtvrtek, 4 5 Obor: ININ SWIN E-mail: jtichava@students.zcu.cz Databázové systémy II. KIV/DB2 LS 2007/2008 Zadání semestrální

Více

Databáze I. Přednáška 7

Databáze I. Přednáška 7 Databáze I Přednáška 7 Objektové rozšíření SQL Objektově relační databáze SQL:1999 objektové rozšíření SQL vztahuje se k objektově relačním databázovým systémům ukládají objekty do relační databáze umožňují

Více

Verzování a publikace dat na webu za pomoci PostgreSQL

Verzování a publikace dat na webu za pomoci PostgreSQL Prague PostgreSQL Developers' Day 2013 Verzování a publikace dat na webu za pomoci PostgreSQL Jan Pěček Kdo jsem? Jan Pěček Programátor PostgreSQL Jyxo, s.r.o. (Blog.cz) MAFRA, a.s. - Internet Trading

Více

Technologie JavaBeans

Technologie JavaBeans Technologie JavaBeans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Historie Komponentový model Typy komponent

Více

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3. Základy programování 4 - C# 7. cvičení Radek Janoštík Univerzita Palackého v Olomouci 26.3.2017 Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.2017 1 / 14 Reakce na úkoly

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL 4 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, datové typy, klauzule SELECT, WHERE, a ORDER BY. Doporučená

Více

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června 2007. krovacek@students.zcu.cz

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června 2007. krovacek@students.zcu.cz Databáze čajových sáčků Martina Málková Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky Databázové systémy 2 9. června 2007 krovacek@students.zcu.cz 1 1 Datová analýza V původním

Více

1 Administrace systému 3. 1.3 Moduly... 3 1.4 Skupiny atributů... 4 1.5 Atributy... 4 1.6 Hodnoty atributů... 4

1 Administrace systému 3. 1.3 Moduly... 3 1.4 Skupiny atributů... 4 1.5 Atributy... 4 1.6 Hodnoty atributů... 4 CRM SYSTÉM KORMORÁN PŘÍRUČKA ADMINISTRÁTORA Obsah 1 Administrace systému 3 1.1 Uživatelské účty.................................. 3 1.2 Přístupová práva................................. 3 1.3 Moduly.......................................

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer Jalapeño: pekelně ostrá Java persistence v Caché Daniel Kutáč Senior Sales Engineer Co je Jalapeño Pár slov ředitele vývoje software Klikni! Tak tedy, o čem dnes budeme mluvit Architektura Instalace Anotace

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2005 2008 Michal Krátký Tvorba informačních systémů 1/39 Konceptuální

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011 Technologie Java Enterprise Edition Přemek Brada, KIV ZČU 8.6.2011 Přehled tématu Motivace a úvod Infrastruktura pro velké Java aplikace (Java základní přehled) Části třívrstvé struktury servlety, JSP

Více

Sada 1 - PHP. 14. Úvod do jazyka SQL

Sada 1 - PHP. 14. Úvod do jazyka SQL S třední škola stavební Jihlava Sada 1 - PHP 14. Úvod do jazyka SQL Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a

Více

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB) Obsah přednášky Technologie Miroslav Beneš Popis technologie EJB J2EE aplikace Typy komponent Entity Beans Session Beans Message-Driven Beans Java Messaging Service (JMS) Závěr 2 (EJB) EJB kontejner Specifikace

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký Tvorba informačních systémů 1/35 Konceptuální

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Semináˇr Java X J2EE Semináˇr Java X p.1/23 Seminář Java X J2EE Seminář Java X p.1/23 J2EE Složitost obchodních aplikací robusní, distribuované, spolehlivé aplikace s transakcemi na straně serveru, klientské aplikace co nejjednodušší Snaha : Návrh,

Více

Nasazení Object Relation Mapping nástrojů nad legacy datovým modelem

Nasazení Object Relation Mapping nástrojů nad legacy datovým modelem Nasazení Object Relation Mapping nástrojů nad legacy datovým modelem 1 Ondřej Berger, Pavel Janečka, 2 Lukáš Černovský 1 Univerzita Hradec Králové Fakulta informatiky a managementu KIKM Hradecká 1249/6,

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML Obsah přednášky Webové služby a XML Miroslav Beneš Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C# Webové služby a XML 2 Co jsou to webové služby rozhraní k

Více

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků

Více

Komponenty v.net. Obsah přednášky

Komponenty v.net. Obsah přednášky doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Rozdíl mezi COM a.net Distribuce komponent Programování

Více

Michal Krátký, Miroslav Beneš

Michal Krátký, Miroslav Beneš Tvorba informačních systémů 1/20 Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních

Více

Konceptuální modelování a SQL

Konceptuální modelování a SQL Konceptuální modelování a SQL přednáška č.? 1/90 Vytváření IS Analýza Návrh Implementace Testování Předání SW Jednotlivé fáze mezi sebou iterují 2/90 Proč modelovat/analyzovat? Standardizované pracovní

Více

Tabulka fotbalové ligy

Tabulka fotbalové ligy Semestrální práce na X36DB2 Michal Rezler Jan Zmátlík Tabulka fotbalové ligy a tabulka střelců 8. prosinec 2011 Obsah 1 Zadání....................................................... 3 1.1 Stručný popis.............................................

Více

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů Tvorba informačních systémů 1/40 Tvorba informačních systémů Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních systémů 2/40 Úvod

Více

DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY

DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY Databázové a informační systémy 1/9 DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY Katedra informatiky FEI VŠB Technická univerzita Ostrava 2012/2013 Databázové a informační systémy 2/9 TABULKA ST U D E N T Pokud nebude

Více

Michal Krátký, Miroslav Beneš

Michal Krátký, Miroslav Beneš Databázové a informační systémy Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava 5.12.2005 2005 Michal Krátký, Miroslav Beneš Databázové a informační systémy 1/24 Obsah

Více

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni Webové aplikace Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni Harmonogram Dopolední blok 9:00 12:30 Ing. Dostal Úvod, XHTML + CSS Ing. Brada,

Více

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45 KMI / TMA Tvorba mobilních aplikací 6. seminář 2.11.2016 ZS 2016/2017 Středa 13:15-15:45 OBSAH SEMINáře Ukládání dat Ukládání dat Jaké jsou možnosti? SharedPreferences jednoduchá data databáze SQLite relační

Více

DUM 12 téma: Příkazy pro tvorbu databáze

DUM 12 téma: Příkazy pro tvorbu databáze DUM 12 téma: Příkazy pro tvorbu databáze ze sady: 3 tematický okruh sady: III. Databáze ze šablony: 7 Kancelářský software určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie vzdělávací

Více

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging 1. Vhodnost nasazení jednotlivých webových architektur - toto je podle Klímy

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Autor: Číslo: Anotace: Inovace a zkvalitnění výuky prostřednictvím ICT Databáze Základní seznámení s MySQL

Více

RMI - Distribuované objekty v Javě

RMI - Distribuované objekty v Javě Vysoká škola báňská - Technická univerzita Ostrava 30. března 2009 Osnova Co je to RMI? 1 Co je to RMI? 2 Vnější pohled Vrstvy RMI Stub & Skeletons Layer Remote Reference Layer Transport Layer Pojemnování

Více

RMI Remote Method Invocation

RMI Remote Method Invocation 2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

Více

Rezervační systém Tvorba WWW stránek

Rezervační systém Tvorba WWW stránek 2012 Rezervační systém Tvorba WWW stránek Vytvoření rezervačního systému pro rezervaci motokár,ubytování a atrakcí Marek Svoboda Motokáry Motobydlo 30.12.2012 Obsah 1.Základní charakteristika... 3 a) Téma

Více

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB) Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB) Michal Papež Spring & EJB Program: K čemu je to dobré, historie, odlišnosti Spring 2.5 EJB 3.0 K čemu jsou? 1 Vývoj velkých podnikových

Více

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování Tvorba WWW stránek přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování HTML/XHTML kaskádové styly PHP spolupráce PHP s databázemi Technologie

Více

Tvorba informačních systémů

Tvorba informačních systémů 9. Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2006-2008 Michal Krátký, Miroslav Beneš Tvorba

Více

Architektury informačních systémů

Architektury informačních systémů Architektury informačních systémů doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes/vyuka/tis Miroslav.Benes@vsb.cz Obsah přednášky Co je to

Více

Databáze v Java aplikacích, JPA Handout

Databáze v Java aplikacích, JPA Handout Databáze v Java aplikacích, JPA Handout Martin Ledvinka martin.ledvinka@fel.cvut.cz 11. listopadu 2015 1 Přístup k databázím v Javě Jednou z mnoha výhod (a občas nevýhodou) platformy Java je její zaměření

Více

Databázové systémy úvod

Databázové systémy úvod Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze c Michal Valenta, 2016 BI-DBS, LS 2015/16 https://edux.fit.cvut.cz/courses/bi-dbs/

Více

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18 Spring Framework Pavel Mička Pavel Mička Spring Framework 1/18 Obsah Úvod 1 Úvod 2 Service locator Dependency injection Rozsah platnosti bean 3 4 Pavel Mička Spring Framework 2/18 Co je to Spring framework

Více

Databázové systémy. Cvičení 6: SQL

Databázové systémy. Cvičení 6: SQL Databázové systémy Cvičení 6: SQL Co je SQL? SQL = Structured Query Language SQL je standardním (ANSI, ISO) textovým počítačovým jazykem SQL umožňuje jednoduchým způsobem přistupovat k datům v databázi

Více

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Základy informatiky. 08 Databázové systémy. Daniela Szturcová Základy informatiky 08 Databázové systémy Daniela Szturcová Problém zpracování dat Důvodem je potřeba zpracovat velké množství dat - evidovat údaje o nějaké skutečnosti. o skupině lidí (zaměstnanců, studentů,

Více

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití: Architektura webové aplikace, funkce jednotlivých vrstev, životní cyklus standardizovaných komponent Java EE, Servlety, JSP, frameworky, návrhové vzory 1. Distribuce Javy Distribuce Javy se liší podle

Více

Návrhové vzory pro J2EE

Návrhové vzory pro J2EE Návrhové vzory pro J2EE Miroslav Beneš Obsah přednášky Význam návrhových vzorů Klasické návrhové vzory GoF Návrh prezentační vrstvy Business vrstva Vzory pro práci s daty Příklady dalších vzorů Záporné

Více

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc. Kurz Databáze Přechod na SQL server Lektor: Doc. Ing. Radim Farana, CSc. Obsah Vytvoření databáze. Konverze databáze z MS-Access na SQL Server. Konverzní předpis pro pozdější použití. Definice schématu

Více

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc. 1 Kurz Databáze Zpracování dat Doc. Ing. Radim Farana, CSc. Obsah Druhy dotazů, tvorba dotazu, prostředí QBE (Query by Example). Realizace základních relačních operací selekce, projekce a spojení. Agregace

Více

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links links Apache Struts Article with examples JSTL a EL (into JSP) MVC, webové aplikace, JSP Bezpečnost ve webových

Více

Databáze II. 1. přednáška. Helena Palovská palovska@vse.cz

Databáze II. 1. přednáška. Helena Palovská palovska@vse.cz Databáze II 1. přednáška Helena Palovská palovska@vse.cz Program přednášky Úvod Třívrstvá architektura a O-R mapování Zabezpečení dat Role a přístupová práva Úvod Co je databáze Mnoho dat Organizovaných

Více

Oracle XML DB. Tomáš Nykodým

Oracle XML DB. Tomáš Nykodým Oracle XML DB Tomáš Nykodým xnykodym@fi.muni.cz Osnova Oracle XML DB Architektura Oracle XML DB Hlavní rysy Oracle XML DB Hlavní rysy Oracle XML DB - pokračování XMLType XML Repository Využívání databázových

Více

Vytváření a použití knihoven tříd

Vytváření a použití knihoven tříd Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce

Více

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi: Session Beans Petr Aubrecht CA Vtipy budou tentokrát o krizi: Resty z minula -2 slidy s anotacemi servletů -JPA, slide 42, kaskády Anotace v Servletech 3.0 - Netřeba zápis do web.xml @WebServlet(name="CalculatorServlet",

Více

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE 2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE Studijní cíl Tento blok je věnován základní syntaxi příkazu SELECT, pojmům projekce a restrikce. Stručně zde budou představeny příkazy

Více

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4. Základy programování 4 - C# - 9. cvičení Radek Janoštík Univerzita Palackého v Olomouci 10.4.2017 Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 1 / 13 Reakce na

Více

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou MySQL Typy tabulek Storage Engines MyISAM defaultní, neumí transakce, umí fulltext InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) MEMORY (HEAP) v paměti; neumí transakce ARCHIVE velké množství

Více

17. července 2005 15:51 z moravec@yahoo.com http://www.z-moravec.net/

17. července 2005 15:51 z moravec@yahoo.com http://www.z-moravec.net/ 17. července 2005 15:51 z moravec@yahoo.com http://www.z-moravec.net/ Úvod 1 Úvod Nedávno jsem zveřejnil návod na vytvoření návštěvní knihy bez nutnosti použít databázi. To je výhodné tehdy, kdy na serveru

Více

boolean hasnext() Object next() void remove() Kolekce

boolean hasnext() Object next() void remove() Kolekce 11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída

Více

Jazyk C# - přístup k datům

Jazyk C# - přístup k datům Jazyk C# - přístup k datům Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Entity Framework BI-PCS Evropský sociální fond Praha

Více