JAT - Java Technologie

Podklady a informace k předmětu Java Technologie. Předmět se zaměřuje na rozšíření znalostí a dovedností studentů v oblasti platformy JavaSE a JavaEE.

V průběhu semestru se mohou tyto informace měnit.

Na každém cvičení se vypracovává bodovaný příklad a studenti musejí nasbírat alespoň polovinu těchto bodů ze cvičení aby mohli získat zápočet.

Ukázkový projekt

Pročištěná verze ukázkového projektu přizpůsobená letošním verzím SW.

CompanyExample2015.zip

Přednášky

 JAT přednášky (JAT přednášky PDF)

1. týden (15. 19.9.) Úvodní informace k předmětu, Něco o Javě, komponenty, model Event-Listener, JavaBean (úvod)
 
2. týden (22. - 26.9.)

JavaBeans (dokončení), Java GUI (SWING), XML a zpracování XML v jazyce Java

Příklad zadání na cvičení: Vytvořte JavaBean komponentu Zbozi. Komponenta bude mít vlastnosti "jmeno", "jednotka" (ta bude typu výčtový typ s hodnotami kusy, kila, metry), "mnozstvi". Vlastnisti "jmeno" a "jednotka" budou bounded a vlastnost "mnozstvi" bude constrained. V případě že komponenta bude mít nastavenu jednotku na kusy nebude možno zadávat množství v desetinném tvaru (použíjde VetoableChangeListener). Vytvořte GUI, které umožní nastavovat, jednotlivé vlastnosti komponenty a bude vypisovat do textového pole (nebo jinak graficky zobrazovat) stav komponenety. GUI bude využívat LayoutManagery tak aby vypadalo hezky. Načtěte a uložte data ve formátu XML.
3. týden (29.9. - 3.10.) JNDI, JDBC
Příklad zadání na cvičení: Připojte se prostřednictvím JNDI k systému DNS:
env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
env.put("java.naming.provider.url", "dns://158.196.149.9/vsb.cz");
Vypište všechny záznamy v tomto kontextu a ve všech jeho podkontextech.
Připojte se na databázi mysql na stroji pca1035a.vsb.cz. Název db je shop, jméno je shop heslo je shop. Vypište obsah tabulky products.
4. týden (6. - 10.10.) HTTP, JavaEE - Architektura, Servelty (úvod)
Příklad zadání na cvičení: Vytvořte program, který se připojína databázi a pomocí prepared statement vloží do tabulky nové záznamy a pro, každý vložený záznam vypíše vygenerované ID. Vytvořte Servlet který vypíše obsah tabulky do stránky HTML.
5. týden (13. - 17.10.) Servlety, Filtry
Příklad zadání na cvičení: Vytvořte servle, který zobrazí HTML stránku s dialogem (combo box, nebo radio button) pro výběr sekcí knih (sci-fi, beletrie, učebnice, ...), po výběru bude uživatel přesměrován pomocí forward funkce servletu na danou statickou stránku (každá sdekce bude mít přiřazené číslo a stránky sekce budou mít tvar sekce_1.html). Vytvořte filtr, který v každé odpovědi najde text "__DOBA_ZPRACOVANI__" a nahradí ho dobou zpracování stránky v milisekundách (desetinné číslo). Vložte text "__DOBA_ZPRACOVANI__" do každé stránky z první části úlohy a zjistěte dobu zpracování.
6. týden (20. - 24.10.) JSF - základy
Příklad zadání na cvičení: Vytvořte JSF stránky, které umožní přihlášení uživatelů. V systému bude vždy existovat jeden uživatel admin, po jeho přihlášení půjde přidávat a editovat další uživatele. Po přihlášení se také vypíše tabulka se seznamem uživatelů. Uživatel se bude moc odhlásit.
7. týden (27.10. - 31.10.) JSF - pokračování
Příklad zadání na cvičení: Vytvořte JSF stránky pro vkládání Aut a Řidičů. Zajistěte aby bylo možno k Autům přiřazovat jejich řidiče s použitím ComboBoxu (využíjte Converter) a zajistětě aby při vkládání Aut byla poznávací značka validována na správny formát (využijte Validator)
8. týden (3. - 7.11.) SessionBean
Příklad zadání na cvičení: Vytvořte Enterpries aplikaci (EAR), která bude obsahovat webový (WAR) a EJB modul. V EJB modulu vytvořte SessionBean s metodou, která má atributy jméno a heslo a vrací uživatele s tímto jménem a heslem. Pokud takový není vrací metoda hodnotu NULL. Využijte tuto SessionBean v webovém modulo pro přihlášení uživatele. Ve webovém modulu rovněž vytvořte servlet, který také použije tuto SessionBeanu k přihlášení uživatele a dále vypíše JNDI serveru (celou stromovou strukturu), mněla by obsahovat vytvořenou SessionBean.
9. týden (10. - 14.11.) JPA
Příklad zadání na cvičení: Vytvořte dvě entity Player a Team. Ty propojte vazbou 1:N. Vytvořte jednoduché JSF stránky, které ověří funkčnost entit.
10. týden (17. - 21.11.) JPA, DAO
Příklad zadání na cvičení: Využijte entity z předchozího cvičení a vytvořte pro ně dva různé způsoby ukládání (pomocí JPA a JDBC). Využijte návrhový vzor DAO.
11. týden (24. - 28.11.) XML, WebServices v Javě
 
12. týden (1. - 5.12.) Struts 2
 
13. týden (8. - 12.12.) Odevzdání projektu
 
14. týden (15. - 19.12.) Zápočtová písemka
 

Podmínky pro udělení klasifikovaného zápočtu

  • Odevzdání projetu v termínu.
  • Absolvování závěrečného testu.
  • Nasbírání minimálního počtu bodů na cvičení.
  • Projekt bude hodnocen maximálně 40, minimálně je nutno získat 20.
  • Na cvičeních v 2. až 12. týdnu bude rozděleno 36 bodů přičemž maximálně lze započítat do celkových výsledků 30 bodů a minimálně je nutno získat 15 bodů
  • Závěrečný test bude hodnocen maximálně 30 minimálně je nutno získat 15.
  • Celkový součet bodů za cvičení, projekt a závěrečný test musí být minimálně 51 bodů.

Zadání semestrálního projektu

Studenti denního studia budou projekty odevzdávat nejpozději na cvičeních týden před zápočtovým týdnem a bude nahrán do systému Edison.

Studenti Kombinovaného studia budou projekty odevzdávat elektronicky přes systém edison nejpozději do konce roku (kombinovaní). Poté je nutné individuálně domluvit osobní předvedení projektu.

Webový informační systém splňující následující podmínky:

  • Web vrstva s využitím JSF
  • Přístup k DB pomocí JPA
  • Session bean mohou být ve web containeru JavaEE serveru
  • Databázové tabulky budou představova mapování minimálně 4 tříd. Mezi entitními třídamy bude existovat minimálně jedna vazba 1-N a bude existovat dětičnost, která bude namapována do DB tabulek.
  • Systém bude obsahovat veřejnou a neveřejnou část (dostupnou po přihlášení do systému)
  • Systém použije css styly pro ohezčení aplikace
  • GUI aplikace bude obsahovat komponenty jako ComboBox (SelectOne nebo SelectMany)
  • konvertory pro konverzi objektů (javax.faces.convert.Converter)
  • Vazby mezi objekty budou v GUI nastavovány pomocí komponent a objektů ne přes zadání ID objektu do textového pole.

Závěrečný test

Závěrečný test pro studenty denního studia bude probíhat na cvičeních v zápočtovém týdnu. Bude se jednat o test v programování na počítači, kdy studenti budou řešit krátké programátorské úlohy. Každý student má pouze jeden pokus na složení tohoto testu.

Kombinovaní studenti nebudou psát závěrečný test.

Nastavení TomEE pro lepší logování

Zkopírovat a případně upravit logging.properties z [tomee-home]/conf/ do Eclipsu nastavení serveru.

Do spouštěcí/debugovací konvigurace v Eclipse přidat argumenty uvedené níže:.

 

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file="${workspace_loc}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/logging.properties"

server.xml

<Resource auth="Container" description="jat2017" 
driverClassName="org.apache.derby.jdbc.ClientDriver"
name="datasources/jat2017" password="app" username="app"
type="javax.sql.DataSource"
url="jdbc:derby://localhost/jat2017cv10v2;create=true"/>

context.xml

	<ResourceLink name="datasources/jat2017" 
global="datasources/jat2017"
type="javax.sql.DataSource" />

Načtení hesla pomocí JOptionPane

	public static String getPassword(String login) {
JPasswordField passwordField = new JPasswordField();
passwordField.setEchoChar('*');
Object[] obj = { "Please enter the password for login " + login + ":\n\n", passwordField };
Object stringArray[] = { "OK", "Cancel" };
if (JOptionPane.showOptionDialog(null, obj, "Need password", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE, null, stringArray, obj) == JOptionPane.YES_OPTION) {
return new String(passwordField.getPassword());
}
return "";
}

SQL pro Vytvoření tabulky (Derby DB)

CREATE TABLE students(
id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
name VARCHAR(25), points DECIMAL(10,2),
PRIMARY KEY(id))