Дистрибуирани софтверски системи Технички факултет "Михајло Пупин" Зрењанин, Универзитет у Новом Саду Практикум за лабораторијске вежбе #04 [нерецензи

Слични документи
Дистрибуирани софтверски системи Технички факултет "Михајло Пупин" Зрењанин, Универзитет у Новом Саду Практикум за лабораторијске вежбе #07 [нерецензи

Дистрибуирани софтверски системи Технички факултет "Михајло Пупин" Зрењанин, Универзитет у Новом Саду Практикум за лабораторијске вежбе #05 [нерецензи

Tutoring System for Distance Learning of Java Programming Language

PowerPoint Presentation

Tutoring System for Distance Learning of Java Programming Language

Писање и превођење модула

Funkcije predavač: Nadežda Jakšić

Приручник о полагању матурског испита у образовном профилу Електротехничар информационих технологија - оглед ВЕБ ДИЗАЈН У следећим задацима заокружите

Microsoft PowerPoint - 6. CMS [Compatibility Mode]

PowerPoint Presentation

Microsoft PowerPoint - JavaP9_2019

Ovaj fajl ima 5 stranica. Prvi i drugi domaći zadatak iz Internet tehnologija, Svi css fajlovi su u folderu css a sve slike su u folderu i

PowerPoint Presentation

Web programiranje i primjene - Osnovni pojmovi WEB tehnologije korišteni u kolegiju

Slide 1

KATALOG ZNANJA IZ INFORMATIKE

P R O G R A M I R A N J E Z A I N T E R N E T Lab. vježba 2 PROGRAMIRANJE ZA INTERNET Upute za laboratorijske vježbe (izradio: Marin Bugarić, Frano Re

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Primenjeno programiranje - Vežbe

NAPOMENA: Studenti na ispit donose kod urađenog zadatka

Boostrap.1.1

Microsoft Word - IWT0906R.doc

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

WordPress & CSP Polisa Sigurnosti Sadržaja za WordPress Milan Petrović WordCamp Niš

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

Uvod u Python

JMBAG Ime i Prezime Mreže računala Završni ispit 16. veljače Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i službeni šalabahter.

Upute za instaliranje WordPressa 1.KORAK Da biste instalirali Wordpress, najprije morate preuzeti najnoviju verziju programa s web stranice WordPressa

CPHP_19

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

Tutoring System for Distance Learning of Java Programming Language

Primenjeno programiranje - vezbe GUI i baze podataka

Funkcije predavač: Nadežda Jakšić

Повезивање са интернетом

СТАРТ - СТОП ПАРКИНГ СИСТЕМ КОРИСНИЧКО УПУТСТВО страна 1 од 12

SELECT statement basic form

Microsoft PowerPoint - 11_JavaScript_1.ppt [Compatibility Mode]

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Microsoft PowerPoint - 1. Zend_1 - Instalacija frameworka

PowerPoint Presentation

Електротехнички факултет Универзитета у Београду Катедра за рачунарску технику и информатику ИР3ПИА - Пројекат из предмета Програмирање интернет аплик

Програмирај!

O Nanokinetik NeeS TOC Builder-u NeeS TOC Builder je aplikacija koja se koristi za kreiranje Tabele sadržaja (TOC) za elektronske podneske u NeeS form

NIAS Projekt e-građani KORISNIČKA UPUTA za aplikaciju NIAS Verzija 1.1 Zagreb, srpanj 2014.

Microsoft Word - SYLLABUS -Dinamicki

SVEUČILIŠTE U ZADRU Odjel za promet i pomorstvo Primjena računala Vježba 3 Web preglednici Agenda Internet i internet protokoli Klijentsko

Računarski praktikum I - Vježbe 09 - this, static

VALIDNOST CERTIFIKATA ZA PRISTUP INTERNET APLIKACIJAMA POREZNE UPRAVE FEDERACIJE BOSNE I HERCEGOVINE (npis I ejs)

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: Након

KORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA

Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 10 Zvonimir Bujanović Luka Grubišić Vinko Petričević

Pojačavači

SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ž D I N Leo Siniša Radošić Modreni upravitelj zaporkama ZAVRŠNI RAD Varaždin,

Slide 1

Microsoft Word - Tehnicka uputstva lica doc

Tutoring System for Distance Learning of Java Programming Language

ZADACI ZA VEŽBU 1. Realizovati konzolnu aplikaciju koja će računati površinu kvadrata, pravougaonika ili trougla. 2. Preko konzole se unosi ocena od 1

R u z v e l t o v a 5 5, B e o g r a d, t e l : , e - m a i l : p r o d a j p s i t. r s, w w w. p s i t. r s

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s

Microsoft Word - CAD sistemi

1, 2, 3, кодирај! Активности циклуса 4 Пројект «Аркадне игре» - Час 6: Програмирање падања новчића (наставак) Доминантна дисциплина Математикa Резиме

Microsoft PowerPoint - vjezba_03_0809_WWWBR (1) [Compatibility Mode]

Biz web hosting

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Корисничко упутство апликације езапослени верзија Рачунски центар Електротехничког факултета, Универзитет у Београду

Fra Serafina Schoena Rijeka MB: MBO: Žiro račun: kod RBA d.d. GSM:

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji

Microsoft Word - IP_Tables_programski_alat.doc

1 NOVO U MNG CENTRU!!! OVLADAJTE TEHNOLOGIJOM IZRADE JAVA EE APLIKACIJA KORIŠ C ENJEM ORACLE ADF-A O - Otkrijte brzinu razvoja aplikacija sa ADF-om -

Mrežno računarstvo

Fina pain001 konverter - Korisnička uputa eksterno_ožujak 2016

Računarski praktikum I - Vježbe 01 - Uvod

Slide 1

Microsoft Word - Uputstvo za koristenje aplikacije GIPKO

Универзитет у Београду Економски факултет Катедра за економску политику и развој Јавне финансије 2018/19 УПУТСТВО ЗА ПРИЈАВЉИВАЊЕ НА Е-КУРС ИЗ ПРЕДМЕТ

Pisanje i čitanje bez vizualnog ometanja

Apache Maven Bojan Tomić

Dijagrami sekvenci

Microsoft Word - OSNOVE MS WINDOWS i MS OFFICE - Syllabus.docx

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

Uvod u računarstvo 2+2

Microsoft PowerPoint - 06 Uvod u racunarske mreze.ppt

Slide 1

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

3.Kontrlne (upravlja~ke) strukture u Javi

PowerPoint Presentation

Projektovanje informacionih sistema i baze podataka

Slide 1

RAD SA PROGRAMOM

PowerPoint Presentation

Upute-podesavanj -accounta

PowerPointova prezentacija

Microsoft Word - privitak prijedloga odluke

UPUTA za uvođenje JOPPD - prva faza

PORTAL KATEDRE ZA MEDICINSKU STATISTIKU I INFORMATIKU uputstvo za pristup i korišćenje Ovo uputstvo podrazumeva da studenti imaju osnovno znanje koriš

Sveucilište u Zagrebu

Транскрипт:

Сервлети У овој вежби су приказани основни принципи писања и употребе сервлета у веб апликацијама. За тестирање примера треба креирати веб апликацију learningservlets на Tomcat веб серверу. Контекст апликације треба додати у конфигурциону датотеку server.xml: <Context path="/learningservlets" docbase="learningservlets" debug="0" reloadable="true"/> У фолдеру који се додељује веб апликацији треба обезбедити типичну структуру фолдера и датотека, при чему треба креирати датотеку web.xml, са следећим почетним садржајем: <?xml version="1.0" encoding="utf8"?> <webapp xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/webapp_3_1.xsd" id="webapp_id" version="3.1"> <displayname> learningservlets</displayname> <welcomefilelist> <welcomefile> index.html </welcomefile> </welcomefilelist> </webapp> Сваки сервлет који буде написан ће бити додат у датотеку web.xml, да би могао да се изврши на веб серверу. Датотека index.html ће бити коришћена за преглед садржаја лекције и позивање сервлета помоћу линкова. Стил приказа веб странице је уређен у датотеци stilovi.css. Веб апликација је доступна на адреси: http://localhost/learningservlets/ НАПОМЕНА: У зависности од подешавања HTTP конекције не веб серверу треба у адресу веб апликације додати порт 8080. 1

ПРИМЕР (learningservlets) Основна структура сервлета Креирати сервлет са најједноставнијом структуром који приказује текстуалну поруку (SimpleServlet). Сервлет текстуалну поруку приказује помоћу методе doget(). Изворни код основног сервлета је: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleServlet extends HttpServlet { } public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // print simple text PrintWriter out = response.getwriter(); out.println("hello from doget"); } protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // call doget doget(request, response); } Измена датотеке web.xml подразумева додавање информација о сервлету као што је приказано у следећем листингу: <?xml version="1.0" encoding="utf8"?> <webapp xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/webapp_3_1.xsd" id="webapp_id" version="3.1"> <displayname> learningservlets</displayname> <welcomefilelist> <welcomefile> index.html </welcomefile> </welcomefilelist> <servlet> <servletname>simpleservlet</servletname> <servletclass>simpleservlet</servletclass> </servlet> <servletmapping> <servletname>simpleservlet</servletname> <urlpattern>/simpleservlet</urlpattern> </servletmapping> </webapp> 2

Извршавање сервлета у веб претраживачу се може реализовати директним уносом адресе сервлета у адресну линију претраживача http://localhost/learningservlets/simpleservlet или позивом помоћу линка из веб странице <a href="http://localhost/learningservlets/simpleservlet">simpleservlet</a> Сервлет који генерише HTML Сервлети најчешће генеришу HTML садржај, што подразумева да се веб претраживач обавести да ће бити послат HTML документ, затим да се модификује штампање излаза помоћу PrintWriter, и на крају треба проверити валидност генерисаног HTML садржаја. Да би се веб претраживач обавестио да ће бити послат HTML садржај треба поставити у заглављу одзива (response) одговарајући тип, у овом случају за генерисање HTML5 документа. response.setcontenttype("text/html"); Ово се може реализовати и позивом методе setheader класе HttpServletResponse, али се с обзиром на уобичајеност посла то може урадити директно у сервлету позивом setcontenttype методе која исписује тип садржаја text/html. 3

Након креирања сервлет класе, сервлет треба пријавити и у web.xml датотеци додавањем следећег кода: <servlet> <servletname>htmlservlet</servletname> <servletclass>htmlservlet</servletclass> </servlet> <servletmapping> <servletname>htmlservlet</servletname> <urlpattern>/htmlservlet</urlpattern> </servletmapping> Извршавањем сервлета се добија форматирана HTML страница http://localhost/learningservlets/htmlservlet Сервлет се такође може покренути помоћу линка из веб странице: Организација сервлета у пакете Писање већих апликација подразумева већи броој класа и сервлета које тада треба организовати у пакете ради лакшег организовања развоја и одржавања софтвера. Сервлете је као и све остале Јава класе могуће организовати у пакете који одсликавају логичку структуру апликације. 4

Приликом организовања сервлета у пакете потребно је урадити следеће: Рапоредити сервлете у поддиректоријуме који одговарају називима пакета. У датотеку са извормим кодом сервлета треба додати наредбу која означава пакет у којем се налази. У web.xml датотеци треба нагласити да се сервлет налази у пакет. Пример кода сервлета који је распоређен у пакету hello. Назив пакета се налази на почетку датотеке, као и код било које друге Јава класе. package hello; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; @WebServlet("/HelloFromPackage") public class HelloFromPackage extends HttpServlet { private static final long serialversionuid = 1L; } public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // declare sending HTML content to web browser response.setcontenttype("text/html"); // print HTML content PrintWriter out = response.getwriter(); String doctype = "<!DOCTYPE html>\n"; out.println(doctype + "<HTML>\n" + "<HEAD><TITLE>HtmlServlet</TITLE></HEAD>\n" + "<BODY BGCOLOR=\"#ff3300\">\n" + "<H1>Hello generated from PACKAGED Servlet</H1>\n" + "</BODY></HTML>"); } protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // call doget doget(request, response); } 5

Додавање информације о сервлету у web.xml датотеци: <servlet> <servletname>hellofrompackage</servletname> <servletclass>hello.hellofrompackage</servletclass> </servlet> <servletmapping> <servletname>hellofrompackage</servletname> <urlpattern>/hello/hellofrompackage</urlpattern> </servletmapping> Извршавањем сервлета се добија форматирана HTML страница http://localhost/learningservlets/hello/hellofrompackage Сервлет се такође може покренути помоћу линка из веб странице <a href="http://localhost/learningservlets/hello/hellofrompackage">servletfrompackage</a> 6

Креирање услужних класа за рад са HTML кодом Када се део кода често понавља, што јесте случај када се генерише HTML садржај, тај део кода треба реализовати помоћу услужних класа које поједностављују креирање HTML садржаја и писање и сервлетских класа. Поред тога сервлетске класе имају значајно мање кода па је сам код једноставнији за одржавање. Код сервлета се приликом креирања веб страница делови DOCTYPE и HEAD ретко мењају, па се њихово штампање може реализовати у услужној класи коју потом могу позивати сви сервлети у оквиру веб апликације. У овом примеру је креирана класа ServletHtmlUtilities која омогућује штампање HTML заглавља за неколико различитих типова HTML докумената. Услужне класе пошто нису сервлети се не морају пријавити у web.xml датотеци. Сервлет ServletUsingHTMLUtilities који користи услужну класу треба пријавити у web.xml датотеци. <servlet> <servletname>servletusinghtmlutilities</servletname> <servletclass>hello.servletusinghtmlutilities</servletclass> </servlet> <servletmapping> <servletname>servletusinghtmlutilities</servletname> <urlpattern>/hello/servletusinghtmlutilities</urlpattern> </servletmapping> Извршавањем сервлета се добија форматирана HTML страница http://localhost/learningservlets/hello/servletusinghtmlutilities 7

Сервлет се такође може покренути помоћу линка из веб странице <a href="http://localhost/learningservlets/hello/servletusinghtmlutilities">servletusinghtmlutilities</a> 8

Животни циклус сервлета На веб серверу се увек креира само једна инстанца сваког сервлета, док се кориснички захтеви ( user requests) реализују тако да се сваки позив метода doget или dopost реализује као засебна нит. Приликом првог позива, сервлет се креира и позива се метода init која се користи за конфигурисање сервлета. Сви остали позиви сервлета се усмеравају на методу service која позиве усмерава на методе doget, dopost, или остаале doxxx (doput, dodelete) методе. Када сервлет више није потребан контејнер позива методу destroy која уништава сервлет. Метода за иницијализацију се користи за иницијализацију применљивих, учитавање датотека, успостављање конекције са базом података итд., док се метода за уништавање сервлета користи за затварање датотека, затварање конекција ка базама података итд. НАПОМЕНА: Препорука је да се методе животног цикуса init и destroy не позиваху из кода, већ да се у њима изврши минимални посао иницијализације или уклањања објеката. За такве послове је увек боље креирати специјалне функције у којима се има потпуна контрола кода, док методама init и destroy управља контејнер сервлета (нпр. Tomcat). У примеру који илуструје употребу методе init, у сервлету ServletLifeCycleMethods се иницијлизују променљиве које служе за праћење приступа сервлету: private static int accesscounter = 0; private static boolean initialized = false; Помоћу ових статичких промнљивих се потом управља радом методе doget која је задужена за руковање HTTP захтевима (requests) и одзивима (responses). Пре употребе, сервлета ServletLifeCycleMethods треба пријавити у web.xml датотеци. <servlet> <servletname>servletlifecyclemethods</servletname> <servletclass>servletlife.servletlifecyclemethods</servletclass> </servlet> <servletmapping> <servletname>servletlifecyclemethods</servletname> <urlpattern>/servletlife/servletlifecyclemethods</urlpattern> </servletmapping> Важно је напоменути да се сваки приказ извршавања сервлета реализује у doget, па и одмах након саме иницијализације сервлета методом init која садржи код који не производи приказ на екрану. Пример вишеструког позивања сервлета ServletLifeCycleMethods након иницијализације, тј. меоде doget је приказан на следећим сликама, где се може пратити иницијализација и бројање приступ сервлету (најједноставније је оства рити вишеструки узастопни приступ освежавањем веб странице коју генерише сервлет). Извршавањем сервлета се добија форматирана HTML страница 9

http://localhost/learningservlets/servletlife/servletlifecyclemethods Сервлет се такође може покренути помоћу линка из веб странице <a href="http://localhost/learningservlets/servletlife/servletlifecyclemethods">servletlifecyclemethods</a> 10

Задаци за самостални рад Задатак 1 Написати и тестирати сервлет који приказује све елементе Фибоначијевог низа који су мањи од 1000. приказ Фибоначијевог низа форматирати као HTML страницу на коју се могу применити стилови за форматирање садржаја (CSS). Задатак 2 Написати и тестирати сервлет који приказује полазни низ целих бројева и потом сортирани низ у растућем редолседу. Приказ полазног и сортираног низа форматирати као HTML страницу на коју се могу применити стилови за форматирање садржаја (CSS). Задатак 3 Проширити класу ServletHtmlUtilities тако да омогућује додавање линка ПОВРАТАК (Back) на дну сваке веб странице коју креира сервлет тако да омогућује пвратак на полазну страницу веб апликације index.html. Класу тестирати на неколико већ урађених сервлета. Задатак 4 Написати и тестирати сервлет који приказује листу запослених у предузећу. Запослени је представљен класом Zaposleni која је приказана на слици: Zaposleni im e prezim e korisnickoim e datum Zaposlenja : Date 1..* zaposleni 1..1 Preduzece naziv adresa m esto zip pib : int : int 1..1 1..* Delatnost naziv opis У горњем делу странице (заглављу) формиране веб странице, пре приказа података о запосленима, треба приказати податке о предузећу које је представљено класом Preduzece. 11

Линкови [1] The Apache Tomcat. http://tomcat.apache.org/ [2] Marty Hall and Larry Brown. Core Servlets and JavaServer Pages, Free Online Version of Second Edition. http://pdf.coreservlets.com/ [3] https://tomcat.apache.org/tomcat9.0doc/servletapi/overviewsummary.html [4] https://tomcat.apache.org/tomcat9.0doc/servletapi/index.html. 12