Hlavní menu
Nástroje |
SlovnikTerminologie.JemnyUvodDoAplikace HistoryHide minor edits - Show changes to markup 20 February 2014, 00:16
by
- Changed lines 309-311 from:
to:
02 February 2014, 23:54
by
- Changed lines 249-250 from:
Poznámka: Pro testování je možné nastavit u tagu to:
Poznámka: Pro testování je možné nastavit u tagu 02 February 2014, 23:53
by
- Changed lines 249-250 from:
Poznámka: Pro testování je možné nastavit u tagu to:
Poznámka: Pro testování je možné nastavit u tagu 02 February 2014, 23:52
by
- Added lines 249-250:
Poznámka: Pro testování je možné nastavit u tagu 23 May 2013, 20:35
by
- Changed lines 114-115 from:
Servletovému kontejneru přijde požadavek, který obsahuje informace ve stylu: "Pošli mi potřebná data pro toto URL: http://ip.adresa.servletové.kontejneru:port/spot/sprava/uzivatele". Spring ví, že s daným URL je provázán konkrétní controller, který se stará o to, aby byla uživateli poslaná potřebná data. Controller je vždy nadefinován ve své beaně. to:
Servletovému kontejneru přijde požadavek, který obsahuje informace ve stylu: "Pošli mi potřebná data pro toto URL: http://ip.adresa.servletové.kontejneru:port/spot/sprava/uzivatele". Spring ví, že s daným URL je provázán konkrétní controller (mapování URL na controllery je ve Deleted lines 310-311:
23 May 2013, 20:25
by
- Changed lines 90-91 from:
V současné době má datový model okolo 20 tabulek. Avšak v blízké či vzdálenější budoucnosti je v plánu tento stav o pár dalších rozšířit. to:
V současné době má datový model okolo 27 tabulek. 23 May 2013, 20:23
by
- Changed lines 46-47 from:
Je více méně na vás, jaké IDE si zvolíte. Ať už Netbeans nebo Eclipse (případně IntelliJ Idea nebo jiné) nabízí nepřeberné množství různých pluginů, které nám mají usnadnit práci. Dají se nainstalovat pluginy pro práci s Mavenem, Springem aj. Tato volba je opravdu jen na vás. to:
Je více méně na vás, jaké IDE si zvolíte. Ať už Netbeans nebo Eclipse (případně IntelliJ Idea nebo jiné) nabízí nepřeberné množství různých pluginů, které nám mají usnadnit práci. Dají se nainstalovat pluginy pro práci s Mavenem, Springem aj. Tato volba je opravdu jen na vás. Vhodné je použití Spring Tool Suite, což je vývojové prostředí založené na Eclipse, které usnadňuje vývoj aplikací s využitím Spring frameworku, Mavenu atd. 10 July 2012, 16:55
by
- Changed lines 227-229 from:
Komunikaci mezi klientskou (javascript) a serverovou částí (java) zajišťuje knihovna DWR. Zprovoznění vyžaduje několik kroků, které nejsou úplně intuitivní, proto je popíšu níže. Nastavení v spot-servlet.xmlto:
Komunikaci mezi klientskou (javascript) a serverovou částí (java) zajišťuje knihovna DWR. Zprovoznění vyžaduje několik kroků, které nejsou úplně intuitivní, proto je zde popíšu. Nastavení spot-servlet.xmlChanged lines 272-273 from:
V controlleru musí existovat metoda, kterou v javascriptu voláme. Uvádím zde ukázku načtení kontextu. to:
V controlleru musí existovat metoda, kterou v javascriptu voláme. V níže uvedeném kódu je i ukázka, jak načíst kontext. 10 July 2012, 16:50
by
- Added lines 271-293:
Serverová částV controlleru musí existovat metoda, kterou v javascriptu voláme. Uvádím zde ukázku načtení kontextu. public String[] ajaxWordEdit(String wordWord, int wordId, int usageId, int stateId) { /* nacteni web kontextu */ WebContext ctx = WebContextFactory.get(); HttpServletRequest request = ctx.getHttpServletRequest(); ... if ( /* nastala chyba */ ) { return null; } ... String[] infoToDisplay = {word.getWord(), word.getUrl(), state.getValue(), usage.getName()}; return infoToDisplay; } 10 July 2012, 16:44
by
- Changed lines 250-251 from:
Javascriptová funkce, která volá metodu to:
Ukázka javascriptové funkce, která volá metodu Changed lines 258-259 from:
Callback funkce je zavolána po přijetí dat od metody controlleru a nebo po vytikání timeoutu. to:
Callback funkce je zavolána po přijetí dat od metody controlleru a nebo po vytikání timeoutu. Přijatá data jsou uložená v parametru funkce (zde: wordData). Chybové stavy jsou řešeny vrácením 10 July 2012, 16:40
by
- Changed lines 248-249 from:
Javascriptové funkce jsou umístěny v adresáři to:
Javascriptové funkce jsou umístěny v adresáři Javascriptová funkce, která volá metodu Deleted lines 251-255:
/* * Tato funkce odesila data controlleru (WordShowController?), do metody ajaxWordEdit a ziskava
* zpet data pres callback updateWord, ktery je definovan nize.
*
/ Changed lines 255-259 from:
/* * Callback z metody ajaxWordEdit, naplni stranku novymi daty a obnovi stranku. * / to:
@] Callback funkce je zavolána po přijetí dat od metody controlleru a nebo po vytikání timeoutu. [@ Deleted line 267:
10 July 2012, 16:35
by
- Added lines 250-274:
/* * Tato funkce odesila data controlleru (WordShowController), do metody ajaxWordEdit a ziskava * zpet data pres callback updateWord, ktery je definovan nize. * * */ function ajaxWordEdit() { WordShowController.ajaxWordEdit(value("wordWord"), value("wordId"), value("usageId"), value("stateId"), ajaxWordEditCallback); } /* * Callback z metody ajaxWordEdit, naplni stranku novymi daty a obnovi stranku. * * */ function ajaxWordEditCallback(wordData) { if (wordData == null) { alert("Ke změně slova nedošlo. Nastala chyba."); return false; } else { /* zde bude nejaky kod, ktery provede zmenu na strance */ } } 10 July 2012, 16:33
by
- Changed lines 247-249 from:
to:
JavascriptJavascriptové funkce jsou umístěny v adresáři 10 July 2012, 16:29
by
- Changed line 229 from:
h.4 Nastavení v spot-servlet.xml to:
Nastavení v spot-servlet.xml10 July 2012, 16:28
by
- Changed lines 226-228 from:
Ajax pomocí DWR (Direct Web Remoting)to:
Ajax a knihovna DWR (Direct Web Remoting)Komunikaci mezi klientskou (javascript) a serverovou částí (java) zajišťuje knihovna DWR. Zprovoznění vyžaduje několik kroků, které nejsou úplně intuitivní, proto je popíšu níže. h.4 Nastavení v spot-servlet.xml Zde je nutné určit, který controller bude obsluhovat volání javascriptových funkcí. V tomto případě musí třída WordShowController? obsahovat uvedené metody (ajaxWordEdit, ajaxSeeAlsoAdd,...). <bean id="wordShowController" class="cz.zcu.kiv.spot.controllers.WordShowController"> <property name="dictionaryManager" ref="dictionaryManager" /> <dwr:remote javascript="WordShowController"> <dwr:include method="ajaxWordEdit" /> <dwr:include method="ajaxSeeAlsoAdd" /> <dwr:include method="ajaxCommentAdd" /> <dwr:include method="ajaxCommentDelete" /> <dwr:include method="ajaxTransDelete" /> <dwr:include method="ajaxTransAdd" /> <dwr:include method="ajaxTransEdit" /> </dwr:remote> </bean> 10 July 2012, 16:15
by
- Added lines 225-228:
Ajax pomocí DWR (Direct Web Remoting)17 April 2010, 14:36
by
- Changed lines 51-52 from:
Nejčastější klávesové zkratky, které mohou výrazným způsobem urychlit práci eclipse-zkratky.txt to:
Nejčastější klávesové zkratky, které mohou výrazným způsobem urychlit práci eclipse-zkratky.txt, další zajímavé informace na http://tipy.kiv.zcu.cz 06 December 2009, 17:48
by
- Added line 249:
Changed lines 252-255 from:
Pokud budete chtít přidat stránku se statickým obsahem, využijte služeb to:
03 December 2009, 03:18
by
- Added lines 65-70:
SVN pluginy pro eclipse
v případě prioblémů zkuste navštívit http://wiki.eclipse.org/SVN_Howto Changed lines 73-74 from:
to:
Netbeans IDE maji plugin pro SVN defaultně zabudovaný. 03 December 2009, 03:11
by
- Added lines 51-52:
Nejčastější klávesové zkratky, které mohou výrazným způsobem urychlit práci eclipse-zkratky.txt 03 December 2009, 03:06
by
- Deleted line 241:
Added lines 243-245:
Nastaveni kontrolerů pro poskytování statických stránek a namapováni jednotlivých kontrolerů na URL se nachází v souboru 30 November 2009, 23:59
by
- Changed lines 96-102 from:
S principiálním popisem začnu od pohledu uživatele. Tomu přijde do browseru html kód, které umí browser zobrazit. HTML kód se odešle ze servletového kontejneru po příchozím requestu. Servletový kontejner vytváří tento zmiňovaný kód ze servletů. Ty získává dynamicky překladem jsp stránek na servlety. A teď, po trochu nudném úvodu, se dostáváme ke kořenu věci, tedy k tomu, jakým způsobem nám Spring zajistí propojení celé aplikace. to:
S principiálním popisem začnu od pohledu uživatele.
A teď, po trochu nudném úvodu, se dostáváme ke kořenu věci, tedy k tomu, jakým způsobem nám Spring zajistí propojení celé aplikace. 30 November 2009, 23:56
by
- Changed lines 90-94 from:
to:
30 November 2009, 23:54
by
- Changed lines 81-84 from:
Implementace aplikaceDodržujte prosím ImplementacniKonvence. Pro snažší zorientování ve třídách a metodách je doporučeno vygenerování javadocu příkazem to:
Implementace
Konfigurační souboryAdded lines 94-95:
MVC - Model-view-controllerChanged lines 129-130 from:
Jenže než přijde ke slovu konkrétní controller, tak v této beaně jsou přiřazeny 2 interceptory v části properties. Takovýto interceptor má na starosti provést implementovaný kód před tím, než předá řízení controlleru to:
interceptoryJenže než přijde ke slovu konkrétní controller, tak v této beaně jsou přiřazeny 2 interceptory v části properties. Takovýto interceptor má na starosti provést implementovaný kód před tím, než předá řízení controlleru
Ve Spotu je implementována pouze metoda ControlleryAdded line 173:
DAO30 November 2009, 23:35
by
- Added lines 35-36:
Snažte se prosím tyto rady dodržovat a nevnášejte do aplikace ještě větší zmatek, než je v ní nyní ;) Dále by bylo více než vhodné třídy, metody a proměnné pojmenovávat anglicky a češtinu používat pouze v komentářích (bez diakritiky). Changed lines 77-78 from:
Jemné seznámení s datovým modelemto:
Datový modelChanged lines 81-84 from:
Princip implementace aplikacedodrzovat ImplementacniKonvence to:
Implementace aplikaceDodržujte prosím ImplementacniKonvence. Pro snažší zorientování ve třídách a metodách je doporučeno vygenerování javadocu příkazem Changed lines 220-221 from:
Stejně tak se snažte dodržet použité jmenné konvence a nevnášejte do aplikace ještě větší zmatek, než je v ní nyní ;) Dále by bylo více než vhodné třídy, metody a proměnné pojmenovávat anglicky a češtinu používat pouze v komentářích (bez diakritiky). to:
30 November 2009, 23:14
by
- Added lines 215-216:
30 November 2009, 23:02
by
- Changed lines 185-186 from:
Tak toto byla asi nejtěžší část celého seznámení se SPOTem?. Doufám tedy, že jsem vám alespoň objasnil základní princip fungování aplikace. Na principu tohoto příkladu příkladu více méně funguje celá aplikace. to:
Tak toto byla asi nejtěžší část celého seznámení se SPOTem. Doufám tedy, že jsem vám alespoň objasnil základní princip fungování aplikace. Na principu tohoto příkladu příkladu více méně funguje celá aplikace. Changed line 193 from:
Logováníto:
Logování a komentářeAdded lines 196-197:
Zkuste psát minimálně dostačující dokumentační komentáře, které budou vašim následovníkům k něčemu a ne k ničemu. Postupem doby se došlo k doporučení používat ke komentářům sice češtinu, ale bez diakritiky. Vývoj SPOTu probíhá na operačním systému windows a linux, každý systém používá defaultně jiné kódování a i přes opratrnost v commitech se vyskytují neustále problémy s diakritikou ve zdrojových kódech. Čeština tedy bez diakritiky! Changed lines 216-217 from:
Zkuste psát minimálně dostačující dokumentační komentáře, které budou vašim následovníkům k něčemu a ne k ničemu. Stejně tak se snažte dodržet použité jmenné konvence a nevnášejte do aplikace ještě větší zmatek, než je v ní nyní ;) Dále by bylo více než vhodné třídy, metody a proměnné pojmenovávat anglicky a češtinu používat pouze v komentářích. to:
Stejně tak se snažte dodržet použité jmenné konvence a nevnášejte do aplikace ještě větší zmatek, než je v ní nyní ;) Dále by bylo více než vhodné třídy, metody a proměnné pojmenovávat anglicky a češtinu používat pouze v komentářích (bez diakritiky). 30 November 2009, 22:50
by
- Added lines 49-59:
IDE, nastavení kódování projektuLinuxNastavení kódování celého projektu v IDE je velice důležité. Pod operačním systémem linux je automaticky v IDE Netbeans i Eclipse nastaveno kódování projektu (a všech jeho souborů) na UTF8. WindowsV případě použítí MS windows je situace závislá na konkrétním IDE:
30 November 2009, 21:29
by
- Added lines 194-201:
Tipy a triky
24 November 2009, 14:57
by
- Added line 8:
/scripts - obsahuje jednoduché skripty pro windows(bat) i linux(sh), spuštění aplikace, vytvoření war souboru, vytvoření dokumentace 23 November 2009, 18:47
by
- Changed lines 41-42 from:
Je více méně na vás, jaké IDE si zvolíte. Ať už NetBeans? nebo Eclipse (případně IntelliJ? Idea nebo jiné) nabízí nepřeberné množství různých pluginů, které nám mají usnadnit práci. Dají se nainstalovat pluginy pro práci s Mavenem, Springem aj. Tato volba je opravdu jen na vás. to:
Je více méně na vás, jaké IDE si zvolíte. Ať už Netbeans nebo Eclipse (případně IntelliJ Idea nebo jiné) nabízí nepřeberné množství různých pluginů, které nám mají usnadnit práci. Dají se nainstalovat pluginy pro práci s Mavenem, Springem aj. Tato volba je opravdu jen na vás. Added lines 46-48:
Tutoriál pro spustění aplikace naleznete na stránce NasazeniAplikace SVNChanged lines 52-53 from:
Pro týmovou spolupráci je vhodné zprovoznit SVN pro prostředí Netbeans. Pokud nemáte operační systém Windows Vista 64-bit, u kterého se zprovoznění nepovede, je to velmi jednoduché: to:
Pro týmovou spolupráci je vhodné zprovoznit SVN pro prostředí Netbeans. Pokud nemáte operační systém Windows Vista 64-bit, u kterého se zprovoznění nepovede, je to velmi jednoduché:
Changed lines 59-60 from:
Tutoriál pro spustění aplikace naleznete na stránce NasazeniAplikace to:
Odkazy
23 November 2009, 18:36
by
- Changed line 46 from:
Nastavení SVN pro Netbeansto:
Nastavení SVN pro NetbeansAdded lines 56-57:
Tutoriál pro spustění aplikace naleznete na stránce NasazeniAplikace 23 November 2009, 18:15
by
- Changed lines 39-40 from:
to:
Nastavení IDEChanged lines 43-58 from:
Instalace a spuštění postgresql databázeNávod instalce je určen pro linux. Práce v psql konzoli je nezávislá na platformě. $ sudo apt-get install postgresql #yum install postgresql $ sudo passwd postgres #Změní heslo uživaleli 'postgres' $ sudo /etc/init.d/postgresql-* restart #Restartuje server $ su postgres #Přihlášení jako administrátor databáze $ createdb postgres #vytvoří databázi nazvanou 'postgres' $ psql postgres #přihlášení do databáze 'postgres' postgres=# ALTER USER postgres with password 'postgres'; #nastaví heslo uživateli 'postgres' v databázi na 'postgres' postgres=# \i spot.sql #provedení příkazů ze souboru, př. nahraje dump databáze projektu Nastavení IDE Eclipseto:
EclipseDeleted lines 59-62:
Spuštění aplikacePro windows: turorial-spot-app-spusteni.zip [0,4 MB] 23 November 2009, 18:11
by
- Changed lines 38-57 from:
Konfigurace aplikaceJe potřeba mít nainstalovaný:
Nyní to záleží na zvycích vývojáře jak to vyřeší se servletovým kontejnerem.
Pro zdárný běh aplikace je potřeba nakonfigurovat pár konfiguračních souborů pro local: ./src/main/resources/WEB-INF/properties/jdbc.properties - přístup k postgresql(heslo a jméno databáze a uživatele, který k ní má práva) ./src/main/resources/WEB-INF/classes/log4j.properties - nastavení cesty, kam se budou zapisovat logy, případně velikost logovacího souboru. ./src/main/resources/WEB-INF/classes/spot.properties - různé možnosti nastaveni vlastní aplikace. to:
22 November 2009, 17:54
by
- Changed lines 50-51 from:
Pro zdárný běh aplikace je potřeba nakonfigurovat pár konfiguračních souborů pro local: to:
Pro zdárný běh aplikace je potřeba nakonfigurovat pár konfiguračních souborů pro local: 10 November 2009, 18:47
by - 10 November 2009, 18:47
by
- Changed lines 64-69 from:
[@$ sudo apt-get install postgresql #yum install postgresql $ sudo passwd postgres #Změní heslo uživaleli 'postgres' $ sudo /etc/init.d/postgresql-* restart #Restartuje server $ su postgres #Přihlášení jako administrátor databáze $ createdb postgres #vytvří databázi nazvanou 'postgres' to:
[@$ sudo apt-get install postgresql #yum install postgresql $ sudo passwd postgres #Změní heslo uživaleli 'postgres' $ sudo /etc/init.d/postgresql-* restart #Restartuje server $ su postgres #Přihlášení jako administrátor databáze $ createdb postgres #vytvoří databázi nazvanou 'postgres' 10 November 2009, 18:45
by - 10 November 2009, 18:45
by
- Changed lines 62-64 from:
Návod instalce je určen pro linux. Práce v psqlkonzoli je nezávislá na platformě. [@sudo apt-get install postgresql #yum install postgresql to:
Návod instalce je určen pro linux. Práce v psql konzoli je nezávislá na platformě. [@$ sudo apt-get install postgresql #yum install postgresql 10 November 2009, 18:44
by
- Changed lines 61-63 from:
/sudo apt-get install postgresql \sudo passwd postgres #Změní heslo to:
Návod instalce je určen pro linux. Práce v psqlkonzoli je nezávislá na platformě. sudo apt-get install postgresql #yum install postgresql $ sudo passwd postgres #Změní heslo uživaleli 'postgres' $ sudo /etc/init.d/postgresql-* restart #Restartuje server $ su postgres #Přihlášení jako administrátor databáze $ createdb postgres #vytvří databázi nazvanou 'postgres' $ psql postgres #přihlášení do databáze 'postgres' postgres=# ALTER USER postgres with password 'postgres'; #nastaví heslo uživateli 'postgres' v databázi na 'postgres' postgres=# \i spot.sql #provedení příkazů ze souboru, př. nahraje dump databáze projektu 10 November 2009, 18:29
by
- Changed lines 61-63 from:
sudo apt-get install postgresql sudo passwd postgres #Změní heslo to:
/sudo apt-get install postgresql \sudo passwd postgres #Změní heslo 10 November 2009, 18:28
by
- Added lines 60-63:
Instalace a spuštění postgresql databázesudo apt-get install postgresql sudo passwd postgres #Změní heslo 05 November 2009, 18:38
by
- Added lines 19-21:
/target - defaultní adresář pro vygenerovaný war soubor a vygenerovanou dokumentaci /site - adresář pro vygenerované stránky projektu /apidocs - pro javadoc 03 November 2009, 20:54
by
- Changed line 7 from:
/logs - sem se mohou(podle nastavení v log4j.properties) zapisovat logy aplikace to:
/logs - sem se mohou(podle nastavení v log4j.properties) zapisovat logy aplikace Changed line 9 from:
/src - adresář obsahuje všechny zdrojové a konfigurační souboru. to:
/src - adresář obsahuje všechny zdrojové a konfigurační soubory. Changed line 13 from:
/WEB-INF - adresář jako takový obsahuje konfigurační soubory pro spring + web.xml. to:
/WEB-INF - adresář jako takový obsahuje konfigurační soubory pro spring + web.xml. Changed line 16 from:
/properties - obsahuje konfigurační properties soubory to:
/properties - obsahuje konfigurační properties soubory Changed lines 38-45 from:
* Java 5.0 nebo vyšší * Maven, ideálně 2.0.x * Postgresql 8.1 - na toto pozor! Při mém 1. deployi SPOT běžel nad postgres 7.4 a kvůli mě a mým předchůdcům se překlápěl na 8.1 ... - a to je více méně vše. Nyní to záleží na zvycích vývojáře jak to vyřeší se servletovým kontejnerem. 1. volbou je využívat pluginu do mavenu jetty, o používání více v dokumentu popisTechnologii. 2. volbou je mít "nainstalovaný" servletový kontejner Tomcat a nebo Jetty, na kterých SPOT určitě běží. A poslední možností je používat spouštění aplikace z IDE. Předchůdci vyvíjeli v eclipse a zásadně buildili z něj. Pro zdárný běh aplikace je potřeba nakonfigurovat pár souborů pro local: to:
Nyní to záleží na zvycích vývojáře jak to vyřeší se servletovým kontejnerem.
Pro zdárný běh aplikace je potřeba nakonfigurovat pár konfiguračních souborů pro local: Changed lines 124-125 from:
A nebo v případě nějaké chyby se do mv vloží Object reprezentující chybový stav. Tohoto je pak využito v kódu jsp stránek, kdy v případě, že došlo k nějaké chybě se vypíše chybová hláška například "error.unknow" na místo toho, aby se vypsala nekompletní data. Řetězec error.unknow je k uložen v souborech messages_xx.properties v různých jazykových mutacích. to:
A nebo v případě nějaké chyby se do mv vloží Object reprezentující chybový stav. Tohoto je pak využito v kódu jsp stránek, kdy v případě, že došlo k nějaké chybě se vypíše chybová hláška například "error.unknow" na místo toho, aby se vypsala nekompletní data. Řetězec error.unknow je k uložen v souborech messages_xx.properties v různých jazykových mutacích. 03 November 2009, 20:24
by
- pridany odkazyChanged line 8 from:
/sql - obsahuje sql scripty pro vytvoření potřebných tabulek a sekvencí. to:
/sql - obsahuje sql scripty pro vytvoření potřebných tabulek a sekvencí. Changed line 14 from:
/classes - obsahuje soubory s lokalizačními řetězci. to:
/classes - obsahuje soubory s lokalizačními řetězci. Changed line 18 from:
/test/java/cz/zcu/kiv/spot - adresář obsahující veškeré testy aplikace. to:
/test/java/cz/zcu/kiv/spot - adresář obsahující veškeré testy aplikace. Changed lines 37-40 from:
Je potřeba mít nainstalovaný: - Java 5.0 nebo vyšší - Maven, ideálně 2.0.x - Postgresql 8.1 - na toto pozor! Při mém 1. deployi SPOT běžel nad postgres 7.4 a kvůli mě a mým předchůdcům se překlápěl na 8.1 ... to:
Je potřeba mít nainstalovaný: * Java 5.0 nebo vyšší * Maven, ideálně 2.0.x * Postgresql 8.1 - na toto pozor! Při mém 1. deployi SPOT běžel nad postgres 7.4 a kvůli mě a mým předchůdcům se překlápěl na 8.1 ... Changed lines 52-53 from:
Je více méně na vás, jaké IDE si zvolíte. Ať už NetBeans? nebo Eclise (případně IntelliJ? Idea nebo jiné) nabízí nepřeberné množství různých pluginů, které nám mají usnadnit práci. Dají se nainstalovat pluginy pro práci s Mavenem, Springem aj. Tato volba je opravdu jen na vás. to:
Je více méně na vás, jaké IDE si zvolíte. Ať už NetBeans? nebo Eclipse (případně IntelliJ? Idea nebo jiné) nabízí nepřeberné množství různých pluginů, které nám mají usnadnit práci. Dají se nainstalovat pluginy pro práci s Mavenem, Springem aj. Tato volba je opravdu jen na vás. Changed lines 67-72 from:
Jemné seznámení s datovým modelem.V současné době má datový model 20 tabulek. Avšak v blízké či vzdálenější budoucnosti je v plánu tento stav o pár dalších rozšířit. TODO pridat datovy model to:
Jemné seznámení s datovým modelemV současné době má datový model okolo 20 tabulek. Avšak v blízké či vzdálenější budoucnosti je v plánu tento stav o pár dalších rozšířit. Changed lines 85-86 from:
S principiálním popisem začnu od pohledu uživatele. Tomu přijde do browseru html kód, které umí browser zobrazit. HTML kód se odešle ze servletového kontejneru po příchozím requestu. Servletový kontejner vytváří tento zmiňovaný kód ze servletů. Ty získává dynamicky překladem jsp stránek na servlety. A teď, po trochu nudném úvodu, se dostáváme ke kořenu věci, tedy k tomu, jakým způsobem nám Spring zajistí propojení celé aplikace. Servletovému kontejneru přijde požadavek, který obsahuje informace ve stylu: "Pošli mi potřebná data pro toto URL: http://ip.adresa.servletové.kontejneru:port/spot/sprava/uzivatele". Spring ví, že s daným URL je provázán konkrétní controller, který se stará o to, aby byla uživateli poslaná potřebná data. Controller je vždy nadefinován ve své beaně. to:
S principiálním popisem začnu od pohledu uživatele. Tomu přijde do browseru html kód, které umí browser zobrazit. HTML kód se odešle ze servletového kontejneru po příchozím requestu. Servletový kontejner vytváří tento zmiňovaný kód ze servletů. Ty získává dynamicky překladem jsp stránek na servlety. A teď, po trochu nudném úvodu, se dostáváme ke kořenu věci, tedy k tomu, jakým způsobem nám Spring zajistí propojení celé aplikace. Servletovému kontejneru přijde požadavek, který obsahuje informace ve stylu: "Pošli mi potřebná data pro toto URL: http://ip.adresa.servletové.kontejneru:port/spot/sprava/uzivatele". Spring ví, že s daným URL je provázán konkrétní controller, který se stará o to, aby byla uživateli poslaná potřebná data. Controller je vždy nadefinován ve své beaně. 31 October 2009, 18:21
by
- doplneny odkazyAdded lines 77-79:
dodrzovat ImplementacniKonvence Changed lines 183-185 from:
to:
Zpracování vyjímek31 October 2009, 18:05
by
- Added line 187:
Added line 193:
31 October 2009, 17:14
by
- merge dokumentace se SVN docAdded lines 37-43:
Je potřeba mít nainstalovaný: - Java 5.0 nebo vyšší - Maven, ideálně 2.0.x - Postgresql 8.1 - na toto pozor! Při mém 1. deployi SPOT běžel nad postgres 7.4 a kvůli mě a mým předchůdcům se překlápěl na 8.1 ... - a to je více méně vše. Nyní to záleží na zvycích vývojáře jak to vyřeší se servletovým kontejnerem. 1. volbou je využívat pluginu do mavenu jetty, o používání více v dokumentu popisTechnologii. 2. volbou je mít "nainstalovaný" servletový kontejner Tomcat a nebo Jetty, na kterých SPOT určitě běží. A poslední možností je používat spouštění aplikace z IDE. Předchůdci vyvíjeli v eclipse a zásadně buildili z něj. Added lines 52-53:
Je více méně na vás, jaké IDE si zvolíte. Ať už NetBeans? nebo Eclise (případně IntelliJ? Idea nebo jiné) nabízí nepřeberné množství různých pluginů, které nám mají usnadnit práci. Dají se nainstalovat pluginy pro práci s Mavenem, Springem aj. Tato volba je opravdu jen na vás. Added lines 67-72:
Jemné seznámení s datovým modelem.V současné době má datový model 20 tabulek. Avšak v blízké či vzdálenější budoucnosti je v plánu tento stav o pár dalších rozšířit. TODO pridat datovy model 31 October 2009, 16:44
by
- odkazy na jiz vytvorene strankyChanged lines 166-168 from:
JSPCílem je, aby se veškeré zobrazované statické texty načítaly z messages_xx.properties, kde xx představuje danou jazykovou mutaci(cz, en a de). Tyto texty se snadno vypíší například přes to:
Lokalizace v JSPSamostatná stránka věnovaná lokalizaci aplikace SPOT. Changed lines 175-176 from:
Bylo by více než vhodné, aby jste při práci s třídami, na kterých budete pracovat, k nim rovnou psali alespoň základní testy. Netvrdím, že můj nástřel testů je dostačující, na druhou stranu ho lze použít jako vodítko. to:
Bylo by více než vhodné, aby jste při práci s třídami, na kterých budete pracovat, k nim rovnou psali alespoň základní testy. Netvrdím, že můj nástřel testů je dostačující, na druhou stranu ho lze použít jako vodítko. 19 September 2009, 15:02
by
- drobnostiChanged lines 178-179 from:
Zkuste psát minimálně dostačující dokumentační komentáře, které budou vašim následovníkům k něčemu a ne k ničemu. Stejně tak se snažte dodržet použité jmenné konvence a nevnášejte do aplikace ještě větší zmatek, než je v ní nyní ;) Dále by bylo více než vhodné třídy, metody a proměnné pojmenovávat anglicky a češtinu používat pouze v komentářích. to:
Zkuste psát minimálně dostačující dokumentační komentáře, které budou vašim následovníkům k něčemu a ne k ničemu. Stejně tak se snažte dodržet použité jmenné konvence a nevnášejte do aplikace ještě větší zmatek, než je v ní nyní ;) Dále by bylo více než vhodné třídy, metody a proměnné pojmenovávat anglicky a češtinu používat pouze v komentářích. 06 September 2009, 15:55
by
- Changed lines 59-60 from:
turorial-spot-app-spusteni.zip [0,4 MB] to:
Pro windows: turorial-spot-app-spusteni.zip [0,4 MB] 06 September 2009, 15:53
by
- Changed line 48 from:
to:
Nastavení SVN pro NetbeansChanged line 51 from:
Pro týmovou spolupráci je vhodné zprovoznit SVN pro prostředí NetBeans?. Pokud nemáte operační systém Windows Vista 64-bit, u kterého se zprovoznění nepovede, je to velmi jednoduché: to:
Pro týmovou spolupráci je vhodné zprovoznit SVN pro prostředí Netbeans. Pokud nemáte operační systém Windows Vista 64-bit, u kterého se zprovoznění nepovede, je to velmi jednoduché: 06 September 2009, 15:47
by
- Pridan tutorial pro ide netbeans pro linuxChanged lines 46-47 from:
turorial-spot-win32-ide-eclipse.zip [1,4 MB] to:
Pro windows i pro unix: turorial-spot-win32-ide-eclipse.zip [1,4 MB] Changed lines 49-50 from:
to:
Pro unix: tutorial-spot-unix-ide-netbeans.zip [0,7 MB] 06 September 2009, 11:45
by
- Pridany tutorialy pro ide eclipse a spusteni aplikaceAdded lines 45-47:
Nastavení IDE Eclipseturorial-spot-win32-ide-eclipse.zip [1,4 MB] Changed lines 57-59 from:
to:
Spuštění aplikaceturorial-spot-app-spusteni.zip [0,4 MB] 29 March 2009, 18:50
by
- Changed line 47 from:
Pro týmovou spolupráci je vhodné zprovoznit SVN pro prostředí NetBeans?. Pokud nemáte operační systém Windows Vista 64-bit, u kterého se sprovoznění nepovede, je to velmi jednoduché: to:
29 March 2009, 18:48
by
- Changed lines 45-54 from:
to:
23 February 2009, 10:51
by
- Changed lines 64-65 from:
[@<bean id="urlAbcMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping?" abstract="false" singleton="true" to:
[@<bean id="urlAbcMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping?" abstract="false" singleton="true" 21 February 2009, 20:47
by
- Changed lines 41-42 from:
./src/main/resources/WEB-INF/classes/log4j.properties - nastavit cestu, kam se budou zapisovat logy, případně velikost logovacího souboru. to:
./src/main/resources/WEB-INF/classes/log4j.properties - nastavení cesty, kam se budou zapisovat logy, případně velikost logovacího souboru. 21 February 2009, 20:44
by
- Changed line 16 from:
/properties - obsahuje velkou část konfiguračních properties souborů to:
/properties - obsahuje konfigurační properties soubory Changed lines 23-37 from:
projekt, application značka, tag, kategorie úzus, usage odkaz, link typ zdrojů, source usages komentář, comment uživatel, user to:
21 February 2009, 20:43
by
- Added line 25:
Added line 27:
Added line 29:
Added line 31:
Added line 33:
Added line 35:
Changed lines 39-42 from:
SPOT - Slovník Překladů Odborné terminologie. úzus - například angličtina může mít několik odnoží. Například je rozdíl mezi anglickou a americkou angličtinou. Tyto varianty angličtin pak nazveme úzusy. to:
21 February 2009, 20:42
by
- Changed line 88 from:
Nyní tedy konečně přichází ke slovu to:
Nyní tedy konečně přichází ke slovu Changed lines 109-110 from:
Tento kousek kódu říká, že do daného Listu, se mají uložit všichni uživatelé. DictionaryManager?@] je do adminUserControlleru@] injektován Springem, proto je v controlleru tento setter: to:
Tento kousek kódu říká, že do daného Listu, se mají uložit všichni uživatelé. 21 February 2009, 18:47
by
- Changed lines 86-90 from:
Jenže než přijde ke slovu konkrétní controller, tak v této beaně jsou přiřazeny 2 interceptory v části properties. Takovýto interceptor má na starosti provést implementovaný kód před tím, než předá řízení controlleru adminUserController. (Pozn.: tedy v případě,že interceptory jsou implementované ve spotu. Intercetpory dědí od HandlerInterceptorAdapter?, který má 3 metody - preHandle(HttpServletRequest? request, HttpServletResponse? response, Object handler), postHandle(HttpServletRequest? request, HttpServletResponse? response, Object handler, ModelAndView? modelAndView) a afterCompletion(HttpServletRequest? request, HttpServletResponse? response, Object handler, Exception ex). Ve Spotu je implementována pouze metoda preHandle().) Beana interceptoru vypadá podobně jako beana controlleru. Například authInterceptor se stará o jednoduché řízení přístupu k některým URL na základě práv, která mají jednotlivý uživatelé. Pokud průchod interceptorem skončí návratovou hodnotou true, předá se řízení controlleru adminUserController, jinak se (v naší implementaci) provede přesměrování na jiné URL a vyhození vyjímky. Nyní tedy konečně přichází ke slovu AdminUserController?. Tento implementuje rozhraní Controller, který má k naimplementování pouze 1 metodu, tou je handleRequest(HttpServletRequest? request, HttpServletResponse? response), která navrací ModelAndView?(mv). ModelAndView? slouží k předávání objektů získaných například z databáze na základě požadavku uživatele. Tyto objekty se pak předají do patřičných jsp stránek a zobrazí uživateli. Patřičné jsp strámky jsou vždy uvedeny uvnitř controlleru. Příklad: mv = new ModelAndView?("/WEB-INF/jsp/admin/admin-users.jsp"); A nebo v případě nějaké chyby se do mv vloží Object reprezentující chybový stav. Tohoto je pak využito v kódu jsp stránek, kdy v případě, že došlo k nějaké chybě se vypíše chybová hláška například "error.unknow" na místo toho, aby se vypsala nekompletní data. Řetězec error.unknow je k uložen v souborech messages_xx.properties v různých jazykových mutacích. to:
Jenže než přijde ke slovu konkrétní controller, tak v této beaně jsou přiřazeny 2 interceptory v části properties. Takovýto interceptor má na starosti provést implementovaný kód před tím, než předá řízení controlleru Nyní tedy konečně přichází ke slovu Changed lines 109-110 from:
Tento kousek kódu říká, že do daného Listu, se mají uložit všichni uživatelé. DictionaryManager? je do adminUserControlleru injektován Springem, proto je v controlleru tento setter: to:
Tento kousek kódu říká, že do daného Listu, se mají uložit všichni uživatelé. DictionaryManager?@] je do adminUserControlleru@] injektován Springem, proto je v controlleru tento setter: Changed lines 115-116 from:
Zpět k volání dictionaryManager.getAllUsers(). Podíváme-li se na implementaci rozhraní DictionaryManager?, nalezneme tam tento kód: to:
Zpět k volání Changed lines 121-122 from:
Z něho vidíme, že je třeba jít do datové vrstvy aplikace k DAO rozhraním a jejich implementaci. Implementace UserDaoImpl? je ta třída, která už komunikuje s databází.(Pozn.: S db komunikuje přímo jdbc, ale naše DAO jsou poslední z pohledu aplikace.) Pojďme se podívat jak přesně funguje. to:
Z něho vidíme, že je třeba jít do datové vrstvy aplikace k DAO rozhraním a jejich implementaci. Implementace Changed lines 128-129 from:
Metoda getAllUsers() je přehledná. Nejdříve je popsán string, který představuje SQL dotaz nad databází. Následuje return, který navrací volání dotazu sql za použití UserRowMapper?(). UserRowMapper? je vnitřní privátní třída třídy UserDaoImpl? a zajišťuje namapování jednotlivých záznamů z tabulky "users" na doménové objekty User. to:
Metoda Changed lines 153-154 from:
Cílem je, aby se veškeré zobrazované statické texty načítaly z messages_xx.properties, kde xx představuje danou jazykovou mutaci(cz, en a de). Tyto texty se snadno vypíší například přes <fmt:message key="index.jakPrispet.popis" />, kde index.jakPrispet.popis je záznam v messages_xx.properties a má přiřazen daný přeložený řetězec, který se vypíše. Volba příslušné jazykové mutace je závislá na aktuální uživatelově volbě. to:
Cílem je, aby se veškeré zobrazované statické texty načítaly z messages_xx.properties, kde xx představuje danou jazykovou mutaci(cz, en a de). Tyto texty se snadno vypíší například přes 21 February 2009, 18:38
by
- Changed lines 49-54 from:
to:
21 February 2009, 18:37
by
- Changed lines 6-20 from:
/doc - tento adresář by měl obsahovat dokumentaci... /logs - sem se mohou(podle nastavení v log4j.properties) zapisovat logy aplikace /sql - obsahuje sql scripty pro vytvoření potřebných tabulek a sekvencí. /src - adresář obsahuje všechny zdrojové a konfigurační souboru. /main /java/cz/zcu/kiv/spot - adresář, kde se nachází veškeré zdrojové kódy. /resources/static - adresář s javascripty, potřebnými obrázky a kaskádovými styly. /WEB-INF - adresář jako takový obsahuje konfigurační soubory pro spring + web.xml. /classes - obsahuje soubory s lokalizačními řetězci. /jsp - obsahuje veškeré jsp soubory v daných podadresářích. /properties - obsahuje velkou část konfiguračních properties souborů /tld - potřebné tag libraries.. /test/java/cz/zcu/kiv/spot - adresář obsahující veškeré testy aplikace. /temp - obsahuje vzorové soubory pro import slov ze souboru a je pracovním adresářem při hromadném importu slov. to:
/doc - tento adresář by měl obsahovat dokumentaci... /logs - sem se mohou(podle nastavení v log4j.properties) zapisovat logy aplikace /sql - obsahuje sql scripty pro vytvoření potřebných tabulek a sekvencí. /src - adresář obsahuje všechny zdrojové a konfigurační souboru. /main /java/cz/zcu/kiv/spot - adresář, kde se nachází veškeré zdrojové kódy. /resources/static - adresář s javascripty, potřebnými obrázky a kaskádovými styly. /WEB-INF - adresář jako takový obsahuje konfigurační soubory pro spring + web.xml. /classes - obsahuje soubory s lokalizačními řetězci. /jsp - obsahuje veškeré jsp soubory v daných podadresářích. /properties - obsahuje velkou část konfiguračních properties souborů /tld - potřebné tag libraries.. /test/java/cz/zcu/kiv/spot - adresář obsahující veškeré testy aplikace. /temp - obsahuje vzorové soubory pro import slov ze souboru a je pracovním adresářem při hromadném importu slov. Changed lines 39-44 from:
Pro zdárný běh aplikace je potřeba nakonfigurovat pár souborů pro local: ./src/main/resources/WEB-INF/properties/jdbc.properties - přístup k postgresql(heslo a jméno databáze a uživatele, který k ní má práva) ./src/main/resources/WEB-INF/classes/log4j.properties - nastavit cestu, kam se budou zapisovat logy, případně velikost logovacího souboru. ./src/main/resources/WEB-INF/classes/spot.properties - různé možnosti nastaveni vlastní aplikace. to:
Pro zdárný běh aplikace je potřeba nakonfigurovat pár souborů pro local: ./src/main/resources/WEB-INF/properties/jdbc.properties - přístup k postgresql(heslo a jméno databáze a uživatele, který k ní má práva) ./src/main/resources/WEB-INF/classes/log4j.properties - nastavit cestu, kam se budou zapisovat logy, případně velikost logovacího souboru. ./src/main/resources/WEB-INF/classes/spot.properties - různé možnosti nastaveni vlastní aplikace. 21 February 2009, 18:32
by
- Changed lines 152-157 from:
to:
LogováníKdyž se dostanete k práci s neokomentovanou třídou, dookomentujte jí. Času je na to třeba minimum a když se nám pak předhodí log ze serveru s tím, že aplikace padá tehdy a tehdy, tak se alespoň bude dát z logu poznat, co se před spadnutím aplikace dělo a také proč spadla. Z toho plyne, ze nebude problém chybu opravit. Čtení logu má být jako čtení knihy s příběhem, v každé části by mělo být jasné co se děje. TestováníBylo by více než vhodné, aby jste při práci s třídami, na kterých budete pracovat, k nim rovnou psali alespoň základní testy. Netvrdím, že můj nástřel testů je dostačující, na druhou stranu ho lze použít jako vodítko. Changed line 161 from:
Pokud budete chtít přidat stránku se statickým obsahem, využijte služeb StaticPageControlleru?. to:
Pokud budete chtít přidat stránku se statickým obsahem, využijte služeb 21 February 2009, 18:22
by
- Deleted lines 4-28:
Co je potřeba mít nainstalované a v jaké verziNa tuto část je třeba dát si pozor. Když jsme projekt přebíral já, tak to vypadalo tak, že jsem se sešel s mým předchůdcem a ten mi řekl, že to běží nad Postgresql, používá se tam to to to a to, ale už neřekl nic o verzích. To, že jsme vyvíjel na nejnovějších verzích se mi následně vymstilo při deployi aplikace o půl roku později... Věnujte tedy prosím tomuto dokumentu pozornost a nezapomeňte jej pravidelně aktualizovat. Je potřeba mít nainstalovaný: - Java 5.0 nebo vyšší - Maven, ideálně 2.0.x - Postgresql 8.1 - na toto pozor! Při mém 1. deployi SPOT běžel nad postgres 7.4 a kvůli mě a mým předchůdcům se překlápěl na 8.1 ... - a to je více méně vše. Nyní to záleží na zvycích vývojáře jak to vyřeší se servletovým kontejnerem. 1. volbou je využívat pluginu do mavenu jetty, o používání více v dokumentu popisTechnologii. 2. volbou je mít "nainstalovaný" servletový kontejner Tomcat a nebo Jetty, na kterých SPOT určitě běží. A poslední možností je používat spouštění aplikace z IDE. Předchůdci vyvíjeli v eclipse a zásadně buildili z něj. Pro zdárný běh aplikace je potřeba nakonfigurovat pár souborů pro local: ./src/main/resources/WEB-INF/properties/jdbc.properties - přístup k postgresql(heslo a jméno databáze a uživatele, který k ní má práva) ./src/main/resources/WEB-INF/classes/log4j.properties - nastavit cestu, kam se budou zapisovat logy, případně velikost logovacího souboru. ./src/main/resources/WEB-INF/classes/spot.properties - různé možnosti nastaveni vlastní aplikace. IDEJe více méně na vás, jaké IDE si zvolíte. Ať už NetBeans? nebo Eclise (případně IntelliJ? Idea nebo jiné) nabízí nepřeberné množství různých pluginů, které nám mají usnadnit práci. Dají se nainstalovat pluginy pro práci s Mavenem, Springem aj. Tato volba je opravdu jen na vás. Jemné seznámení s datovým modelem.V současné době má datový model 20 tabulek. Avšak v blízké či vzdálenější budoucnosti je v plánu tento stav o pár dalších rozšířit. Pokud se podaří, bude externě dodáno schéma, na kterém bude jasně vidět, co s čím a jak je propojeno. Bohužel vás asi jen odkážu na komentáře u jednotlivých tabulek a vaši fantazii. Bez ERA modelu, na který nemám čas, toho asi moc nepopíši. Changed lines 10-18 from:
/main /java/cz/zcu/kiv/spot - adresář, kde se nachází veškeré zdrojové kódy. /resources/static - adresář s javascripty, potřebnými obrázky a kaskádovými styly. /WEB-INF - adresář jako takový obsahuje konfigurační soubory pro spring + web.xml. /classes - obsahuje soubory s lokalizačními řetězci. /jsp - obsahuje veškeré jsp soubory v daných podadresářích. /properties - obsahuje velkou část konfiguračních properties souborů /tld - potřebné tag libraries.. /test/java/cz/zcu/kiv/spot - adresář obsahující veškeré testy aplikace. to:
/main /java/cz/zcu/kiv/spot - adresář, kde se nachází veškeré zdrojové kódy. /resources/static - adresář s javascripty, potřebnými obrázky a kaskádovými styly. /WEB-INF - adresář jako takový obsahuje konfigurační soubory pro spring + web.xml. /classes - obsahuje soubory s lokalizačními řetězci. /jsp - obsahuje veškeré jsp soubory v daných podadresářích. /properties - obsahuje velkou část konfiguračních properties souborů /tld - potřebné tag libraries.. /test/java/cz/zcu/kiv/spot - adresář obsahující veškeré testy aplikace. Deleted line 20:
Changed lines 37-44 from:
to:
Konfigurace aplikacePro zdárný běh aplikace je potřeba nakonfigurovat pár souborů pro local: ./src/main/resources/WEB-INF/properties/jdbc.properties - přístup k postgresql(heslo a jméno databáze a uživatele, který k ní má práva) ./src/main/resources/WEB-INF/classes/log4j.properties - nastavit cestu, kam se budou zapisovat logy, případně velikost logovacího souboru. ./src/main/resources/WEB-INF/classes/spot.properties - různé možnosti nastaveni vlastní aplikace. 21 February 2009, 18:18
by
- Added lines 1-175:
Jemný úvod od aplikaceTento dokument má za cíl sloužit jako pomocník pro "rychlé" zorientování se ve aplikaci a její architektuře. Co je potřeba mít nainstalované a v jaké verziNa tuto část je třeba dát si pozor. Když jsme projekt přebíral já, tak to vypadalo tak, že jsem se sešel s mým předchůdcem a ten mi řekl, že to běží nad Postgresql, používá se tam to to to a to, ale už neřekl nic o verzích. To, že jsme vyvíjel na nejnovějších verzích se mi následně vymstilo při deployi aplikace o půl roku později... Věnujte tedy prosím tomuto dokumentu pozornost a nezapomeňte jej pravidelně aktualizovat. Je potřeba mít nainstalovaný: - Java 5.0 nebo vyšší - Maven, ideálně 2.0.x - Postgresql 8.1 - na toto pozor! Při mém 1. deployi SPOT běžel nad postgres 7.4 a kvůli mě a mým předchůdcům se překlápěl na 8.1 ... - a to je více méně vše. Nyní to záleží na zvycích vývojáře jak to vyřeší se servletovým kontejnerem. 1. volbou je využívat pluginu do mavenu jetty, o používání více v dokumentu popisTechnologii. 2. volbou je mít "nainstalovaný" servletový kontejner Tomcat a nebo Jetty, na kterých SPOT určitě běží. A poslední možností je používat spouštění aplikace z IDE. Předchůdci vyvíjeli v eclipse a zásadně buildili z něj. Pro zdárný běh aplikace je potřeba nakonfigurovat pár souborů pro local: ./src/main/resources/WEB-INF/properties/jdbc.properties - přístup k postgresql(heslo a jméno databáze a uživatele, který k ní má práva) ./src/main/resources/WEB-INF/classes/log4j.properties - nastavit cestu, kam se budou zapisovat logy, případně velikost logovacího souboru. ./src/main/resources/WEB-INF/classes/spot.properties - různé možnosti nastaveni vlastní aplikace. IDEJe více méně na vás, jaké IDE si zvolíte. Ať už NetBeans? nebo Eclise (případně IntelliJ? Idea nebo jiné) nabízí nepřeberné množství různých pluginů, které nám mají usnadnit práci. Dají se nainstalovat pluginy pro práci s Mavenem, Springem aj. Tato volba je opravdu jen na vás. Jemné seznámení s datovým modelem.V současné době má datový model 20 tabulek. Avšak v blízké či vzdálenější budoucnosti je v plánu tento stav o pár dalších rozšířit. Pokud se podaří, bude externě dodáno schéma, na kterém bude jasně vidět, co s čím a jak je propojeno. Bohužel vás asi jen odkážu na komentáře u jednotlivých tabulek a vaši fantazii. Bez ERA modelu, na který nemám čas, toho asi moc nepopíši. Adresářová struktura/doc - tento adresář by měl obsahovat dokumentaci... /logs - sem se mohou(podle nastavení v log4j.properties) zapisovat logy aplikace /sql - obsahuje sql scripty pro vytvoření potřebných tabulek a sekvencí. /src - adresář obsahuje všechny zdrojové a konfigurační souboru. /main /java/cz/zcu/kiv/spot - adresář, kde se nachází veškeré zdrojové kódy. /resources/static - adresář s javascripty, potřebnými obrázky a kaskádovými styly. /WEB-INF - adresář jako takový obsahuje konfigurační soubory pro spring + web.xml. /classes - obsahuje soubory s lokalizačními řetězci. /jsp - obsahuje veškeré jsp soubory v daných podadresářích. /properties - obsahuje velkou část konfiguračních properties souborů /tld - potřebné tag libraries.. /test/java/cz/zcu/kiv/spot - adresář obsahující veškeré testy aplikace. /temp - obsahuje vzorové soubory pro import slov ze souboru a je pracovním adresářem při hromadném importu slov. Jmenné konvenceTato kapitola je v rámci SPOTu? docela problémová. Člověk se v aplikaci může setkat s tím, že jeden termín má i 3 ekvivalentní výrazy. Tomuto bych zde rád věnoval pár řádků. Zde jsou uvedená některá synonyma, na která jsem si vzpomněl: projekt, application značka, tag, kategorie úzus, usage odkaz, link typ zdrojů, source usages komentář, comment uživatel, user Význam některých výrazů:SPOT - Slovník Překladů Odborné terminologie. úzus - například angličtina může mít několik odnoží. Například je rozdíl mezi anglickou a americkou angličtinou. Tyto varianty angličtin pak nazveme úzusy. Princip implementace aplikace
S principiálním popisem začnu od pohledu uživatele. Tomu přijde do browseru html kód, které umí browser zobrazit. HTML kód se odešle ze servletového kontejneru po příchozím requestu. Servletový kontejner vytváří tento zmiňovaný kód ze servletů. Ty získává dynamicky překladem jsp stránek na servlety. A teď, po trochu nudném úvodu, se dostáváme ke kořenu věci, tedy k tomu, jakým způsobem nám Spring zajistí propojení celé aplikace. Servletovému kontejneru přijde požadavek, který obsahuje informace ve stylu: "Pošli mi potřebná data pro toto URL: http://ip.adresa.servletové.kontejneru:port/spot/sprava/uzivatele". Spring ví, že s daným URL je provázán konkrétní controller, který se stará o to, aby byla uživateli poslaná potřebná data. Controller je vždy nadefinován ve své beaně. <bean id="adminUsersController" class="cz.zcu.kiv.spot.controllers.AdminUsersController"> <property name="dictionaryManager" ref="dictionaryManager" /> <property name="pagingHelper" ref="pagingHelper" /> </bean> Id značí unikátní jméno, pod kterým je daná beana známa ostatním beanám, class je cesta ke controlleru a property říká, že je závislá na těch daných beanách. Toto provázání je zaznamenáno v beanách v souboru spot-servlet.xml. Konkrétně: <bean id="urlAbcMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default"> <property name="interceptors"> <list> <ref bean="settingInterceptor" /> <ref bean="authInterceptor" /> </list> </property> <property name="urlMap"> <map> . . <entry key="/sprava/uzivatele" value-ref="adminUsersController" /> . . </map> </property> <property name="alwaysUseFullPath" value="true" /> </bean> Jenže než přijde ke slovu konkrétní controller, tak v této beaně jsou přiřazeny 2 interceptory v části properties. Takovýto interceptor má na starosti provést implementovaný kód před tím, než předá řízení controlleru adminUserController. (Pozn.: tedy v případě,že interceptory jsou implementované ve spotu. Intercetpory dědí od HandlerInterceptorAdapter?, který má 3 metody - preHandle(HttpServletRequest? request, HttpServletResponse? response, Object handler), postHandle(HttpServletRequest? request, HttpServletResponse? response, Object handler, ModelAndView? modelAndView) a afterCompletion(HttpServletRequest? request, HttpServletResponse? response, Object handler, Exception ex). Ve Spotu je implementována pouze metoda preHandle().) Beana interceptoru vypadá podobně jako beana controlleru. Například authInterceptor se stará o jednoduché řízení přístupu k některým URL na základě práv, která mají jednotlivý uživatelé. Pokud průchod interceptorem skončí návratovou hodnotou true, předá se řízení controlleru adminUserController, jinak se (v naší implementaci) provede přesměrování na jiné URL a vyhození vyjímky. Nyní tedy konečně přichází ke slovu AdminUserController?. Tento implementuje rozhraní Controller, který má k naimplementování pouze 1 metodu, tou je handleRequest(HttpServletRequest? request, HttpServletResponse? response), která navrací ModelAndView?(mv). ModelAndView? slouží k předávání objektů získaných například z databáze na základě požadavku uživatele. Tyto objekty se pak předají do patřičných jsp stránek a zobrazí uživateli. Patřičné jsp strámky jsou vždy uvedeny uvnitř controlleru. Příklad: mv = new ModelAndView?("/WEB-INF/jsp/admin/admin-users.jsp"); A nebo v případě nějaké chyby se do mv vloží Object reprezentující chybový stav. Tohoto je pak využito v kódu jsp stránek, kdy v případě, že došlo k nějaké chybě se vypíše chybová hláška například "error.unknow" na místo toho, aby se vypsala nekompletní data. Řetězec error.unknow je k uložen v souborech messages_xx.properties v různých jazykových mutacích. try { /* Pokud bylo zadane nove heslo */ if (!pass.equals("")) { user.setNpass(user.getPass()); } dictionaryManager.saveUser(user); mv.addObject("completeMsg", "editUser.complete"); } catch (Exception e) { logger.error("V aplikaci doslo k nasledujici chybe: " + e); mv.addObject("errorViewMsg", "error.unknow"); return; } Tak a nyní se dostáváme k tomu, jak se data z databáze dostanou ke controlleru.
Tento kousek kódu říká, že do daného Listu, se mají uložit všichni uživatelé. DictionaryManager? je do adminUserControlleru injektován Springem, proto je v controlleru tento setter: public void setDictionaryManager(DictionaryManager dictionaryManager) { this.dictionaryManager = dictionaryManager; } Zpět k volání dictionaryManager.getAllUsers(). Podíváme-li se na implementaci rozhraní DictionaryManager?, nalezneme tam tento kód: public List<User> getAllUsers() { return userDao.getAllUsers(); } Z něho vidíme, že je třeba jít do datové vrstvy aplikace k DAO rozhraním a jejich implementaci. Implementace UserDaoImpl? je ta třída, která už komunikuje s databází.(Pozn.: S db komunikuje přímo jdbc, ale naše DAO jsou poslední z pohledu aplikace.) Pojďme se podívat jak přesně funguje. public List<User> getAllUsers () { String sql = "SELECT * FROM users ORDER BY login"; return getJdbcTemplate().query(sql, new UserRowMapper ()); } Metoda getAllUsers() je přehledná. Nejdříve je popsán string, který představuje SQL dotaz nad databází. Následuje return, který navrací volání dotazu sql za použití UserRowMapper?(). UserRowMapper? je vnitřní privátní třída třídy UserDaoImpl? a zajišťuje namapování jednotlivých záznamů z tabulky "users" na doménové objekty User. private class UserRowMapper implements RowMapper { public Object mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("users_id")); user.setLogin(rs.getString("login")); user.setPass(rs.getString("pass")); user.setFirstname(rs.getString("firstname")); user.setLastname(rs.getString("lastname")); user.setEmail(rs.getString("email")); user.setEmailpub(rs.getString("email_pub")); user.setHomepage(rs.getString("homepage")); user.setDescription(rs.getString("description")); user.setRights(rs.getInt("rights")); user.setActive(rs.getInt("active")); user.setActiveCode("active_code"); return user; } } Tak toto byla asi nejtěžší část celého seznámení se SPOTem?. Doufám tedy, že jsem vám alespoň objasnil základní princip fungování aplikace. Na principu tohoto příkladu příkladu více méně funguje celá aplikace. JSPCílem je, aby se veškeré zobrazované statické texty načítaly z messages_xx.properties, kde xx představuje danou jazykovou mutaci(cz, en a de). Tyto texty se snadno vypíší například přes <fmt:message key="index.jakPrispet.popis" />, kde index.jakPrispet.popis je záznam v messages_xx.properties a má přiřazen daný přeložený řetězec, který se vypíše. Volba příslušné jazykové mutace je závislá na aktuální uživatelově volbě. VšeobecněZkuste psát minimálně dostačující dokumentační komentáře, které budou vašim následovníkům k něčemu a ne k ničemu. Stejně tak se snažte dodržet použité jmenné konvence a nevnášejte do aplikace ještě větší zmatek, než je v ní nyní ;) Dále by bylo více než vhodné třídy, metody a proměnné pojmenovávat anglicky a češtinu používat pouze v komentářích. Pokud budete chtít přidat stránku se statickým obsahem, využijte služeb StaticPageControlleru?. |