Интернет Програмиране с Java

 

Проект 3

 

Информация и изисквания, отнасящи се до всички проекти  2

Проект 3.1 – Web Photo Album   2

Проект 3.2 – Search Engine  2

Проект 3.3 – Web Mail POP3 Client2

Проект 3.4 – Web Mail SMTP Client2

Проект 3.5 – Web Address Book  2


Информация и изисквания, отнасящи се до всички проекти

 

Всички проекти (без SearchEngine) трябва да работят само след като потребителят се идентифицира с username & password. Информацията за потребителите и паролите ще се пази в текстов файл WEBINF/users.txt, който ще има следния формат:

 

username<tab>password¿

 

Не е необходимо проектите да се предават като .WARархиви – достатъчно е да са организирани във валидна структура на файлове/директории, която с просто копиране в TOMCAT_HOME/webapps да заработи.

 

 

Можете свободно да използвате и променяте всичко, демонстрирано на лекциите.

 

 

Всички приложения трябва да имат error page, който обработва exception-и. При възникване на някаква грешка – например невъзможност на приложението да се свърже със зададения от потребителя POP3 сървър, този Exception да се показва в error page-а.

 

 


Проект 3.1 – Web Photo Album

 

Да се разработи JSP/Servlet базирано Web-приложение, служещо за разглеждане на фото албум. Фото албумът представлява съвкупност от графични изображения, записани във файлове (.gif и .jpg) и разположени в преварително фиксирана директория на твърдия диск. Фото албумът може да е дървовидно организиран, като дървото отразява дървото на директориите с картинките, имащо за корен главната директория на фотоалбума.

 

В web.xml е указана Главна директория на картинките, която може и да не е поддиректория на TOMCAT_HOME/webapps. В тази главна директория има предварително създадени поддиректории за всеки отделен потребител, като името на поддиректорията съвпада с името на потребителя.

 

Във всяка потребителска директория има файлове с картинки (.gif & .jpg), а също така и поддиректории, които също съдържат картинки и могат да  съдържат от своя страна поддиректории и т.н.

 

Когато потребителят се идентифицира успешно с username/password, приложението му предоставя екран, на който има изобразени като линк-ове поддиректориите на Главната директория, ако има такива, и всички картинки от тази директория изобразени в умален вид – така наречените thumbnails. При щракване върху умалената картинка програмата показва картинката в реални размери, а при щракване на линк към поддиректория тя се дисплейва по начина, по който се дисплейва Главната директория.

 

Тъй като Главната директория с картинките може да не е поддиректория на TOMCAT_HOME/webapps/…./, няма да е възможно достъпът до картинките да става чрез прости link-ове. Ще трябва да напишете servlet, който по някакъв request параметър, например realfn да връща като резултат зададения файл.

Заявката към този servlet може да изглежда по начин, подобен на този (ако сървлета се казва getpic):

  http://localhost:8080/photoalbum/getpic?realfn=c:\temp\boris\pic.jpg

 

В отговора си сървлета трябва да сложи content-type на image/jpg или image/gif, за да може web-браузърът да го покаже по подходящ начин.

 

Забележка: Thumbnail-четата могат да се направят като на реалната картинка в HTML-а се укаже:

  <img src=”…” width=”100” height=”100”/>, докато реалния размер на картинката може да е 1000x1000.

 

Забележка: Считайте, че структурата на директориите и картинките в тях са ви предварително зададени.

 


Проект 3.2 – Search Engine

 

Да се разработи JSP/Servlet базирано Web-приложение, чрез което може да се търси текст във всички файлове, които се намират в някоя предварително фиксирана директория и или в някоя от нейните поддиректории. Намерените файлове да могат да се изтеглят от Web-браузера на клиента, задал търсенето, чрез кликване върху съответен линк.

 

В web.xml е указана Главна директория за търсене, която може и да не е поддиректория на TOMCAT_HOME/webapps. Тази главна директория указва от къде ще се извършва търсенето.

 

Например:

            Ако изберем Главна директория за търсене да е C:\, то тогава се очаква по зададената последователност от символи (т.е. текста за търсене), да се претърси директорията C:\ както и всички нейни поддиректории т.е в този случай ще търсим по във всички файлове от C:устройство. Търсенето е рекурсивно, т.е алгоритъмът е следният:

 

            1. Претърсваме всички файлове в текущата директория.

            2. Ако текущата директория има поддиректории, то отиваме към стъпка 3, ако не стъпка 4.

            3. Избираме поредната поддиректорията за текуща и отиваме на стъпка 1.

            4. Излизаме от текущата директория и продължаваме със следващата поддиректория на стъпка 3, ако няма такава излизаме.

 

Във всяка директория може да има всякакви файлове.Типът и размерът на файловете не е от значение.

Целта на проекта е през Web interface (JSP/Servlets)  да се направи възможно търсенето и тегленето на файлове от сървъра, като нямаме директен достъп до съответните файлове.Например тегленето на файл ще се осъществи от сървлет, който в зависимост от тип на файл, ще определя съответния content-type към клиента.

 

За целта се изисква да се направи интерфейс, който предлага следните възможности:

 

  1. Текстово поле за въвеждане на търсения текст.
  2. Едно checkbox поле с което да се задава търсенето да се извършва и в самото съдържание на файловете, а ако не е избрано да се търси само по имената на файловете. (като търсенето в съдържанието на файла е основно и задължително, т.е. търсенето в имената е с по-малка тежест при оценяване).
  3. Съответно файловете, които съдържат търсения текст трябва да се визуализират “подходящо”, така че да може лесно да се избират, при което да имаме възможност за download. (Възможно решение е всички генерирани линкове да сочат към Servlet, който да слага подходящ Content-Type и да ни го предоставя за download).

 

Ако текстът за търсене е повече от една дума, той се разглежда като цяла фраза, т.е. думите не се търсят поотделно, а като точно съвпадащ подниз на файла. Следователно се прави разлика и между малки и главни букви.

 

Тъй като Главната директория за търсене може да не е поддиректория на TOMCAT_HOME/webapps/…./(което е почти сигурно;), няма да е възможно файловете да се смъкват като прости link-ове. Ще трябва да напишете servlet, който по някакъв request параметър, например downlf да връща като резултат картинката. Заявката към този servlet може да изглежда по следния начин (ако сървлета се казва getpic):

 

http://localhost:8080/searchengine/getfile?downlf=c:\temp\niki\Projects3.doc

 

Ето и списък от Content-Type-овете, които трябва да се поддържат във формат тип на файл /Content-Type:

 

.au

audio/basic

 

.mpeg

video/mpeg

.avi

video/x-msvideo

 

.mpg

video/mpeg

.bmp

image/bmp

 

.mp2

audio/mpeg

.css

text/css

 

.mp3

audio/mpeg

.doc

application/msword

 

.pdf

application/pdf

.dll

application/x-msdownload

 

.png

image/png

.exe

application/x-msdownload

 

.ps

application/postscript

.gif

image/gif

 

.ra

audio/x-realaudio

.htm

text/html

 

.tar

application/x-tar

.html

text/html

 

.rtf

application/rtf

.jpe

image/jpeg

 

.tif

image/tiff

.jpeg

image/jpeg

 

.tiff

image/tif

.jpg

image/jpeg

 

.txt

text/plain

.js

application/x-javascript

 

.wav

audio/x-wav

.mid

audio/midi

 

.xls

application/vnd.ms-excel

.midi

audio/midi

 

.xml

text/xml

.mov

video/quicktime

 

.zip

application/x-zip-compressed

за всички останали

application/octet-stream

 

 

 


Проект 3.3 – Web Mail POP3 Client

 

Да се разработи JSP/Servlet базирано Web-приложение, което да предоставя функционалност, достатъчна за проверка на електронна пощенска кутия през POP3 протокола и елементарно показване на получените писма.

 

Всеки потребител се идентифицира с потребителско име и парола.

 

След като бъде успешно идентифициран, потребителят влиза в страница, в която да въвежда POP3 сървър, username и password за този сървър.

 

След submit на тази формапотребителят вижда страница със всички изтеглени от този сървър писма във вид на таблица.

 

Таблицата трябва да изглежда по следния начин:

 

Дата

Subject

Sender

Size

22.05.2002

Zdrasti

boris@abv.bg

1045 bytes

27.05.2002

Hi, wanna chat?

some@yahoo.com

575 bytes

04.06.2002

Pismo ot mama

mama@home.org

123456 bytes

 

Стойностите в колоната Subject трябва да са линк-ове, като при щракването да един от тези линкове излиза страница, която показва цялото писмо. Показването на писмото се състои в изпечатването на съдържанието на самото писмо, като от HEADER-ите му се изважда информацията за подател, тема, дата и т.н. и тази информация се визуализира по подходящ начин.

 

Също така трябва да се реализира функционалност “изтриване”, която да изтрива посоченото писмо от сървъра след което страницата със списъка на писмата да се актуализира.


Проект 3.4 – Web Mail SMTP Client

 

Да се разработи JSP/Servlet базирано Web-приложение, което да предоставя функционалност, достатъчна за изпращане на електронна поща чрез SMTP протокола.

 

Всеки потребител се идентифицира с потребителско име и парола.

 

След като бъде успешно идентифициран, потребителят влиза в страница, в която той въвежда SMTP сървър, е-mail адрес и име, които ще излизат в полето From на всички изпратени писма.

 

След като попълни всички полета, потребителят submit-ва формата и приложението му предоставя страница с форма, съдържаща необходимите полета за изпращане на поща:

To:

Subject:

Message:

Полето Message трябва да е многоредово поле за въвеждане на текст (<textarea>).

 

След submit на формата приложението изпраща писмото и показва страница обявяваща че писмото е изпратено успешно. От тази страница трябва да има линк към страницата за изпращане на писмо и потребителя да може да изпрати друго писмо.

 

При неуспех трябва да се извежда страница съдържаща подходящо съобщение за грешка.

 

 


Проект 3.5 – Web Address Book

 

Да се разработи JSP/Servlet базирано Web-приложение, което представлява електронен бележник с адреси.

 

В web.xml е указана Главна директория,която може и да не е поддиректория на TOMCAT_HOME/webapps. В тази главна директория има предварително създадени поддиректории за всеки отделен потребител, като името на поддиректорията съвпада с името на потребителя.

 

Във всяка потребителска директория има файл database.dat.

 

Когато потребителя се идентифицира успешно с username/password, приложението му предоставя екран, на който линк-ове за достъп до главните функции на приложението:

 

  1. Показване на съдържанието на указателя.
  2. Добавяне на нов запис в указателя.
  3. Редактиране на вече добавен запис и съхраняване на промените.
  4. Изтриване на вече добавен запис.

 

Един запис от указателя представлява:

 

    1. Име на човека / субекта.
    2. Телефон / GSM
    3. Адрес
    4. E-mail адрес

 

Указателят представлява един файл database.dat, като всеки ред на файла представлява един запис.

 

Показване на съдържанието на указателя:

            Трябва да се показва цялото съдържание, или да се направи поудобен начин показване по страници (paging).

            От този списък трябва да има възможност да се избират записи, съответно за извършване на операциите изтриване от указателя и редактиране на записа.

 

Забележка:

           

            Указателят за всеки потребител е различен. Всеки потребител си има директория съвпадаща с username му при login,  в която директория има файл database.dat. Позволените операции могат да се извършват само при логнат потребител и само върху неговият файл от неговата директория.

 

 

 

 

Последна промяна: 10.06.2002