České vysoké učení technické v Praze Fakulta elektrotechnická
ˇ VUT FEL katedra pocˇı´tacˇu˚ C
Bakalářská práce Internetový obchod se svářecí technikou a příslušenstvím Jan Pičkar
Vedoucí práce: Ing. Miroslav Balík, Ph.D.
Studijní program: Elektrotechnika a informatika B2612/2257 Obor: Výpočetní technika 2007
ii
Poděkování Tímto bych chtěl poděkovat všem pracovníkům firmy Alis spol. s r.o. za pomoc při zhotovení této bakalářské práce a za poskytnutí potřebné literatury, užitečných rad k vyřešení zadání a také za možnost využití potřebného softwarového a hardwarového vybavení. iii
iv
Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Novém Boru dne 19.8.2007
………………………………… v
vi
Abstract This work describes the design and possible realizations of an internet shop including the concept for a specific implementation.
Abstrakt Tato práce popisuje návrh a možnosti implementace internetového obchodu včetně návrhu konkrétní implementace.
vii
viii
Obsah Seznam obrázků ............................................................................................ xi 1 Úvod ............................................................................................................. 1 1.1 Stručná historie Internetu........................................................................ 1 1.2 Internetový obchod ................................................................................. 2 2 Použité technologie..................................................................................... 4 2.1 Programovací jazyk JAVA....................................................................... 4 2.2 Servlety ................................................................................................... 4 2.3 Java Server Pages.................................................................................. 5 2.4 Hibernate ................................................................................................ 6 2.5 Databáze PostgreSQL ............................................................................ 8 2.6 Apache Tomcat....................................................................................... 9 2.7 Eclipse .................................................................................................... 9 2.8 Enterprise Architect............................................................................... 10 3 Popis a vymezení cílů bakalářské práce ................................................. 11 4 Analýza požadavků na aplikaci ................................................................ 11 4.1 Klientský přístup.................................................................................... 11 4.2 Administrátorský přístup ....................................................................... 12 5 Návrh implementace ................................................................................. 14 5.1 Návrh databáze..................................................................................... 14 5.2 Způsob autorizace uživatele ................................................................. 14 6 Popis implementace.................................................................................. 16 6.1 Vytvoření tabulek databáze................................................................... 16 6.2 Autorizace uživatele.............................................................................. 16 6.3 Nákupní košík ....................................................................................... 16 6.4 Struktura kódu....................................................................................... 18 7 Testování.................................................................................................... 19 8 Porovnání s existujícími obchody............................................................. 19
ix
9 Závěr........................................................................................................... 20 10 Seznam použité literatury ....................................................................... 21 A Vytvoření tabulek ...................................................................................... 22 B Rozdělení kategorií ................................................................................... 24 C Uživatelská příručka ................................................................................. 29 1 Instalační příručka.................................................................................... 29 1.1 Vytvoření databáze ......................................................................... 29 1.2 Instalace obchodu........................................................................... 29 2 Ovládání – administrátorská část............................................................. 31 2.1 Objednávky ....................................................................................... 31 2.2 Kategorie ........................................................................................... 32 2.3 Výrobci .............................................................................................. 32 2.4 Zboží ................................................................................................. 33 3 Ovládání – klientská část ......................................................................... 34 3.1 Základní okno.................................................................................... 34 3.2 Výběr zboží ....................................................................................... 34 3.3 Košík ................................................................................................. 36 3.4 Objednání.......................................................................................... 37 3.5 Přihlášení .......................................................................................... 37 3.6 Registrace ......................................................................................... 38 3.7 Odhlášení ze systému ....................................................................... 38 D Obsah přiloženého CD ............................................................................. 39
x
Seznam obrázků Obr 2.1 Vývojové prostředí Eclipse ............................................................................ 9 Obr 2.2 Prostředí Enterprise Architect...................................................................... 10 Obr 4.1 UseCase model ........................................................................................... 13 Obr 5.1 E—R diagram .............................................................................................. 15 Obr. C.2.1 Výpis objednávek .................................................................................... 31 Obr. C.2.2 Objednávka ............................................................................................. 31 Obr. C.2.3 Výpis kategorií......................................................................................... 32 Obr. C.2.4 Výpis výrobců.......................................................................................... 32 Obr. C.2.5 Výpis zboží.............................................................................................. 33 Obr. C.2.6 Detail produktu ........................................................................................ 33 Obr. C.3.1 Úvodní strana.......................................................................................... 34 Obr. C.3.2 Seznam produktů .................................................................................... 35 Obr. C.3.3 Detail produktu ........................................................................................ 35 Obr. C.3.4 Košík ....................................................................................................... 36 Obr. C.3.5 Objednávka ............................................................................................. 37 Obr. C.3.6 Přihlášení ................................................................................................ 37 Obr C.3.7 Registrační formulář................................................................................. 38
xi
xii
1 Úvod 1.1 Stručná historie Internetu Internet je celosvětová veřejná síť, kterou tvoří vzájemně propojené počítačové sítě. Tato "síť sítí" se skládá z miliónů malých domácích, akademických, podnikových a úředních sítí, které vzájemně sdílejí data a služby. Stejně jako řada dalších věcí, vděčí internet za svůj vznik armádě. Americká armáda vyžadovala pro komunikaci systém, který by neměl žádnou centrální složku a síť by tedy fungovala i tehdy, když by byly některé její části zničeny. Vývoj byl financován grantovou agenturou ministerstva obrany USA a probíhal na čtyřech univerzitách: University of California Los Angeles, Stanford Research Institute, University of California Santa Barbara a University of Utah. První datové pakety byly přeneseny 29. října 1969, kdy byl učiněn pokus o přihlášení se na počítač umístěný v SRI z UCLA. Pro vzájemnou komunikaci mezi uzly postupně se rozrůstající sítě byl používán protokol NCP. Uzly přibývaly postupně po celém území USA (13 v roce 1970, 29 v roce 1972, 40 v roce 1973). V roce 1973 pronikl ARPANET do Evropy, když se připojilo Norsko a záhy i Velká Británie. Tehdy se již ukazovaly nové možnosti využití v rámci elektronické poštovní komunikace, kterou o tři roky později poprvé využila i britská královna. V roce 1983 se od ARPANETu oddělila vojenská síť MILNET. Významným mezníkem je ovšem tento rok proto, že od jeho začátku byl definitivně NCP nahrazen protokoly TCP/IP. S nástupem lokálních sítí se ARPANET stále častěji stával pouze páteřní sítí pro přenos. I tuto jeho funkci však postupně přebrala NSFNET (National Science Foundation Network) a v březnu 1990 přišel konec ARPANETu. V roce 1987 je již v síti propojeno 27 000 počítačů a vzniká pojem Internet. V dalších letech je Timem Bernersem-Leejem publikován návrh vývoje WWW a v roce 1991 je nasazen v evropské laboratoři CERN. První WWW prohlížeč, Mosaic, vyvinul Marc Andreessen a dal jej roku 1993 volně k dispozici. Od roku 1994 přestává být Internet pouze akademickou záležitostí a začíná se komercializovat. Jeden z prvních internetových obchodů byl spuštěn v roce 1995. Tímto obchodem byl Amazon.com, který z počátku nabízel prodej knih. Později byla jeho nabídka rozšířena o DVD, CD, počítačové hry, elektroniku, hračky a další. Vytvořeno dle [12]
1
1.2 Internetový obchod Internetové obchodnictví je poměrně nový způsob prodeje zboží, přesto si však za relativně krátkou dobu získalo velkou oblibu prodejců i zákazníků a stalo se standardním způsobem nákupu mnoha druhů zboží. Internetový obchod je aplikace skládající se z mnoha webových stránek. Na stránkách jsou přehledně zobrazeny nabízené produkty včetně malého náhledu, který je možné zvětšit v detailu společně s podrobnějším popisem produktu. Tyto stránky byly z počátku vytvářeny jako statické, později, díky nástupu nových technologií a návaznosti na databáze, začaly být generovány dynamicky. To umožnilo větší komfort obsluhy ze strany zákazníka, obchodníka i správce obchodu. Jak se měnily možnosti tvorby stránek, rozšiřovaly se i požadavky na kvalitu zpracování prezentace obchodu a bezpečnosti bankovních transakcí prováděných v rámci nákupu zboží. V rámci uživatelského rozhraní se vytvořily určité standardy návrhu grafiky a rozmístění ovládacích prvků, takže zákazník při návštěvě různých obchodů se může v klidu soustředit na vlastní nákup a nemusí složitě hledat, jak se dopracovat ke zboží, o které se zajímá. Dnešní internetový obchod, který chce uspět u zákazníků, by měl splňovat několik základních požadavků. Jeho ovládání a grafická úprava musí být provedeny tak, aby zákazníkům umožnily snadnou orientaci v nabídce. Dobré je například využití piktogramů pro vložení zboží do košíku, náhledy, odeslání objednávky apod. Zákazník musí mít možnost získat maximum informací o nabízeném produktu. Tyto informace jsou dostupné v detailu zboží, kde bývají fotografie a jeho podrobný popis. Řada obchodů umožňuje platbu kreditními kartami. Zde je nutné zajistit bezpečnou komunikaci mezi zákazníkem a obchodem, aby nemohlo dojít k získání a zneužití platebních informací třetí stranou. Z
hlediska
obchodníka
nabízí
internetový
obchod
snadný
přehled
o objednávkách a jejich zpracování. Pokud je databáze obchodu svázána se skladovou evidencí, má obchodník přehled o stavu zásob na skladě. Tyto informace je možné zobrazit i zákazníkům, třeba i s údaji o dodacích lhůtách produktu.
2
Využitím nákupu přes Internet získává zákazník snadný přehled o nabízeném zboží jednotlivých obchodů a tím i rychlý způsob výběru nejvhodnějšího dodavatele, to vše 24 hodin denně a z pohodlí domova. Vzhledem k rostoucímu počtu uživatelů Internetu a ke vzrůstající počítačové gramotnosti obyvatelstva, dává elektronické obchodnictví velké možnosti prodeje a lze očekávat jeho další rozšiřování.
3
2 Použité technologie V této části je uveden základní popis technologií a softwarových produktů využitých při tvorbě této aplikace.
2.1 Programovací jazyk JAVA Java je programovací jazyk vyvíjený od roku 1991 firmou Sun Microsystems, který byl veřejnosti oficiálně představen v roce 1995. Tento jazyk byl vyvíjen na principech C a C++ a má tak s těmito jazyky obdobnou syntaxi. Na rozdíl od nich je však výsledný přeložený kód platformě nezávislý. Překlad zde totiž neprobíhá do jazyka relativních adres, který je v podstatě totožný se strojovým jazykem počítače, ale do pseudojazyka nazývaného byte-code, který je nezávislý na cílovém počítači. Přeložený program je uložen v souborech s vyhrazenou příponou .class. Tento soubor je pak z disku zaváděn do počítače a současně probíhá ověření bajtkódu, což je možné provést jednotně díky nezávislosti bajtkódu na platformě. Po ověření je program spouštěn pomocí interpreteru - Java je tudíž interpretovaný jazyk. Podrobněji v [1], [6]
2.2 Servlety Jde o programy napsané v jazyce JAVA, které běží na webovém serveru a působí jako střední vrstva mezi požadavkem přicházejícím z webového prohlížeče nebo od jiného HTTP klienta a databází či aplikací na serveru HTTP. Jejich úkolem je: 1. Přečíst všechna data odeslaná uživatelem. Tyto údaje se obvykle vkládají do formuláře na webové stránce, ale mohou také pocházet z javovského apletu nebo ze zákaznického programu klienta HTTP. 2. Vyhledat všechny další informace o požadavku, které jsou uloženy v dotazu HTTP. Tyto informace zahrnují podrobnosti o schopnostech prohlížeče, cookies, hostitelském jménu žádajícího klienta atd. 3. Vytvořit výsledky. Tento proces může vyžadovat komunikaci s databází nebo provést přímý výpočet odezvy. 4
4. Zformátovat výsledky uvnitř dokumentu. Ve většině případu toto zahrnuje uložení informací do stránky HTML. 5. Nastavení vhodných parametrů odezvy HTTP. Toto znamená sdělení prohlížeči jaký typ dokumentu se vrací (např. HTML), nastavení parametrů cookies a další takové úkoly. 6. Odeslání dokumentu zpět ke klientovi. Tento dokument lze poslat v textovém formátu (HTML) nebo v binárním formátu (např. obrázky). Podrobnější informace lze nalézt např. v [2]
2.3 Java Server Pages Jak vyplývá z názvu, je technologie JSP postavená na jazyce Java a poskytuje snadný intuitivní způsob tvorby servletů jazyka Java. Toho je docíleno tím, že je možné na stránkách JSP směšovat kód v jazyce HTML s programovacím jazykem. Kód napsaný v jazyce JAVA pomáhá počítači rozhodnout o dalším postupu při vytváření stránky pro klienta (např. zda použít ten či onen element HTML). JSP je veskrze serverová technologie. JSP má vůči ostatním technologiím zřetelnou výhodu. Java není skriptovací jazyk, takže dokument JSP není při každém požadavku interpretován úplně od začátku. Při prvním použití je dokument přeložen do bajtkódu jazyka Java, který je pak spouštěn při dalších požadavcích. Viz. [2], [3] Jednoduchý příklad JSP stránky ahoj.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String text="světe"; String jmeno = request.getParameter("jm"); if (jmeno!=null) text=jmeno; %> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Ahoj světe
5
Ahoj <%=text %>
Základní struktura odpovídá HTML kódu, ve kterém je závorkami <% %> uvozen kód jazyka Java. Předešlý kód testuje, zda se v HTML požadavku nachází parametr jm. Pokud ano, vypíše jeho hodnotu za slovem Ahoj, jinak je vypsáno slovo světe. Tedy požadavek ahoj.jsp vypíše Ahoj světe a požadavek ahoj.jsp?jm=Pepo vypíše Ahoj Pepo.
2.4 Hibernate Hibernate je framework umožňující mapování objektů v jazyce Java do relační databáze. Nezajišťuje však jen mapování Java tříd na databázové tabulky (a převod datových typů jazyka Java na datové typy SQL), ale také poskytuje podporu pro dotazování a zpracování dat navrácených SQL dotazem. Hibernate není vázán na konkrétní typ databáze. Pro komunikaci s databází využívá rozhraní JDBC. Díky tomu je možné změnit typ používané databáze beze změny kódu programu. Tento framework v mnohém zlehčuje práci programátora, který tak nemusí vytvářet vlastní způsob pro zápis a čtení údajů z databáze, a může se soustředit pouze na vývoj aplikace využívající dodané údaje. Podrobněji v [4], [7] Pro
propojení
Hibernate.cfg.xml
s
s
databází
informacemi
využívá o
typu
Hibernate databáze,
konfigurační přístupových
a mapovacích souborech. Příklad konfiguračního souboru:
<session-factory> <property name="connection.username">eobchod <property name="connection.password">eobchod <property name="connection.url"> jdbc:postgresql://localhost/eobchod <property name="connection.driver_class"> org.postgresql.Driver
6
soubor heslech
<property name="dialect"> org.hibernate.dialect.PostgreSQLDialect <mapping resource="cz/hopi/eobchod/sql/Test.hbm.xml"/>
Konfigurační soubor pro spojení s databází PostgreSQL přístupovým jménem a heslem eobchod/eobchod a s jednou tabulkou test. Příklad mapovacího Test.hbm.xml souboru pro tabulku Test:
<param name="sequence">test_id_seq <property name="text" type="string" length="50" /> <property name="datum" type="timestamp" />
Tento mapovací soubor umožní Hibernate vazbu mezi tabulkou test a třídou Test, jejichž výpisy jsou uvedeny dále. SQL definice tabulky test: CREATE TABLE test ( id serial NOT NULL, text character varying, CONSTRAINT test_pkey PRIMARY KEY (id) )
Třída Test: package cz.hopi.eobchod.sql; import java.io.Serializable; import java.sql.Timestamp; public class Test implements Serializable { private long id; private String text; private Timestamp datum; public Test(){ } public Test(String text) {
7
this.text=text; } public void setId(long id) { this.id=id; } public long getId() { return id; } public void setText(String nazev) { this.text=nazev; } public String getText() { return this.text; } public void setDatum(Timestamp datum) { this.datum=datum; } public Timestamp getDatum() { return this.datum; } public String toString() { return "" + id + ". " + text + " " + datum; } }
V programu Java pak pro získání seznamu všech položek z databáze, které mají v poli text hodnotu “TEST”, stačí provést následující kód: Configuration configuration = new Configuration(); //nacte konfiguracni soubor Hibernate.cfg.xml configuration.configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); session = sessionFactory.openSession(); Query q=session.createQuery("from Test where text=’TEST’"); List l=q.list(); for (int i=0;i
2.5 Databáze PostgreSQL PostrgeSQL je relační databázový systém vyvíjený jako open source. Během 15 let svého vývoje získal pověst spolehlivého a bezchybného systému. Je spustitelný na řadě hlavních operačních systémů, včetně Linuxu, UNIXu (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) a Windows. Zahrnuje datové typy dle standardů SQL92 a SQL99. Pro PostgreSQL jsou vyvinuta rozhraní pro jazyky C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC a další. Viz. [8]
8
2.6 Apache Tomcat Tomcat je oficiální referenční implementace technologií Java Servlet a Java Server Pages (JSP), obojí vyvíjené pod záštitou společnosti SUN. Viz. [9]
2.7 Eclipse Eclipse je open source vývojové prostředí určené pro programování v jazyce Java. Je však navrženo tak, že je možné jej pomocí modulů nadále rozšiřovat třeba i o podporu jiných jazyků např. C++ nebo PHP. Pluginy poskytují velkou variabilitu pro vývoj aplikací a umožňují tak prostředí Eclipse konfigurovat dle konkrétních požadavků. Viz. [10] Pro vývoj internetového obchod jsem využil plugin J2EE standard tools, který mimo jiné umožňuje editaci a spouštění JSP stránek přímo z prostředí Eclipse.
Obr 2.1 Vývojové prostředí Eclipse
9
2.8 Enterprise Architect Program Enterprise Architect (EA) pochází od rakouské firmy Sparx Systems. EA je určen pro platformu Windows. Je to vývojový nástroj pro vytváření vizuálního modelu vyvíjené aplikace, řadí se do skupiny tzv. CASE nástrojů. Využívá objektový modelovací jazyk UML 2.1. Viz. [11]
Obr 2.2 Prostředí Enterprise Architect
10
3 Popis a vymezení cílů bakalářské práce Cílem tohoto projektu je navrhnout a realizovat Internetovou aplikaci pro provoz Internetového obchodu se svářecí technikou a příslušenstvím. Podmínky pro implementaci •
Proveďte analýzu požadavků pro návrh Internetového obchodu, který nabízí svářecí a nástrojařskou techniku.
•
Základní rozdělení zboží do kategorií bude provedeno dle přílohy A.
Pro realizaci použijte technologie JSP a databázi PostgreSQL.
4 Analýza požadavků na aplikaci Internetový obchod by měl umožňovat dva základní módy přístupu - klientský a administrativní. Klient zde představuje běžného uživatele – zákazníka. Administrátor je obchodník s možností manipulace s Internetovým obchodem.
4.1 Klientský přístup Registrovaný i neregistrovaný zákazník má možnost prohlížet a prohledávat katalog produktů, který je pro lepší orientaci zákazníků rozdělen podle kategorií nebo podle výrobců. Neregistrovaný zákazník může provádět tyto akce: •
prohlížení produktů – prohlíží produkty zařazené v dané kategorii, nebo od vybraného výrobce,
•
prohlížení detailu produktu – detail obsahuje podrobné informace k produktu (popis, obrázky),
•
vyhledávání produktů – produkt je vyhledáván dle zadané části kódu nebo názvu
•
přidat produkt do košíku – libovolný produkt lze přidat do košíku,
•
odebrat produkt z košíku – libovolný produkt lze vyjmout z košíku,
•
editovat produkt v košíku – může změnit počet objednaných kusů od jednoho produktu, 11
•
registraci zákazníka - je zaznamenána fakturační a v případě, že se liší, i dodací adresa pro vyřízení objednávek,
•
odeslat košík – zákazník je vyzván k registraci, nebo alespoň k zadání základních fakturačních údajů, po té je vygenerována objednávka,
•
potvrdit objednávku – souhlasí-li zákazník s údaji v objednávce, může ji potvrdit a tím ji zadá do systému ke zpracování.
Registrovaný zákazník může navíc provádět: •
login – přihlášení do sytému (dojde k načtení informací o zákazníkovi),
•
logout – odhlášení ze systému,
•
změnu hesla – změna uživatelského hesla pro přihlášení do systému,
•
editovat dodací adresu – upravuje dodací adresu, která je uložena v systému.
4.2 Administrátorský přístup Je určen pro administraci aplikace provozovatelem obchodu. Přístup je povolen pouze po zadání administrátorského jména a hesla. Administrátor může spravovat katalog produktů a cen, vyřizovat objednávky, pracovat s databází zákazníků apod. •
editace kategorií – vytvoření, odstranění a změna kategorií pro řazení produktů,
•
editace výrobců – vytvoření, odstranění a změna výrobců jednotlivých produktů,
•
editace produktů – vytvoření, odstranění a změna produktů. U každé položky je možné definovat parametry jako kategorie, výrobce, název, cena, popis, obrázky,
•
administrace objednávek - systém umožní u objednávek nastavovat stav zpracovanosti objednávky, aby objednatel mohl sledovat, v jaké fázi je jeho objednávka: o Objednáno zákazníkem o Odesláno o Dodáno 12
Obr 4.1 UseCase model
13
5 Návrh implementace 5.1 Návrh databáze Databáze bude složena z následujících tabulek. Zákazník - je potřeba evidovat registrované zákazníky. Zákazník musí mít možnost se do sytému přihlásit – evidujeme tedy jeho login a heslo. Dále má každý zákazník vlastní fakturační a dodací (nepovinný údaj) adresu. Adresa – představuje tabulku fakturačních a dodacích adres. Povinné údaje jsou jméno, příjmení, ulice, č.p., město a PSČ. Objednávka – tabulka objednávek. Protože objednávku může vytvořit i neregistrovaný zákazník, je připojena i fakturační a dodací adresa. Toto má výhodu i vzhledem k historii objednávek, kdy u objednávky zůstane vždy ta adresa, pro kterou bylo objednáváno. Položka objednávky – obsahuje i cenu produktu, za kterou bylo objednáno (v tabulce produktů je vždy pouze aktuální cena, která se může průběžně měnit) Produkt – informace o produktu, vazba na výrobce a kategorii, ve které je produkt zařazen. Atribut jeNabizen znamená, zda je produkt v aktuální nabídce. Vzhledem k historii a vazbám produktů na tabulku objednávek se produkty z databáze nemažou, ale je jim nastaven tento atribut na false. Obrázek – představuje seznam obrázků k produktu. Ke každému produktu může být přiřazen jeden velký obrázek a jeden malý náhled. Obrázky jsou uloženy přímo v databázi. Výrobce – tabulka výrobců Kategorie – tvoří strom kategorií, do kterých jsou rozděleny jednotlivé produkty Vazby mezi tabulkami jsou zobrazeny v E-R diagramu na obrázku 5.1
5.2 Způsob autorizace uživatele Některé operace v rámci manipulace s obchodem je nutné zabezpečit heslem a ověřovat tak, zda uživatel má k dané stránce povolen přístup.
14
Obr 5.1 E—R diagram
15
Při přihlašování se bude zadané jméno a heslo porovnávat s údaji uloženými v databázi a po té se informace o tom, zda a který uživatel je přihlášen, uloží do session na serveru. Oproti jiným možnostem (parametr předávaný v URL, cookies) je tento způsob autentizace výhodnější. Cookies nemusí mít klient povoleny a nelze se tak na ně plně spolehnout. Pro parametr v URL by bylo potřeba při každém dotazu generovat unikátní sekvenci, ukládat ji do databáze a příchozí dotazy s nimi porovnávat. Session naproti tomu udržuje sám server, pro každé spojení je vytvořena session s unikátním ID, ve které je možné udržovat data potřebná pro toto spojení. Je možné nastavit dobu platnosti session a pokud v určené době nepřijde z daného spojení na server dotaz, je tato session zrušena.
6 Popis implementace 6.1 Vytvoření tabulek databáze SQL
příkazy pro vytvoření jednotlivých tabulek databáze jsou uvedeny
v příloze A.
6.2 Autorizace uživatele Přihlášení je realizováno porovnáním loginu a hesla se záznamy v databázi. Informace o id přihlášeného uživatele je pak držena v rámci SESSION. V databázi je uložen hash řetězec hesla a při přihlašování dochází pouze k porovnání těchto řetězců.
6.3 Nákupní košík Košík je realizován jako objekt jazyka Java obsahující seznam položek (objekt Polozka) a je uložen v SESSION. Objekt Polozka obsahuje id vloženého produktu a počet požadovaných kusů. public class Kosik { private List seznam; public Kosik() { if (seznam==null) { seznam = new ArrayList(); } } /** * Prida pouze novou polozku. Pokud je polozka v seznamu, neprida se
16
* @param polozka */ public void add(Polozka polozka) { if (find(polozka)==-1) seznam.add(polozka); } /** * Odstrani polozku * @param index - index odstranovane polozky */ public void remove(int index) { seznam.remove(index); } /** * Varti polozku s danym indexem * @param index * @return */ public Polozka get(int index) { return (Polozka)seznam.get(index); } /** * Vraci pocet polozek v kosiku * @return */ public int size() { return seznam.size(); } /** * Vraci index nalezene polozky * @param pol * @return index, -1 kdyz nenalezne */ public int find(Polozka pol) { for (int i=0; i<seznam.size(); i++) { if (((Polozka)seznam.get(i)).equals(pol)) return i; } return -1; } }
Položka košíku: public class Polozka { public final static String ID="id"; public final static String POCET="pocet"; private Map row; public Polozka() { if (row==null) { row=new HashMap(); } } public Polozka(long id, int pocet) { if (row==null) { row=new HashMap(); } row.put(Polozka.ID, new Long(id));
17
row.put(Polozka.POCET, new Integer(pocet)); } /** * Vraci id vlozeneho produktu * @return */ public Long getId() { return (Long)row.get(Polozka.ID); } /** * Nastaveni id produktu * @param id */ public void setId(long id) { row.put(Polozka.ID, new Long(id)); } /** * Vraci pocet kusu daneho produktu * @return */ public Integer getPocet() { return (Integer)row.get(Polozka.POCET); } /** * Nastaveni poctu kusu produktu * @param pocet */ public void setPocet(int pocet) { row.put(Polozka.POCET, new Integer(pocet)); } /** * Porovnani * @param pol * @return */ public boolean equals(Polozka pol) { if (this.getId().longValue()==pol.getId().longValue()) return true; else return false; } }
6.4 Struktura kódu Část kódu zajištující komunikaci s databází je psána přímo v jazyce Java a je uložena v balíku cz.hopi.eobchod a jeho podadresářích. Zde jsou také uloženy pomocné třídy, jako například třída Func, která obsahuje statické metody využité pro formátování a úpravu textu. Zajišťuje například náhradu znaků, které nejsou v HTML kódu povoleny nebo u nichž by mohlo dojít k záměně za HTML tagy. Vlastní stránky obchodu jsou tvořeny JSP soubory. Zde je celkem přehledně propojena dynamická část tvořená Java kódem se statickým HTML zápisem. Pro formátování výsledného zobrazení jsou využity CSS styly.
18
7 Testování Testování proběhlo v několika krocích. Nejprve byla aplikace spuštěna s prázdnou databází a bylo ověřeno, že nedochází k chybovým výpisům. Po té bylo do databáze přidáno několik položek. Tím bylo prověřeno zadávaní na straně administrátora i zobrazení na straně klienta. Bylo prověřeno chování při zadávání různých požadovaných údajů (např. registrační formulář, změna hesla). Při chybném, nebo nedostatečném vyplnění byl uživatel upozorněn na neúplné vyplnění formuláře. Dále byla ověřena reakce programu na zadání nesmyslných hodnot, např. vložení písmen tam, kde je očekáváno číslo. Program se choval korektně. Na závěr bylo ověřeno zobrazení v různých prohlížečích (MS Internet Explorer, Mozilla Firefox). Zde bylo vidět určité rozdíly ve zobrazení stránek. Tyto rozdíly však nenarušily celkovou strukturu a je možné je zanedbat.
8 Porovnání s existujícími obchody Firem nabízejících svařovací techniku je celá řada. Na Internetu však mají většinou pouhý přehled sortimentu, ale ne plnohodnotný Internetový obchod. Přesto je možné najít i Internetové obchody s nabídkou této techniky. Pro porovnání se mnou vytvořeným programem jsem vybral stránky firmy Omicron (www.gamasvar.cz), která je výrobcem svářecí techniky a firmu Obchody-24 (www.naradi-24.cz) nabízející mimo jiné svářecí techniku a nástroje. Protože nemám přístup k administrátorské části obou obchodů, budu porovnávat pouze část klientskou podle následujících parametrů: •
obchod má jazykové mutace,
•
zobrazuje novinky/akční nabídky,
•
má diskuzi k jednotlivým produktům,
•
umožňuje vyhledávání a fulltextové vyhledávání,
•
řazení podle parametrů (kromě ceny a názvu),
•
umožňuje porovnání zboží (přehledný výpis parametrů vybraných produktů),
•
možnost výběru způsobu platby.
19
parametr jazykové mutace akční nabídky novinky
Gamasvar ano ano ne
Nářadí-24 ne ano ano
můj obchod ne ano ano
diskuze k produktům
ne
ne
ne
vyhledávání / fulltext řazení dle vybraných prametrů porovnání zboží výběr způsobu platby
ano/ano
ano/ano
ano/ne
ne
ano
ne
ne
ano
ne
ano
ne
ano
Tab 8.1 Porovnání Internetových obchodů
9 Závěr V této práci byl předveden postup při návrhu Internetového obchodu a podle tohoto návrhu byl po té obchod za využití technologií JSP a Hibernate také realizován.
Výsledná
aplikace
nemůže
svým
rozsahem
plně
konkurovat
profesionálním řešením, přesto však splňuje základní požadavky pro elektronické obchodování. Pro další vylepšení se nabízí řada možností. Bylo by vhodné vytvořit správu jednotlivých uživatelů, rozšířit vyhledávání podle parametrů zboží, přidat možnost diskuze k jednotlivým produktům, nebo alespoň pro celý obchod. Vytvořená aplikace a dokumentace splňuje svým rozsahem a zpracováním požadavky dle zadání bakalářské práce.
20
10 Seznam použité literatury [1] HEROUT, Pavel. Učebnice jazyka Java. [s.l.] : Kopp, 2004. 349 s. ISBN 80-7232115-3. [2] BURD, Barry. JSP: JavaServer Pages : Podrobný průvodce. Brno : Computer Press, a.s., 2003. 381 s. ISBN 80-7226-804-X. [3] HALL, Marty. JAVA servlety a stránky JSP. [s.l.] : Neocortex spol. s r.o., 2001. 585 s. ISBN 80-86330-06-0. [4] PEAK,
Patrick,
HEUDECKER,
Nick.
Hibernate
quickly.
[s.l.] :
Manning
Publications Co., 2006. 425 s. ISBN 1932394419. [5] VOLDÁN, Jan. Internetový obchod. [s.l.], 2006. 41 s. Ceské vysoké ucení technické v Praze - Fakulta elektrotechnická. Bakalářská práce. Dostupný z WWW:
. [6] Java Technology [online]. Sun Microsystems, Inc., c1994-2007 [cit. 2007-08-10]. Dostupný z WWW: <java.sun.com>. [7] Hibernate [online]. Red Hat Middleware, LLC, c2006 [cit. 2007-08-10]. Dostupný z WWW: <www.hibernate.org>. [8] PostgreSQL [online]. PostgreSQL Global Development Group, c1996-2007 , 2007-08-07 [cit. 2007-08-10]. Dostupný z WWW: <www.postgresql.org>. [9] Apache Tomcat [online]. The Apache Software Foundation, c1999-2007 [cit. 2007-08-10]. Dostupný z WWW: . [10] Eclipse [online]. The Eclipse Foundation, c2007 [cit. 2007-08-10]. Dostupný z WWW: <www.eclipse.org>. [11] UML tools for software development and Modeling - Enterprise Architect Full Lifecycle UML modeling tool [online]. Sparx Systems Pty Ltd. , c2000-2007 [cit. 200707-01]. Dostupný z WWW: <www.sparxsystems.com.au>. [12] Wikipedia
[online].
[2007]
[cit.
2007-08-12].
<www.wikipedia.org>.
21
Dostupný
z
WWW:
A Vytvoření tabulek Zde jsou uvedeny SQL příkazy pro vytvoření jednotlivých tabulek. CREATE TABLE adresa ( id serial NOT NULL, jmeno character varying(100), prijmeni character varying(100), firma character varying(100), ulice character varying(100), mesto character varying(100), psc character varying(6), ico character varying(10), email character varying(100), tel character varying(45), teldodaci character varying(45), dic character varying(10), fax character varying(45), CONSTRAINT adresa_pkey PRIMARY KEY (id) ) CREATE TABLE kategorie ( id serial NOT NULL, nazev character varying(50) NOT NULL DEFAULT ''::character varying, popis character varying(255), nadrazenaid integer, disabled boolean, CONSTRAINT kategorie_pkey PRIMARY KEY (id) ) CREATE TABLE objednavka ( id serial NOT NULL, uzivatel integer, adresafakt integer, adresadod integer, datumporizeni timestamp without time zone, datumodeslani timestamp without time zone, datumvyrizeni timestamp without time zone, zpusobuhrady integer DEFAULT 0, stav integer DEFAULT 0, CONSTRAINT objednavka_pkey PRIMARY KEY (id) ) CREATE TABLE objpolozka ( id serial NOT NULL, objednavka integer NOT NULL DEFAULT 0, produkt integer NOT NULL DEFAULT 0, cena double precision NOT NULL DEFAULT 0, pocet integer NOT NULL DEFAULT 0, CONSTRAINT objpolozka_pkey PRIMARY KEY (id) )
22
CREATE TABLE obrazek ( id serial NOT NULL, bdata bytea, CONSTRAINT obrazek_pkey PRIMARY KEY (id) ) CREATE TABLE produkt ( id serial NOT NULL, nazev character varying(60), popis character varying, cena double precision NOT NULL DEFAULT (0)::double precision, kategorieid integer, jenabizen boolean NOT NULL DEFAULT false, vyrobceid integer, kod character varying(20), obrazekid integer, nahledid integer, akce boolean NOT NULL DEFAULT false, sleva boolean NOT NULL DEFAULT false, novinka boolean NOT NULL DEFAULT true, CONSTRAINT produkt_pkey PRIMARY KEY (id) ) CREATE TABLE uzivatel ( id serial NOT NULL, idadresafakt integer, idadresadod integer, jmeno character varying(100), heslo character varying(100), isadmin boolean NOT NULL DEFAULT false, CONSTRAINT uzivatel_pkey PRIMARY KEY (id) ) CREATE TABLE vyrobce ( id serial NOT NULL, nazev character varying(60), disabled boolean, poznamka character varying(255), CONSTRAINT vyrobce_pkey PRIMARY KEY (id) )
23
B Rozdělení kategorií Svařování Svařovací zdroje MMA MIG/MAG MIG/MAG-oddělený podavač TIG TIG-AC/DC Plazmy-svařování Plazmy-dělení materiálu Příslušenství Ochranné svařovací kukly a štíty Ochrana zraku a sluchu Oblečení pro svářeče Držáky elektrod a zemnící svorky Svařovací spreje a pasty Propojení a kabely Hořáky TIG Hořáky MIG/MAG Redukční ventily Nástroje a nářadí Svařovací materiály Obalená elektroda Drát-tavidlo Drát-MIG/MAG Drát-TIG Drát-plamen Plněná elektroda Tavidlo Navařovací páska Pájka tvrdá
24
Soustružení Soustruhy CNC soustruhy Stolní soustruhy Klasické soustruhy Příslušenství Nástroje pro soustružení Nože s VBD Nože HSS Nože s SK VBD Frézování Frézky CNC frézky Stolní frézky Vrtací frézky Univerzální frézky Příslušenství Nástroje pro frézování Frézy HSS Frézy z monolitního tvrdokovu Frézy s VBD Frézovací hlavy VBD Vrtání Vrtačky Stolní vrtačky Sloupové vrtačky Naklápěcí vrtačky Příslušenství
25
Nástroje pro vrtání Vrtáky válcové Vrtáky kuželové Vrtáky stupňovité Vrtáky SK Výhrubníky Výstružníky Záhlubníky Broušení Brusky Dvoukotoučové brusky Leštičky Pásové a talířové brusky Brusky na vrtáky Příslušenství Nástroje pro broušení Brusné kotouče Brusná tělíska Řezací kotouče Drátěné kotouče Brousící plátna Lamelové kotouče Leštící kotouče měkké Leštící kotouče tvrdé Brusné a leštící pasty
Řezání Pily Pásové pily Kotoučové pily Příslušenství
26
Nástroje pro řezání Pilové pásy Pilové kotouče Kompresory Šroubové kompresory Pístové kompresory Příslušenství Závitování Rámečky Vratidla Závitořezy Závitníky-strojní Závitníky-sadové Závitové čelisti Měřidla Posuvná měřítka Hloubkoměry Výškoměry (nádrhy) Mikrometry Indikátory Základní měrky Kalibry Stojánky Ruční nářadí Ruční nářadí elektrické Ruční nářadí akumulátorové Ruční nářadí pneumatické
27
28
C Uživatelská příručka 1 Instalační příručka 1.1 Vytvoření databáze Způsob vytvoření databáze se může lišit podle použitého databázového klienta. Zde je popsán postup při použití PHPadmin pro PostgreSQL. Po přihlášení do PHPadmin je potřeba založit databázi kliknutím na odpovídající odkaz (zde - Vytvořit databázi). Název databáze bude eobchod a zvolené kódování UTF-8. Po potvrzení je databáze založena a je možné přistoupit k vytvoření jednotlivých tabulek. Databázi je nyní možné editovat kliknutím na její název. V okně editace zvolíme z horního menu SQL. Tím se dostaneme do prostoru pro zadávání SQL příkazů. Zde postupně vkládáme jednotlivé SQL příkazy z přílohy A a stiskem tlačítka Spustit je provedeme. Tím jsou založeny tabulky v databázi. Na závěr je potřeba zapsat počáteční jméno a heslo administrátora pomocí SQL příkazem: insert into uzivatel (jmeno,heslo,isadmin) values ('admin','0DPiKuNIrrVmD8IUCuw1hQxNqZc=',true)
Základní administrátorské jméno a heslo pro první přihlášení do obchodu je admin / admin. Tím je připravena celá databáze.
1.2 Instalace obchodu Před nahráním balíku war na server je nutné upravit konfigurační soubor hibernate.cfg.xml pro Hibernate. Soubor je uložen v adresáři web-inf/classes. <session-factory> <property name="connection.username">eobchod <property name="connection.password">eobchod <property name="connection.url"> jdbc:postgresql://localhost/eobchod <property name="connection.driver_class"> org.postgresql.Driver <property name="dialect">
29
org.hibernate.dialect.PostgreSQLDialect <mapping resource="cz/hopi/eobchod/sql/Produkt.hbm.xml"/> <mapping resource="cz/hopi/eobchod/sql/Obrazek.hbm.xml"/> <mapping resource="cz/hopi/eobchod/sql/Kategorie.hbm.xml"/> <mapping resource="cz/hopi/eobchod/sql/Vyrobce.hbm.xml"/> <mapping resource="cz/hopi/eobchod/sql/Adresa.hbm.xml"/> <mapping resource="cz/hopi/eobchod/sql/Uzivatel.hbm.xml"/> <mapping resource="cz/hopi/eobchod/sql/Objednavka.hbm.xml"/> <mapping resource="cz/hopi/eobchod/sql/ObjPolozka.hbm.xml"/>
Zde je nutné upravit položky username, password a url podle informací od poskytovatele webovského prostoru. Po uložení je možné balík war poslat přes administrátorské rozhraní Apache na server. Tím je obchod nainstalován a připraven k naplnění databáze.
30
2 Ovládání – administrátorská část Přístup k administrátorské části je realizován přes stránku admLogin.jsp, kde je nutné zadat jméno a heslo administrátora. Při pokusu o přístup k jiným stránkám administrátorské části je nepřihlášený uživatel vždy přesměrován na admLogin.
2.1 Objednávky Po správném přihlášení je uživateli zobrazena stránka s výpisem objednávek. Na tuto stránku je také možné přejít výběrem položky Objednávky v menu. Zde je ve výběru možné zvolit filtrování pro zobrazení objednávek. V pravém sloupci je možné u jednotlivých objednávek nastavit stav objednávky. Kliknutím na číslo objednávky se zobrazí její detail.
Obr. C.2.1 Výpis objednávek
Obr. C.2.2 Objednávka
31
2.2 Kategorie
Obr. C.2.3 Výpis kategorií
Volbou Nová kategorie je možné přidat další hlavní kategorii. Podkategorie se přidávají kliknutím na písmeno P u hlavních kategorií. Editace se provádí po stisku E. Zrušení, případně obnovení kategorie se provede stisknutím Z (O). Při zrušení hlavní kategorie jsou zrušeny i její podkategorie. Obnovení podkategorie současně obnoví i nadřazenou kategorii.
2.3 Výrobci
Obr. C.2.4 Výpis výrobců
32
Podle výběru Zobrazit je možné omezit zobrazení výrobců na aktivní (zobrazují se v nabídce obchodu), zrušené a vše. Přepínání výrobce mezi aktivním a zrušeným se děje stiskem odpovídajícího znaku v pravé části výpisu. Nového výrobce lze přidat po kliknutí na odkaz Nový výrobce.
2.4 Zboží Zobrazení zboží je možné omezit pouze na konkrétní kategorii a dodavatele. Kliknutím na E se otevře okno s možností editace produktu a Z provede zákaz zobrazení produktu v nabídce. V editaci je možné měnit jednotlivé údaje produktu. Pokud přidáváme nový produkt od nového výrobce, musí být tento výrobce nejdříve zaveden do systému (viz. menu Výrobce).
Obr. C.2.5 Výpis zboží
Obr. C.2.6 Detail produktu
33
3 Ovládání – klientská část 3.1 Základní okno Po zadání webové adresy se zobrazí základní okno obchodu.
Obr. C.3.1 Úvodní strana
Okno je rozděleno do třech hlavních částí: •
horní menu – slouží pro navigaci po webu
•
levé menu – slouží pro výběr způsobu vyhledávání – podle kategorií nebo podle výrobců
•
střední část obrazovky – zobrazuje seznam zboží
3.2 Výběr zboží Kliknutím v levém menu na záložku Kategorie nebo Výrobce se zobrazí seznam kategorií (výrobců), ze kterých je pak možné vybrat konkrétní kategorii, která nás zajímá.
34
Obr. C.3.2 Seznam produktů
Na obrázku byla vybrána kategorie MIG/MAG. Ve výpisu se zobrazí seznam svařovacích zdrojů od všech výrobců, které jsou k dispozici. Kliknutím na jméno výrobce (zde pouze Omicron) v horní části seznamu omezíme výběr jen na tohoto výrobce. Číslo v závorce udává počet produktů od daného výrobce. Kliknutím na K u jednotlivých položek vložíme vybraný produkt do košíku. Kliknutím na D se zobrazí detail produktu s větším náhledem a s podrobným popisem.
Obr. C.3.3 Detail produktu
35
Po ukončení výběru nebo pro kontrolu je možné přejít na košík výběrem položky Košík z horního menu.
3.3 Košík V košíku je možné měnit počet kusů od jednotlivých produktů. Pro zaregistrování změny je nutné zapsat počet kusů a stisknout tlačítko Přepočítat, tím dojde k přepočítání ceny za produkt i celkové ceny objednávky.
Obr. C.3.4 Košík
Produkt je možné z košíku odstranit vložením počtu 0 a stisknutím tlačítka Přepočítat. Pokud je uživatel spokojen se stavem košíku, je možné provést přípravu objednávky stisknutím Objednat.
36
3.4 Objednání Pokud je uživatel přihlášen, zobrazí se objednávkový formulář po stisknutí tlačítka Objednat z košíku. Pokud není, je potřeba se přihlásit nebo registrovat. Po kontrole správnosti údajů je možné objednávku potvrdit stiskem Objednat. O zaregistrování objednávky je uživatel informován zobrazením čísla objednávky. Pokud údaje nesouhlasí, je možné se stisknutím Zpět vrátit do košíku.
Obr. C.3.5 Objednávka
3.5 Přihlášení Přihlášení do sytému je možné provést buď kliknutím na slovo nepřihlášen v levé části horního menu, nebo vybráním položky Zákazník – Přihlášení. Zobrazí se formulář pro vložení jména a hesla. Uživatel už musí mít zaveden účet. Pokud jej nemá, je potřeba se registrovat.
Obr. C.3.6 Přihlášení
37
3.6 Registrace Registrační formulář se zobrazí z horního menu zvolením Zákazník – Registrace. Povinné údaje jsou označeny. V případě, že se fakturační a dodací adresa liší, je potřeba vyplnit i dodací adresu.
Obr C.3.7 Registrační formulář
3.7 Odhlášení ze systému Odhlášení ze systému se provede kliknutím na jméno v pravé části horního menu.
38
D Obsah přiloženého CD Na přiloženém CD je uložena dokumentace, zdrojové kódy, soubory a aplikace potřebné pro spuštění Internetového obchodu. Obsah adresářů: •
Apache – webový server Apache Tomcat.
•
PostgreSQL – databázový server PostgreSQL.
•
Hibernate – Hibernate framework.
•
Java – interpreter Java.
•
Dokumentace – tato dokumentace v elektronické podobě.
•
Obchod – přeložená aplikace Internetového obchodu a SQL skripty pro vytvoření databáze.
•
Zdrojove_kody – zdrojové kódy aplikace.
39