java server pages -...

184
Java Server Pages Java Server Pages © SI1P1 2004 1/15

Upload: phamthuan

Post on 28-Aug-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Java Server PagesJava Server Pages

© SI1P1 – 2004 1/15

Page 2: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Servlet tehnologija

Pomoću servleta je jednostavnoPomoću servleta je jednostavno– čitati podatke sa forme– čitati header-e HTTP zahtevačitati header e HTTP zahteva– postavljati HTTP status kod i header odgovora– koristiti cookie-ije i rad sa sesijom– deliti podatke između servleta– zapamtiti podatke između različitih zahtevaAli je naporno– koristiti println naredbe da bi se generisao HTML kod

održavati i menjati generisani HTML– održavati i menjati generisani HTML

© SI1P1 – 2004 2/15

Page 3: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP realizacija

© SI1P1 – 2004 3/15

Page 4: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP realizacija

© SI1P1 – 2004 4/15

Page 5: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP realizacijapackage jsp;import javax.servlet.*;import javax.servlet.http.*;i t j l t j *

_jspxFactory = JspFactory.getDefaultFactory();response.setContentType("text/html");pageContext = _jspxFactory.getPageContext(this,request response "" true 8192 true);import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;import java.io.PrintWriter;import java.io.IOException;import java.io.FileInputStream;import java.io.ObjectInputStream;import java.util.Vector;

request,response, , true, 8192, true);application = pageContext.getServletContext();config = pageContext.getServletConfig();session = pageContext.getSession();out = pageContext.getOut();// beginout.write("\r\n<html>\r\n<body>\r\n");import java.util.Vector;

import org.apache.jasper.runtime.*;import java.beans.*;import org.apache.jasper.JasperException;import java.text.*;import java.util.*;public class _0005cjsp_0005cjsptest_0002ejspjsptest_jsp_0

( y );// end// begin [file="E:\\jsp\\jsptest.jsp";from=(3,2);to=(5,0)]Date d = new Date();String today = DateFormat.getDateInstance().format(d);// end// beginout write("\r\nToday is: \r\n<em> ");extends HttpJspBase {

static {}public _0005cjsp_0005cjsptest_0002ejspjsptest_jsp_0( ) {}private static boolean _jspx_inited = false;public final void jspx init() throws JasperException {

out.write("\r\nToday is: \r\n<em> ");// end// begin [file="E:\\jsp\\jsptest.jsp";from=(7,8);to=(7,13)]out.print(today);</b>// end// beginout.write(" </em>\r\n</body>\r\n</html>\r\n");public final void _jspx_init() throws JasperException {

}public void _jspService(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {JspFactory _jspxFactory = null;PageContext pageContext = null;

out.write( /em \r\n /body \r\n /html \r\n );// end} catch (Exception ex) {if (out.getBufferSize() != 0)out.clear();pageContext.handlePageException(ex);} finally {

fl h()HttpSession session = null;ServletContext application = null;ServletConfig config = null;JspWriter out = null;Object page = this;String _value = null;try {

out.flush();_jspxFactory.releasePageContext(pageContext);}}}

© SI1P1 – 2004 5/15

try {if (_jspx_inited == false) {_jspx_init();_jspx_inited = true;}

Page 6: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Prednosti JSP tehnologije

Iako pomoću JSP se ne može uraditi ništa novo što seIako pomoću JSP se ne može uraditi ništa novo što se ne može postići i pomoću servleta, korišćenje JSP tehnologije olakšava:– pisanje samog HTML koda– čitanje i održavanje HTML kodaPomoću JSP tehnologije moguće je:Pomoću JSP tehnologije moguće je:– koristiti standardne HTML alate kao što je Macromedia DreamWeaver.– Podeliti posao između dizajne (koji koriste HTML)i Java programeraJSP ohrabruje– odvajanje (Java) kod koji predstavlja sam sadržaj, od koda (HTML) pomoću koga se sadržaje prezentuje

© SI1P1 – 2004 6/15(HTML) pomoću koga se sadržaje prezentuje

Page 7: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Prednosti JSP tehnologije

U odnosu na ASP ili ColdFusionU odnosu na ASP ili ColdFusion– moćniji jezik za dinamički deo aplikacije– izvršavanje na većem broju servera i operativnih sistemaU odnosu na PHP– moćniji jezik za dinamički deo aplikacije– bolja podrška alata– bolja podrška alataU odnosu na korišćenje samo servleta– jednostavnije kreiranje HTML koda– korišćenje standardnih alata (n.p., DreamWeaver)– podeli i vladaj

JSP programeri i dalje moraju poznavati servlet– JSP programeri i dalje moraju poznavati servlet programiranje

© SI1P1 – 2004 7/15

Page 8: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Podešavanje okruženja

Postavljanje CLASSPATH NePostavljanje CLASSPATH. Ne.Kompajliranje koda. Not.Korišćenje paketa da bi se izbegao konflikt sa j p gimenima. Ne.Postavljenje JSP stranica u specijalne direktorijume. NeNe.– install_dir\webapps\ROOT\ (HTML and JSP -- Tomcat)Korišćenje specijalnih URLs za poziv JSP stranice NeKorišćenje specijalnih URLs za poziv JSP stranice. Ne.– Koriste se ista imena kao za HTML stranice (izuzev ekstenzije fajla)Izuzeci– Ptavila oko CLASSPATH, install dirs, ..., i dalje se primenjuju na regularne Java klase koje se koriste u okviru

© SI1P1 – 2004 8/15primenjuju na regularne Java klase koje se koriste u okviru JSP stranice

Page 9: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>JSP Expressions</TITLE><META NAME="keywords"<META NAME keywordsCONTENT="JSP,expressions,JavaServer Pages"><META NAME="description"CONTENT="A quick example of JSP expressions.">LINK REL STYLESHEET<LINK REL=STYLESHEETHREF="JSP-Styles.css"TYPE="text/css"></HEAD><BODY><H2>JSP Expressions</H2><UL><LI>Current time: <%= new java util Date() %><LI>Current time: <%= new java.util.Date() %><LI>Server: <%= application.getServerInfo() %><LI>Session ID: <%= session.getId() %><LI>The <CODE>testParam</CODE> form parameter:

© SI1P1 – 2004 9/15<%= request.getParameter("testParam") %></UL></BODY></HTML>

Page 10: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

Ako je lokacija fajlaAko je lokacija fajla– C:\jakarta-tomcat-xx\webapps\ROOT\jsp-scripting\Expressions.jsp URL je– http://localhost/jsp-scripting/Expressions.jsp

© SI1P1 – 2004 10/15

Page 11: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Životni ciklus JSP stranice

© SI1P1 – 2004 11/15

Page 12: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Mogućnosti JSP tehnologije

Scripting elementi pozivaju kod servletaScripting elementi pozivaju kod servleta direktnoScripting elementi pozivaju kod servleta indirektno (korišćenjem pomoćnihindirektno (korišćenjem pomoćnih klasa)JavaBeansServlet/JSP aplikacija (MVC)MVC sa JSP expression jezikomPosebni tagoviPosebni tagoviMVC sa beans, pomoćnim tagovima, i frameworcima kao što su Struts ili JSF

© SI1P1 – 2004 12/15

Page 13: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Mogućnosti JSP tehnologije

Postoje dve opcijePostoje dve opcije– Upisati 25 linija Java koda direktno u JSP stranice– Upisati ovih 25 linija u odvojenu Java klasu i 1 liniju u JSP stranicu koja poziva novu klasustranicu koja poziva novu klasuZašto je druga opcija mnogo bolja?– Razvoj. Odvojena klasa se piše u Java okruženju (editor ili j j p j (IDE), ne u HTML okruženju– Debagovanje. Ako postoje syntaksne greške, primetiće se odmah tokom procesa kompajliranja Jednostavne printodmah tokom procesa kompajliranja. Jednostavne print naredbe se mogu videti.– Testiranje. Može se napisati test rutina sa petljom koja 10 000 puta testira i ponvalja se nakon svake promene10,000 puta testira i ponvalja se nakon svake promene.– Višestruko korišćenje. Može se koristiti ista klasa za više stranica

© SI1P1 – 2004 13/15

Page 14: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Osnovna JSP sintaksa

HTML TekstHTML Tekst– <H1>Blah</H1>– Šalje se dalje klijentu. Prevodi si u servlet kod koji je sličan sledećemsledećemout.print("<H1>Blah</H1>");HTML Komentari<!-- Komentar -->– Isto kao u HTMLu: šalje se dalje klijentuJSP K iJSP Komentari<%-- Komentar --%>– Ne šalje se klijentuNe šalje se klijentu

© SI1P1 – 2004 14/15

Page 15: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Vrste dinamičkih elemenata

izrazi (expressions):( p )<%= java_izraz %><%= new java.util.Date() %>skriptleti (scriptlets):<% j k d %><% java_kod %><% for (int i = 0; i < 10; i++) ... %>deklaracije (declarations):<%! java deklaracija %><%! java_deklaracija %><%! int a; %>direktive (directives)<%@ direktiva attr="..."%><%@ page contentType="text/plain" %>

© SI1P1 – 2004 15/15

Page 16: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP izrazi

d kl<html>...

<h4>Dobrodošli, <%= username %></h4>

u pitanju je izraz, daklene završava se sa ;

Danas je <%= new java.util.Date() %>.

...</html></html>

za izraze koji nisu tipa Stringautomatski se poziva toString()automatski se poziva toString()

© SI1P1 – 2004 16/15

Page 17: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP skriptleti

<ht l><html>...

<% if (Math random() < 0 5) { %><% if (Math.random() < 0.5) { %>Dobar dan!<% } else { %>Dobro veče!Dobro veče!<% } %>...</html>

© SI1P1 – 2004 17/15

Page 18: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP skriptleti<html>

skriptlet se ugrađuje direktno u kodgenerisanog servleta; tako je brojač

tlj i idlji i k i d k i tl t...

<table border=1><tr><td>R.br.</td>

petlje i vidljiv i u okviru drugog skriptleta(on se nalazi “unutar” for petlje)

<td>Ime</td></tr><%String names[] = {"Marko", "Nikola", "Igor", "Vladimir", "Dejan"};for (int i = 0; i < names length; i++) {for (int i = 0; i < names.length; i++) {%><tr><td><%= i %></td><td><%= names[i] %></td>

</tr><% } %></table>

...</html>

© SI1P1 – 2004 18/15

Page 19: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP deklaracije

definisanje metoda ili atributa servlet klase – izvan metode za obradudefinisanje metoda ili atributa servlet klase izvan metode za obradu zahteva

<%! int hitCount = 0; %>

<%! private int getRandom() {return (int)(Math.random()*100);

}%>

atribut servlet klase; samim timdostupan je u višestrukim doGet()ili doPost() pozivima

© SI1P1 – 2004 19/15

Page 20: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP direktiveOmogućavaju kontrolu strukture generisanog g j g gservleta.Dva osnovna tipa direktiva:• page direktivepage direktive

• import – za import paketa• contentType – podešava ContentType odgovora

• include direktive• uključuje zadatu stranicu u postojeću• uključuje zadatu stranicu u postojeću

© SI1P1 – 2004 20/15

Page 21: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP direktive

• page direktive

text/html; charset=utf-8

• page direktive<%@ page contentType="text/html" %><%@ page import="java.util.Vector" %>

• include direktive<jsp:include page “asd html”/><jsp:include page=“asd.html”/>

– uključuje stranicu u momentu zahtjevanja strane<%@ include file=“asd.jsp” %>

– uključuje stranicu u momentu kada se stranica prevodi u servlet

© SI1P1 – 2004 21/15

Page 22: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Predefinisane promjenljive

HttpServletResponse povezan sa odgovorom klijentu Dozvoljeno je postavljanje HTTP statusnih kodova i zaglavlja odgovora (response headers)PrintWriter koji se koristi za slanje odgovora klijentuj j g jout je baferovana verzija PrintWriter pod nazivom JspWriterMoguće je podešavanje veličine bafera, kao i njegovo potpuno isključivanje pomoću buffer atributa page direktiveisključivanje pomoću buffer atributa page direktiveout se koristi skoro isključivo u skriptletima, jer se JSP izrazi automatski smeštaju u izlazni tokHttpSession objekt povezan sa zahtevomHttpSession objekt povezan sa zahtevomSesije se kreiraju automatski, tako da je ova varijabla već povezana čak iako nema ulazne reference na sesiju. • izuzetak je ako se koristi session atribut page direktive kako bi se isključilo praćenje• izuzetak je ako se koristi session atribut page direktive kako bi se isključilo praćenje

sesija. U tom slučaju pokušaj pristupanja session varijabli rezultuje generisanjem poruke o grešci od strane servera u momentu prevođenja JSP strane u servlet

© SI1P1 – 2004 22/15

Page 23: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Predefinisane promjenljive

application objekat klase ServletContext koji služiapplication - objekat klase ServletContext koji služi za komunikaciju servleta i aplikacionog serveraUobičajena upotreba je za smeštanje globalnih j p j j gpromenljivih uz pomoć metoda setAttribute()/getAttribute()page sinonim za ključnu reč thispage - sinonim za ključnu reč this

© SI1P1 – 2004 23/15

Page 24: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Predefinisane promenljive

<html>

...

<% if (request.getParameter("username") != null) { %>Vrednost parametra: <%=

( )request.getParameter("username") %><% } %>

...

</html>

© SI1P1 – 2004 24/15

Page 25: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jspInit and jspDestroy Metodi

• Kod JSP stranica, kao i kod regularnihKod JSP stranica, kao i kod regularnih servleta, ponekad postoji potreba za korišćenjem init i destroy metoda• Problem: servlet koji napravljen od JSP stranice možda već koristi svoje init i destroy metodemetode– Njihovo preklapanje može da prouzrokuje probleme.– pa je nelegalno koristiti JSP deklaracije da bi se p j g jdeklarisali init ili destroy metodi.• Rešenje: koristiti jspInit i jspDestroy.A i i l j d ć i i–Auto-generisani servlet garantuje da će pozivati ove

metode u okvriu svojih init i destroy metoda, ali je standardna verzija jspInit i jspDestroy metoda prazna

© SI1P1 – 2004 25/15standardna verzija jspInit i jspDestroy metoda prazna (sa mogućnošću preklapanja)

Page 26: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

JSP deklaracija

• ProblemProblem– Predefinisane promenljive (request, response, out, session,...) su lokalne u okviru _jspService metoda. - Tako da nisu dostupne u metodama koji su definisani u okviru JSP deklaracije ili u metodama u pomoćnim klasamaklasama. • Rešenje: proslediti ih kao argumente.<%! Private void nekiMetod(HttpSession s){( p ){

uradiNestoSa(s);}%>

% kiM t d( i ) %<% nekiMetod(session); %>• Treba primetiti da println metod od JspWriterbaca IOException

© SI1P1 – 2004 26/15baca IOException– Koristiti “throws IOException” ya metode koji koristeprintln naredbu

Page 27: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Korišćenje page direktive

Pruža informacije na visokom nivou o samomPruža informacije na visokom nivou o samom servletu koji se izvršava nakon JSP straniceMože kontrolisati– Koje se klase importuju– Koju klasu servlet nasleđuje

š– Koji MIME tipovi se generišu– Kako se obrađuje multithread

Da li servlet pripada sesiji– Da li servlet pripada sesiji– Veličinu i ponašanje izlaznog bafera– Koja stranica obrađuje neočekivane greškeKoja stranica obrađuje neočekivane greške

© SI1P1 – 2004 27/15

Page 28: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

import atribut

SintaksaSintaksa– <%@ page import="package.class" %>– <%@ page import="package.class1,...,package.classN" @ p g p p g , ,p g

%>Upotreba– Generisanje import naredbu na vrhu definicije servletaNapomene

JSP stranice se mogu nalaziti bilo gde na serveru ali– JSP stranice se mogu nalaziti bilo gde na serveru, ali klase koje se koriste u okviru JSP stranica moraju biti u uobičajenim servlet direktorijumima…/WEB-INF/classes ili…/WEB-INF/classes/directoryMatchingPackage

k d k k k kl k© SI1P1 – 2004 28/15Preporuka je da se uvek koriste paketi za klase koje se koriste u okviru JSP stranice!

Page 29: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Paketi

public class SomeClass {public class SomeClass {public String someMethod(...) {SomeHelperClass test = new SomeHelperClass(...);String someString =SomeUtilityClass.someStaticMethod(...);...}}

I<%SomeHelperClass test new SomeHelperClass( );SomeHelperClass test = new SomeHelperClass(...);String someString =SomeUtilityClass.someStaticMethod(...);

© SI1P1 – 2004 29/15

y ( );%>

Page 30: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer<H2>The import Attribute</H2><%@ page import="java.util.*,coreservlets.*" %><%!private String randomID() {int num = (int)(Math.random()*10000000.0);return("id" + num);}private final String NO_VALUE = "<I>No Value</I>";%><%String oldID =CookieUtilities.getCookieValue(request, "userID",NO_VALUE);if (oldID.equals(NO_VALUE)) {String newID = randomID();Cookie cookie = new LongLivedCookie("userID", newID);response.addCookie(cookie);}}%>This page was accessed on <%= new Date() %> with a userIDcookie of <%= oldID %>.

/ O /© SI1P1 – 2004 30/15

</BODY></HTML>

Page 31: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

© SI1P1 – 2004 31/15

Page 32: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

contentType i pageEncoding atributi

SintaksaSintaksa– <%@ page contentType="MIME-Type" %>– <%@ page contentType="MIME-Type; @ p g yp yp ;charset=Character-Set" %>– <%@ page pageEncoding="Character-Set" %>Upotreba– Specificiraju MIME tip stranice generisane od strane servleta koji je nastao od JSP straniceservleta koji je nastao od JSP straniceNapomene– Vrednost atributa se ne može izračunati u vreme zahteva

© SI1P1 – 2004 32/15

Page 33: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Uslovno generisanje Excel stranice

Za ovaj problem ne može se koristiti atributZa ovaj problem ne može se koristiti atribut contentType, jer on ne može da bude uslovljen.

- Sledećim kodom se uvek dobija Excel MIME tip<% boolean usingExcel = checkUserRequest(request); %><% if (usingExcel) { %><%@ page contentType="application/vnd.ms-excel" %><% } %>

Rešenje: koristiti regularne JSP skriptlete saRešenje: koristiti regularne JSP skriptlete sa response.setContentType

© SI1P1 – 2004 33/15

Page 34: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Uslovno generisanje Excel stranice…<BODY><CENTER><H2>Comparing Apples and Oranges</H2><%String format = request.getParameter("format");if ((format != null) && (format.equals("excel"))) {response setContentType("application/vnd ms excel");response.setContentType("application/vnd.ms-excel");}%><TABLE BORDER=1><TABLE BORDER=1><TR><TH></TH> <TH>Apples<TH>Oranges<TR><TH>First Quarter <TD>2307 <TD>4706<TR><TH>Second Quarter<TD>2982 <TD>5104TR TH Second Quarter TD 2982 TD 5104<TR><TH>Third Quarter <TD>3011 <TD>5220<TR><TH>Fourth Quarter<TD>3055 <TD>5287</TABLE>

© SI1P1 – 2004 34/15</CENTER></BODY></HTML>

Page 35: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Uslovno generisanje Excel stranice

© SI1P1 – 2004 35/15

Page 36: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

session atribut

SintaksaSintaksa– <%@ page session="true" %> <%-- Default --%>– <%@ page session="false" %>@ p gUpotreba– Da se označi da neka stranica ne pripada sesijiNapomena– Ako se ništa ne navede, stranica je deo sesije

S j j k liči t b ij– Smanjuje se količina potrebne memorije na serveru, ako je sajt visokog inteziteta

© SI1P1 – 2004 36/15

Page 37: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

isELIgnored atribut

SintaksaSintaksa– <%@ page isELIgnored="false" %>– <%@ page isELIgnored="true" %>@ p g gUpotreba– Kontrola da li se JSP 2.0 Expression Language (EL)

šignoriše (true) ili normalno obrađuje (false).Napomena

Ako web xml specificira verziju servleta 2 3 (JSP 1 2) ili– Ako web.xml specificira verziju servleta 2.3 (JSP 1.2) ili raniju, default je true- I dalje je moguće menjati default vrednostij j g j– Ako web.xml specificira verziju servleta 2.4 (JSP 2.0) ili raniju, default je false

© SI1P1 – 2004 37/15

Page 38: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

errorPage atribut

SintaksaSintaksa– <%@ page errorPage="Relative URL" %>Upotrebap– Specificira JSP stranicu koja obrađuje bilo koji izuzetak koji se dogodio na tekućoj straniciNapomene– Izuzetak koji se dogodio je automatski dostupan dizajniranoj error stranici u obliku "exception“dizajniranoj error stranici u obliku exception promenljive– web.xml fajl dozvoljava definisanje error stranica na nivou aplikacija

© SI1P1 – 2004 38/15

Page 39: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

isErrorPage atribut

SintaksaSintaksa– <%@ page isErrorPage="true" %>– <%@ page isErrorPage="false" %> <%-- Default --@ p g g%>Upotreba

ž š– Specificira da li se trenutna stranica može izvršavati kao error stranica za neku drugu JSP stranicuNapomenaNapomena– Nova predefinisana promenljiva exception se kreira i dostupna je u okviru error stranica– Ovakav rad treba koristiti samo za hitan backup; trebalo bi eksplicitno obraditi što je moguće više izuzetaka

© SI1P1 – 2004 39/15izuzetaka- Uvek treba proveriti unete podatke

Page 40: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

isErrorPage primer…<BODY><%@ page errorPage="/WEB-INF/SpeedErrors.jsp" %><TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS="TITLE">Computing Speed</TABLE><%!<%!private double toDouble(String value) {return(Double.parseDouble(value));}%><%double furlongs = toDouble(request.getParameter("furlongs"));doutbolDeo ufbolret(nriegqhutess t=. getParameter("fortnights"));doutbolDeo ufbolret(nriegqhutess t . getParameter( fortnights ));double speed = furlongs/fortnights;%><UL>

LI Di t % f l % f l<LI>Distance: <%= furlongs %> furlongs.<LI>Time: <%= fortnights %> fortnights.<LI>Speed: <%= speed %> furlongs per fortnight.</UL>

© SI1P1 – 2004 40/15

/</BODY></HTML>

Page 41: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

isErrorPage primer

<BODY>…<BODY><%@ page isErrorPage="true" %><TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS="TITLE">Error Computing Speed</TABLE><P><P>ComputeSpeed.jsp reported the following error:<I><%= exception %></I>. This problem occurred in thefollowing place:<PRE><%@ page import "java io *" %><%@ page import= java.io.* %><% exception.printStackTrace(new PrintWriter(out)); %></PRE>

© SI1P1 – 2004 41/15

/</BODY></HTML>

Page 42: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

isThreadSafe atribut

SintaksaSintaksa– <%@ page isThreadSafe="true" %> <%-- Default --%>– <%@ page isThreadSafe="false" %>@ p g

Upotreba– Da se naglasi sistemu da kod nije threadsafe, tako da

ž čsistem može da spreči konkurentne pristupe kodu- U stvari, servletu se prenosi da implementira SingleThreadModelSingleThreadModelNapomene- Može prouzrokovati lošije prefomanse u nekim p j psituacijama- Može prouzrokovati nekorektan rezultat u drugim

© SI1P1 – 2004 42/15

Page 43: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

isThreadSafe primer

<%! private int idNum = 0; %><%! private int idNum = 0; %><%String userID = "userID" + idNum;g ;out.println("Your ID is " + userID + ".");idNum = idNum + 1;%>

ID biti j di tID mora biti jedinstven

© SI1P1 – 2004 43/15

Page 44: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Da li je isThreadSafe potreban

Nije potreban! Moguća je sinhronizacija:Nije potreban!. Moguća je sinhronizacija:<%! private int idNum = 0; %><%synchronized(this) {String userID = "userID" + idNum;out.println("Your ID is " + userID + ".");idNum = idNum + 1;}}%>

Dobijaju se bolje perfomanse u okruženju saDobijaju se bolje perfomanse u okruženju sa velikim saobraćajeisThreadSafe="false" se neće korektno izvršiti,

© SI1P1 – 2004 44/15ako server koristi pristup sa pool-of-instances

Page 45: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

extends atribut

SintaksaSintaksa– <%@ page extends="package.class" %>Upotrebap– Da specificira klasu roditelja servleta koji se dobija od JSP straniceNapomene– Koristiti sa ekstremnom pažnjom

Uobičajena upotreba je da bi se nasledile klase koje– Uobičajena upotreba je da bi se nasledile klase koje prezentuje proizvođač servera (različite vryste podrške), a ne da bi se nasleđivale sopstvene klase.

© SI1P1 – 2004 45/15

Page 46: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Korišćenje fajlova

Pomoću jsp:include mogu se uključiti spoljnePomoću jsp:include mogu se uključiti spoljne stranice u trenutku prihvatanja zahtevaPomoću <%@ include ... %> (include direktive) se mogu uključiti spoljne stranice u trenutku prevođenja stranicePostoje razlozi zašto je u većem broju slučajaPostoje razlozi zašto je u većem broju slučaja bolje koristiti jsp:includePomoću jsp:plugin mogu se uključiti apleti za izvršavanje pomoću Java Plug-in

© SI1P1 – 2004 46/15

Page 47: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:include

SintaksaSintaksa– <jsp:include page="Relative URL" />Upotreba– Više puta koristiti iste JSP, HTML, ili obične tekst dokumente– Dozvoliti promene uključenog sadržaja bez promeneDozvoliti promene uključenog sadržaja bez promene osnovnih JSP stranaNapomene

JSP d ž j ž d j t i– JSP sadržaj ne može da menja osnovne stranice: koristi se samo izlaz uključenih JSP stranica– Ne treba zaboraviti simbol / na kraju taga– Relativne URL adrese koje počinju sa znakom / se intrpretiraju relativno u odnosu na Web aplikaciju, a ne relativno u odnosu na root servera.

© SI1P1 – 2004 47/15

relativno u odnosu na root servera.– Moguće je uključiti fajlove iz WEB-INF direktorijuma

Page 48: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:include primer

……<BODY><TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS "TITLE"><TR><TH CLASS="TITLE">What's New at JspNews.com</TABLE><P>Here is a summary of our threemost recent news stories:<OL><OL><LI><jsp:include page="/WEB-INF/Item1.html" /><LI><jsp:include page="/WEB-INF/Item2.html" /><LI><jsp:include page "/WEB INF/Item3 html" /><LI><jsp:include page="/WEB-INF/Item3.html" /></OL></BODY></HTML>

© SI1P1 – 2004 48/15

Page 49: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:include primer Item1.html

<B>Bill Gates acts humble </B> In a startling<B>Bill Gates acts humble.</B> In a startlingand unexpected development, Microsoft big wigBill Gates put on an open act of humilityp p yyesterday.<A HREF="http://www.microsoft.com/Never.html">More details...</A>

Može se primetiti da stranice nije celokupan HTML dokument;dokument;Postoje samo tagovi koji treba da se pojave na osnovnoj strani

© SI1P1 – 2004 49/15

Page 50: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:include primer rezultat

© SI1P1 – 2004 50/15

Page 51: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:param element

PrimerPrimer <jsp:include

page="/fragments/StandardHeading.jsp"><jsp:param name="bgColor" value="YELLOW" /></jsp:include>

Dobijeni URL– http://host/path/MainPage.jsp?fgColor=REDOsnovna stranicaOsnovna stranica– fgColor: RED– bgColor: nullbgColor: nullUključena stranica– fgColor: RED

© SI1P1 – 2004 51/15– bgColor: YELLOW

Page 52: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

include

SintaksaSintaksa– <%@ include file="Relative URL" %>Upotrebap– Upotreba više puta istog JSP sadržajaNapomene– Serveri ne proveravaju da li postoje promene uključenih fajlova.

Zato je potrebno promeniti i osnovne JSP fajlove svaki– Zato je potrebno promeniti i osnovne JSP fajlove svaki put kada su i uključeni fajlovi promenjeni.– Mogu se koristiti i specifični mehanizmi operativnih g p psistema, na primer na Unix-u<%-- Navbar.jsp modified 12/1/03 --%>

l d f l " b "© SI1P1 – 2004 52/15<%@ include file="Navbar.jsp" %>

Page 53: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

include i jsp:include

© SI1P1 – 2004 53/15

Page 54: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Kada šta upotrebiti

Koristiti jsp:include Uvek kada je mogućeKoristiti jsp:include Uvek kada je moguće– Promene uključenih stranica ne zahtevaju nikakvu ručnu obradu– Postoji razlika u brzini primene ovih naredbiIpak i include naredba (<%@ include …%>) ima i dodatna svojstva kao što sui dodatna svojstva kao što su

– Osnovna stranica<%! int accessCount = 0; %><%! int accessCount = 0; %>– Uključena stranica<%@ include file="snippet.jsp" %>pp j p<%= accessCount++%>

© SI1P1 – 2004 54/15

Page 55: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer<%@ page import="java.util.Date" %>p g p j<%-- The following become fields in each servlet thatresults from a JSP page that includes this file. --%><%!private int accessCount = 0;private Date accessDate = new Date();private String accessHost = "<I>No previous access</I>";%>%><P><HR>This page &copy; 2006This page &copy; 2006<A HREF="http//www.my-company.com/">my-company.com</A>.This page has been accessed <%= ++accessCount %>times since server reboot. It was most recentlytimes since server reboot. It was most recentlyaccessed from<%= accessHost %> at <%= accessDate %>.<% accessHost = request.getRemoteHost(); %>

© SI1P1 – 2004 55/15<% accessDate = new Date(); %>

Page 56: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

<BODY><BODY><TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS="TITLE">Some Random Page</TABLE>Some Random Page</TABLE><P>Information about our products and services.<P>Blah, blah, blah.<P><P>Yadda, yadda, yadda.<%@ include file="/WEB-INF/ContactSection.jsp" %></BODY></HTML></BODY></HTML>15 J2EE training: http://courses.coreservlets.comReusing Footers: Result

© SI1P1 – 2004 56/15

Page 57: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

© SI1P1 – 2004 57/15

Page 58: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Kada šta upotrebiti

Footer definiše polje accessCount kaoFooter definiše polje accessCount kao promenljivu instance Ako osnovna stranica koristi accessCount, trebalo bi da se koristi naredba @include– U drugim slučajevima accessCount će biti undefinedU ovom primeru osnovna stranica ne koristiU ovom primeru osnovna stranica ne koristi accessCount– Zašto se onda koristi naredba @include?@

© SI1P1 – 2004 58/15

Page 59: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Poziv apleta

AKo je aplet realizovan sa JDK 1 1 ili 1 02 (da biAKo je aplet realizovan sa JDK 1.1 ili 1.02 (da bi ga izvršavali i veoma stari čitači).– Izvršava se u skoro svakom čitaču– Koristi se APPLET tagAko je aplet realizovan sa JDK 1.5.– Zahteva IE 5 ili kasnije verzije ili Netscape 6 kasnije verzije– Koristi se APPLET tagKoristi se APPLET tag

• Ako je aplet realizovan sa Java 2 okruženjem.– Izvršava se u skoro svakom čitaču– Koriste se OBJECT i EMBED tagovi– Ova opcija je pojednostavljena pomoću jsp:plugin taga

© SI1P1 – 2004 59/15

Page 60: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Poziv apleta

Koristi se sintaksa slična APPLET taguKoristi se sintaksa slična APPLET tagu– Dobijaju se OBJECT i EMBED tagoviAPPLET Tag

<APPLET CODE="MyApplet.class“ WIDTH=475 HEIGHT=350>

</APPLET></APPLET>jsp:plugin

<jsp:plugin type=“applet” width=“475” h i ht “350">height=“350">

</jsp:plugin>Napomenaapo e a– JSP element i imena atributa su case sensitive– Sve vrednosti atributa moraju biti između ‘’ ili “”

l č© SI1P1 – 2004 60/15– Slično XMLu, a ne HTMLu

Page 61: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Dobijeni HTML kod

<object classid=<object classid"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"width="300" height="200"codebase "http //ja a s n com/p od cts/pl gin/1 2codebase="http://java.sun.com/products/plugin/1.2.2/jinst all-1_2_2-win.cab#Version=1,2,2,0"><param name="java_code" value="SomeApplet.class"><param name="type" value="application/x-java-applet;"><COMMENT><embed type="application/x-java-applet;" width="300"<embed type application/x java applet; width 300height="200"pluginspage="http://java.sun.com/products/plugin/"java code "SomeApplet class">java_code="SomeApplet.class"><noembed></COMMENT>

© SI1P1 – 2004 61/15</noembed></embed></object>

Page 62: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

…<BODY><CENTER><TABLE BORDER=5><TR><TH CLASS="TITLE">Using jsp:plugin</TABLE><P>

j l i t " l t"<jsp:plugin type="applet"code="PluginApplet.class"width="370" height="420">width= 370 height= 420 ></jsp:plugin></CENTER></BODY></HTML>

© SI1P1 – 2004 62/15

/CENTER /BODY /HTML

Page 63: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Dobijeni Java kod

import javax swing *;import javax.swing. ;/** An applet that uses Swing and Java 2D* and thus requires the Java Plug-in.q g*/public class PluginApplet extends JApplet {public void init() {WindowUtilities.setNativeLookAndFeel();

tC t tP ( T tP l())setContentPane(new TextPanel());}}}

© SI1P1 – 2004 63/15

Page 64: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Atributi jsp:plugin elementa

typetype– Za aplete mora imati vrednost "applet".- Koristi se "bean" da bi se ubacili JavaBeans elementi u k i W b t iokviru Web stranice.

code– Upotreba je ista kao CODE atributa u okviru APPLETUpotreba je ista kao CODE atributa u okviru APPLET taga, specificira klasu apleta na najvišem nivouwidth, height

U t b j i t k WIDTH HEIGHT k i APPLET– Upotreba je ista kao WIDTH, HEIGHT u okviru APPLET tagacodebase– Upotreba je ista kao CODEBASE u okviru APPLET tagaalign

Upotreba je ista kao ALIGN u okviru APPLET i IMG© SI1P1 – 2004 64/15

– Upotreba je ista kao ALIGN u okviru APPLET i IMG taga

Page 65: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Atributi jsp:plugin elementa

hspace vspacehspace, vspace– Upotreba je ista kao HSPACE, VSPACE u okviru APPLET tagaarchive– Upotreba je ista kao ARCHIVE u okviru APPLET taga, specificira JAR fajl iz koga se klase i slike učitavajuspecificira JAR fajl iz koga se klase i slike učitavajuname– Upotreba je ista kao NAME u okviru APPLET tagaUpotreba je ista kao NAME u okviru APPLET taga, specificira ime koje se koristi u okviru komunikacije između apleta ili za pristup apletu iz skript jezika kao što j J S i tje JavaScript.title– Upotreba je ista kao TITLE atributa

© SI1P1 – 2004 65/15Upotreba je ista kao TITLE atributa

Page 66: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Atributi jsp:plugin elementa

jreversionjreversion– Identifikuje verziju Java Runtime Environment (JRE) koje se zahteva. Default je 1.2.iepluginurl– Definiše URL sa koga se plug-in za Internet Explorer može dobiti Korisnici koji nemaju instaliran ovaj plug inmože dobiti. Korisnici koji nemaju instaliran ovaj plug-in, biće upitani da izvrše njegov download sa navedene lokacije. Podrazumevana vrednost je Sun-ov, ali za intranet korisnike je bolje rešenje lokalna kopijanspluginurl

D fi iš URL k l i N t ž– Definiše URL sa koga se plug-in za Netscape može dobiti. Podrazumevana vrednost je Sun-ov, ali za intranet korisnike je bolje rešenje lokalna kopija

© SI1P1 – 2004 66/15

Page 67: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Atributi jsp:plugin elementa

PARAM TagoviPARAM Tagovi– <APPLET CODE="MyApplet.class“ WIDTH=475

HEIGHT=350><PARAM NAME "PARAM1" VALUE "VALUE1"><PARAM NAME="PARAM1" VALUE="VALUE1"><PARAM NAME="PARAM2" VALUE="VALUE2"></APPLET></APPLET>

Ekvivalentan jsp:param kod<jsp:plugin type="applet“ code="MyApplet.class"width="475" height="350"><jsp:params><jsp:param name="PARAM1" value="VALUE1" /><jsp:param name= PARAM1 value= VALUE1 /><jsp:param name="PARAM2" value="VALUE2" /></jsp:params>

© SI1P1 – 2004 67/15</jsp:plugin>

Page 68: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:fallback elementa

APPLET TagAPPLET Tag<APPLET CODE="MyApplet.class"WIDTH=475 HEIGHT=350><B>Error: this example requires Java.</B></APPLET>

Ekvivalent jsp:plugin kod sa jsp:fallback<jsp:plugin type="applet“ code="MyApplet.class"

idth "475" h i ht "350"width="475" height="350"><jsp:fallback><B>Error: this example requires Java </B><B>Error: this example requires Java.</B></jsp:fallback></jsp:plugin>

© SI1P1 – 2004 68/15

</jsp:plugin>

Page 69: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Rad sa bean-ovima

Potrebno je razumeti prednosti korišćenja bean-Potrebno je razumeti prednosti korišćenja beanovaKreiranje bean-ovaInstaliranje bean klasa na serveruPristup bean property-ijimaEksplicitno postavljanje bean property-ijaAutomatsko postavljanje bean property-ija iz parametaraparametaraDeljenje bean-ova između više servleta i JSP stranica

© SI1P1 – 2004 69/15

Page 70: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Rad sa bean-ovima

To su Java klase koje moraju ispunjavati nekolikoTo su Java klase koje moraju ispunjavati nekoliko pravila– Moraju imati zero-argument (prazan) konstruktor- Ovaj zahtev se može ispuniti eksplicitnim definisanjem takvog konstruktora ili izostavljanjem svih konstruktora

Ne bi trebalo da ima public promenljive instanci (polja)– Ne bi trebalo da ima public promenljive instanci (polja)– Neposredne vrednosti bi trebale da se dobijaju pomoću metoda nazvanih getXxx i setXxxg- Ako klasa ima metod getTitle koji kao rezultat vraća String, kaže se da klasa poseduje String property

titlnazvanu title- Boolean properties koriste Xxx umesto getXxx– Više informacije na http://java sun com/beans/docs/

© SI1P1 – 2004 70/15Više informacije na http://java.sun.com/beans/docs/

Page 71: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Rad sa bean-ovima

Da bi se napisao bean, ne smeju postojati publicDa bi se napisao bean, ne smeju postojati public poljaZnači sledeći kod

bli d bl dpublic double speed;treba zameniti sa

private double speed;private double speed;public double getSpeed() {return(speed);}public void setSpeed(double newSpeed) {speed = newSpeed;speed = newSpeed;}

I ovo treba uraditi u celokupnom Java kodu na k© SI1P1 – 2004 71/15svakom mestu

Page 72: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Osnovna sintaksa

jsp:useBeanjsp:useBean– U najjednostavnijem slučaju, ovaj element pravi novibean.- Način korišćenja:

<j B id "b N " l " k Cl " /><jsp:useBean id="beanName" class="package.Class" />jsp:getProperty– Ovaj element čita i prikazuje vrednosti definisanih bean property-ija.- Način korišćenja:<jsp:getProperty name="beanName“ property="propertyName" />j p g p y p p y p p yjsp:setProperty– Ovaj element menja vrednost bean property-ija- Način korišćenja:- Način korišćenja:

<jsp:setProperty name="beanName“ property="propertyName“ value="propertyValue" />

© SI1P1 – 2004 72/15

Page 73: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:useBean

SintaksaSintaksa– <jsp:useBean id="name" class="package.Class" />Upotreba– Dozvoljava instanciranje Java klasa bez eksplicitnog Java programiranja (XML-kompatibilna sintaksa)NapomeneNapomene–Interpretacija:<jsp:useBean id="book1" class="coreservlets.Book" />

ž ćMože se dobiti i pomoću skriptleta<% coreservlets.Book book1 = new coreservlets.Book();

%>%ali jsp:useBean ima dve prednosti:Jednostavnije je dobijati vrednosti objekata iz zahtevanih parametera

© SI1P1 – 2004 73/15parameteraJednostavnije je deliti objekte između stranica ili servleta

Page 74: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:getProperty

SintaksaSintaksa<jsp:getProperty name="name" property="property" />

Upotrebap– Dozvoljava pristup bean property-ijima bez eksplicitnog Java programiranjaNapomene<jsp:getProperty name="book1" property="title" />Je ekvivalntno sa sledećim JSP izrazomJe ekvivalntno sa sledećim JSP izrazom<%= book1.getTitle() %>

© SI1P1 – 2004 74/15

Page 75: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:setProperty

SintaksaSintaksa<jsp:setProperty name="name“ property="property“

value="value" />Upotreba– Dozvoljava postavljanje bean property-ija bez eksplicitnog Java programiranjaeksplicitnog Java programiranjaNapomene

<jsp:setProperty name="book1“ property="title“<jsp:setProperty name= book1 property= title value="Core Servlets and JavaServer Pages" />Je ekvivalntno sa sledećem skriptletu

<% book1.setTitle("Core Servlets and JavaServer Pages"); %>

© SI1P1 – 2004 75/15

Page 76: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

Beanovi se postavljaju u uobičajeni Java direktorijumdirektorijum

…/WEB-INF/classes/directoryMatchingPackageNameBeanovi (i pomoćne klase) moraju uvek biti u

© SI1P1 – 2004 76/15okviru paketa!

Page 77: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

<jsp:useBean id="stringBean“ class="coreservlets.StringBean" /><jsp:useBean id stringBean class coreservlets.StringBean /><OL><LI>Initial value (from jsp:getProperty):<I><j tP t " t i B “ t " “ /></I><I><jsp:getProperty name="stringBean“ property="message“ /></I><LI>Initial value (from JSP expression):<I><%= stringBean.getMessage() %></I><LI><jsp:setProperty name="stringBean“ property="message"value="Best string bean: Fortex" />Value after setting property with jsp:setProperty: <I> <jsp:getPropertyValue after setting property with jsp:setProperty: <I> <jsp:getProperty

name="stringBean“ property="message" /></I><LI><% stringBean.setMessage ("My favorite: Kentucky Wonder");

%>%Value after setting property with scriptlet:<I><%= stringBean.getMessage() %></I></OL>

© SI1P1 – 2004 77/15</OL>

Page 78: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

© SI1P1 – 2004 78/15

Page 79: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Postavljanje property-ija

<!DOCTYPE ><!DOCTYPE ...>...<jsp:useBean id="entry"j p yclass="coreservlets.SaleEntry" /><%-- setItemID expects a String --%><jsp:setPropertyname="entry"

t "it ID"property="itemID"value='<%= request.getParameter("itemID") %>' />

© SI1P1 – 2004 79/15

Page 80: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Postavljanje property-ija

<%<%int numItemsOrdered = 1;try {y {numItemsOrdered =Integer.parseInt(request.getParameter("numItems"));} catch(NumberFormatException nfe) {}%>

% tN It t i t %<%-- setNumItems expects an int --%><jsp:setPropertyname="entry"name= entryproperty="numItems"value="<%= numItemsOrdered %>" />

© SI1P1 – 2004 80/15

value % numItemsOrdered % /

Page 81: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Postavljanje property-ija

<%<%double discountCode = 1.0;try {String discountString =request.getParameter("discountCode");discountCode =discountCode =Double.parseDouble(discountString);} catch(NumberFormatException nfe) {}%><%-- setDiscountCode expects a double --%><jsp:setProperty<jsp:setPropertyname="entry"property="discountCode"

© SI1P1 – 2004 81/15

p p yvalue="<%= discountCode %>" />

Page 82: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Postavljanje property-ija

© SI1P1 – 2004 82/15

Page 83: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Postavljanje property-ija

Pomoću atributa jsp:setProperty može se postićiPomoću atributa jsp:setProperty može se postići da– se vrednosti postavljaju pomoću specificiranog parametra zahteva– Potrebno je izvršiti jednostavnu automatsku konverziju tipova za property-ije koji očekuju vrednosti standardnihtipova za property-ije koji očekuju vrednosti standardnih vrednosti boolean, Boolean, byte, Byte, char, Character, double,Double, int, Integer, float, Float, long, ili Long.

© SI1P1 – 2004 83/15

Page 84: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Ulazni parametri

<jsp:useBean id="entry"<jsp:useBean id entryclass="coreservlets.SaleEntry" /><jsp:setPropertyname="entry"property="itemID"param="itemID" />param= itemID /><jsp:setPropertyname="entry"property="numItems"param="numItems" /><jsp:setProperty<jsp:setPropertyname="entry"property="discountCode"

© SI1P1 – 2004 84/15

p p yparam="discountCode" />

Page 85: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Ulazni parametri

Simbol "*" se može upotrebiti za vrednostSimbol se može upotrebiti za vrednost property-ija atributa jsp:setProperty da bi se postiglo da– se vrednost dobija preko parametara zahteva koji ima isto ime kao i ime property-ija– Jednostavna automatska konverzija tipova se izvršava– Jednostavna automatska konverzija tipova se izvršava

© SI1P1 – 2004 85/15

Page 86: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Ulazni parametri

<jsp:useBean id="entry"<jsp:useBean id= entryclass="coreservlets.SaleEntry" /><jsp:setProperty name="entry" property="*" />j p p y y p p y /

Ovo je ekstremni primer za realizaciju "form čbeans" – objekata čiji se property-iji popunjavaju

prilikom slanja forme.– Može se dati proces podeliti između više formi tako daMože se dati proces podeliti između više formi, tako da svaka forma popunjava određeni deo objekta.

© SI1P1 – 2004 86/15

Page 87: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje bean-ova

Može se koristiti atribut scope da bi se definisaleMože se koristiti atribut scope da bi se definisale dodatne lokacije gde se može smestiti bean–I dalje ograničenje je lokalne pormenljive u okviru _jspService<jsp:useBean id="…" class="…“ scope="…" />Može se definisati da više servleta ili JSP stranicaMože se definisati da više servleta ili JSP stranica dele podatkeMože se dozvoliti i uslovno kreiranje bean-aj– Kreirati novi objekat samo ako se ne može pronaći postojeći

© SI1P1 – 2004 87/15

Page 88: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Vrednosti atributa scope

pagepage (<jsp:useBean … scope="page"/> ili

<jsp:useBean…>)– Default vrednost. Bean objekat treba da bude smešten u okviru PageContext objekta za vreme trajanja zahteva. Metodi u okviru istog servleta pristupaju bean-uMetodi u okviru istog servleta pristupaju bean-uapplication(<jsp:useBean … scope="application"/>)( j p p pp / )– Bean će biti smešten u ServletContext (dostupan preko promenljivih aplikacije ili pozvan pomoću

tS l tC t t())getServletContext()).- ServletContext je deljen između svih servleta iste Web aplikacije (ili svih servleta na serveru, ako eksplicitno

© SI1P1 – 2004 88/15

aplikacije (ili svih servleta na serveru, ako eksplicitno nijedna Web aplikacija nije definisana).

Page 89: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Vrednosti atributa scope

sessionsession(<jsp:useBean … scope="session"/>)– Bean će biti smešten u HttpSession objektu p jpovezanom sa trenutnim zahtevom, gde mu se može pristupiti iz regularnog servlet koda sa metodama getAttribute i setAttribute kao bilo kom drugom objektugetAttribute i setAttribute, kao bilo kom drugom objektu sesijerequest(<jsp:useBean … scope="request"/>)– Bean objekat treba da bude smešten u ServletRequest bj kt t j j t t ht k dobjektu za vreme trajanja trenutnog zahteva, kada mu

se može pristupiti pomoću getAttribute

© SI1P1 – 2004 89/15

Page 90: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Uslovne operacije sa bean-ovima

Bean se može uslovno kreiratiBean se može uslovno kreirati– Rezultat jsp:useBean je novi bean čija će se instanca formirati samo ako se ne može pronaći bean sa istim id i oblasti važenja.– Ako bean sa istim id i oblasti važenja se pronađe, postojeći bean se jednostavno poveže sa promenljivompostojeći bean se jednostavno poveže sa promenljivom pomoću id.Uslovno postavljanje Bean property-ija– <jsp:useBean ... />Se zamenjuje sa

<jsp:useBean ...>statements</jsp:useBean>–statements (jsp:setProperty elementi) se izvršavaju samo ako se kreira novi bean a ne izvršavaju se kada se

© SI1P1 – 2004 90/15samo ako se kreira novi bean, a ne izvršavaju se kada se pronađe postojeći.

Page 91: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

AccessCountBean

public class AccessCountBean {public class AccessCountBean {private String firstPage;private int accessCount = 1;

bli St i tFi tP () {public String getFirstPage() {return(firstPage);}public void setFirstPage(String firstPage) {this.firstPage = firstPage;}}public int getAccessCount() {return(accessCount);}}public void setAccessCountIncrement(int increment) {accessCount = accessCount + increment;

© SI1P1 – 2004 91/15}}

Page 92: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

SharedCounts1.jsp<jsp:useBean id="counter"j pclass="coreservlets.AccessCountBean"scope="application"><jsp:setProperty name="counter"property="firstPage"value="SharedCounts1.jsp" /></jsp:useBean>Of Sha edCo nts1 jsp (this page)Of SharedCounts1.jsp (this page),<A HREF="SharedCounts2.jsp">SharedCounts2.jsp</A>, and<A HREF="SharedCounts3.jsp">SharedCounts3.jsp</A>,<jsp:getProperty name="counter" property="firstPage" /><jsp:getProperty name= counter property= firstPage />was the first page accessed.<P>Collectively, the three pages have been accessedCollectively, the three pages have been accessed<jsp:getProperty name="counter" property="accessCount" />times.<jsp:setProperty name="counter"

© SI1P1 – 2004 92/15property="accessCountIncrement"value="1" />

Page 93: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

SharedCounts2 jsp će se prvo posetitiSharedCounts2.jsp će se prvo posetiti.

© SI1P1 – 2004 93/15

Page 94: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

MVC

© SI1P1 – 2004 94/15

Page 95: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

MVC

Određeni framework se može koristitiOdređeni framework se može koristiti– Ponekada je upotreba frameworka korisna• Struts• JavaServer Faces (JSF)– Ne zahteva se njihovo korišćenje!• Moguće je implementirati MVC pomoću RequestDispatcher i dobiti sasvim zadovoljavajuće rezultate za jednostavne i srednje kompleksne aplikacijerezultate za jednostavne i srednje kompleksne aplikacijeMVC u potpunosti menja dizajn sistema– Moguće je koristiti MVC za pojedinačne zahteveg j p j– Razmišljati kao o MVC pristupu, a ne MVC arhitektura• Još se naziva i Model 2 pristup

© SI1P1 – 2004 95/15

Page 96: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

MVC i RequestDispatcher

1 Definisati beanove da bi prezentovali podatke1. Definisati beanove da bi prezentovali podatke2. Koristiti servlet da bi se prihvatio podataka

– Servlet čita parametre zahteva, proverava unete p , ppodatke, itd.

3. Postaviti beanoveč– Servlet realizuje poslovnu logiku (kod specifičan za

aplikaciju) ili kod za pristup podacima da bi došao do rezultata. Resultati se smeštaju u beanove koji su j jdefinisani u okviru koraka 1.

4. Postaviti bean u okviru zahteva, sesije, ili d ž j l tsadržaja servleta

– Servlet poziva setAttribute u okviru objekata zahteva, sesije, ili sadržaja servleta da bi smestio referencu

© SI1P1 – 2004 96/15

sesije, ili sadržaja servleta da bi smestio referencu beanova koji predstavljaju rezultat zahteva.

Page 97: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

MVC i RequestDispatcher

5 Proslediti zahtev JSP stranici5. Proslediti zahtev JSP stranici.– Servlet prepoznaje koja JSP stranica odgovara datoj situaciji i koristi metod forward od RequestDispatcher objekta da bi prebacio kontrolu datoj stranici.

6. Preuzeti podatke iz beana.JSP stranica pristupa beanu pomoću jsp:useBean i– JSP stranica pristupa beanu pomoću jsp:useBean i

odgovarajuće oblasti važenja iz koraka 4. Stranica tada koristi jsp:getProperty da bi pristupila beanovim property-ijima.– JSP stranica ne kreira ili modifikuje bean; ona samo prihvata i pokazuje podatke koje servlet kreiraprihvata i pokazuje podatke koje servlet kreira.

© SI1P1 – 2004 97/15

Page 98: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

MVC i RequestDispatcherpublic void doGet(HttpServletRequest request,p ( p q q ,HttpServletResponse response)throws ServletException, IOException {String operation = request.getParameter("operation");if (operation == null) {operation = "unknown";}St ing add essString address;if (operation.equals("order")) {address = "/WEB-INF/Order.jsp";} else if (operation equals("cancel")) {} else if (operation.equals( cancel )) {address = "/WEB-INF/Cancel.jsp";} else {address = "/WEB-INF/UnknownOperation.jsp";address /WEB INF/UnknownOperation.jsp ;}RequestDispatcher dispatcher =request.getRequestDispatcher(address);

© SI1P1 – 2004 98/15dispatcher.forward(request, response);}

Page 99: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:useBean i MVC nasuprot samo JSP

JSP stranice ne bi trebale da kreirajuJSP stranice ne bi trebale da kreiraju objekte– Servlet, a ne JSP stranica, trebalo bi da kreira , ,sve objekte koji predstavljaju podatke. Da bi se garantovalo da se u okviru JSP stranice neće kreirati objekti trebalo bi korostitikreirati objekti, trebalo bi korostiti<jsp:useBean ... type="package.Class" />- umestoumesto<jsp:useBean ... class="package.Class" />JSP stranica ne bi trebalo da modifikujeJSP stranica ne bi trebalo da modifikuje objekte– Moguće je koristiti jsp:getProperty ali ne

© SI1P1 – 2004 99/15jsp:setProperty

Page 100: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

jsp:useBean i oblasti važenja

requestrequest– <jsp:useBean id="..." type="..." scope="request" />session– <jsp:useBean id="..." type="..." scope="session" />application

– <jsp:useBean id="..." type="..." scope="application" />page

j B id " " t " " " " /– <jsp:useBean id="..." type="..." scope="page" />- ili samo<jsp:useBean id=" " type=" " /><jsp:useBean id= ... type= ... />– Ovakav pristup se ne korsiti u okviru MVC (Model 2) arhitekture

© SI1P1 – 2004 100/15

Page 101: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Request-Based deljenje podataka

ServletServletValueObject value = new ValueObject(...);request.setAttribute("key", value);q ( y , );RequestDispatcher dispatcher =

request.getRequestDispatcher ("/WEB-INF/SomePage jsp");INF/SomePage.jsp");

dispatcher.forward(request, response);JSP 1 2JSP 1.2

<jsp:useBean id="key" type="somePackage.ValueObject"scope="request" />p q /<jsp:getProperty name="key" property="someProperty" />

JSP 2.0© SI1P1 – 2004 101/15${key.someProperty}

Page 102: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Session-Based deljenje podataka

ServletServletValueObject value = new ValueObject(...);HttpSession session = request.getSession();session.setAttribute("key", value);RequestDispatcher dispatcher =

request.getRequestDispatcherrequest.getRequestDispatcher("/WEB-INF/SomePage.jsp");dispatcher.forward(request, response);

JSP 1.2<jsp:useBean id="key" type="somePackage.ValueObject“

scope="session" />scope sess o /<jsp:getProperty name="key" property="someProperty" />

JSP 2.0${k }© SI1P1 – 2004 102/15${key.someProperty}

Page 103: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Session-Based deljenje podataka

Treba koristiti response sendRedirect umestoTreba koristiti response.sendRedirect umesto RequestDispatcher.forwardSituacija sa sendRedirect:– Korisnik vidi URL JSP stranice (ako se koristi RequestDispatcher.forward korisnik vidi URL servleta)Prednosti sendRedirectPrednosti sendRedirect– Korisnik može pristupiti JSP stranici odvojeno- Korisnik može da zapamti adresu JSP straniceKorisnik može da zapamti adresu JSP straniceNedostaci sendRedirect– Korisnik može da poseti JSP stranici bez pristupanja p p p jservletu, pa JSP podaci mogu da budu nedostupni- U okviru JSP stranice trebalo bi detektovati ovu situaciju

© SI1P1 – 2004 103/15situaciju

Page 104: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Application-Based deljenje podataka

ServletServletsynchronized(this) {ValueObject value = new ValueObject(...);getServletContext().setAttribute("key", value);RequestDispatcher dispatcher

=request.getRequestDispatcherrequest.getRequestDispatcher("/WEB-INF/SomePage.jsp");dispatcher.forward(request, response); }

JSP 1.2<jsp:useBean id="key" type="somePackage.ValueObject"scope="application" />scope= application /><jsp:getProperty name="key" property="someProperty" />

JSP 2.0© SI1P1 – 2004 104/15${key.someProperty}

Page 105: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Relativni URL u okviru JSP stranice

Korist:Korist:– Prosleđivanje pomoću request dispatcher-a je transparentno klijentu. Originalni URL je jedini URL za koji čitač znakoji čitač zna.Kakve su posledice?– Šta će čitač uraditi sa sledećim tagovima:g

<IMG SRC="foo.gif" …><LINK REL=STYLESHEETHREF "JSP St l "HREF="JSP-Styles.css"TYPE="text/css"><A HREF="bar.jsp">…</A>ba jsp /

– Odgovor: čitač ih shvata kao relativne u odnosu na URL servleta Najjednostavnije rešenje:

© SI1P1 – 2004 105/15Najjednostavnije rešenje:– Koristiti URL koji počinju sa /

Page 106: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer Bank Account Balance

BeanBean– BankCustomerServlet koji popunjava bean i prosleđuje ga j p p j p j godgovarajućoj JSP stranici– Pročitati customer ID, pozvati kod za pristup podacima da bi se popunio BankCustomerda bi se popunio BankCustomer– U zavisnosti od trenutne vrednosti stanja (balance) računa pozvati odgovarajuću rezultujuću stranup g j jJSP stranice koje prikazuju rezultate– Negativno stanje: stranica sa upozorenjem– Regularno stanje: standardna stranica– Veoma pozitivno stanje: stranica koja sadrđi dodatne reklame

© SI1P1 – 2004 106/15reklame– Nepoznat customer ID: stranica sa porukom o grešci

Page 107: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer Bank Account Balance

public class ShowBalance extends HttpServlet {p p {public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {throws ServletException, IOException {BankCustomer customer

=BankCustomer.getCustomer(request.getParameter("id"));String address;g ;if (customer == null) {address ="/WEB-INF/bank-account/UnknownCustomer.jsp";} else if (customer.getBalance() < 0) {} else if (customer.getBalance() < 0) {address ="/WEB-INF/bank-account/NegativeBalance.jsp";request.setAttribute("badCustomer", customer);}}…RequestDispatcher dispatcher =

request.getRequestDispatcher(address);© SI1P1 – 2004 107/15

request.getRequestDispatcher(address);dispatcher.forward(request, response);

Page 108: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer Bank Account Balance negativan JSP 1.2 <BODY><TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS="TITLE">We Know Where You Live!</TABLE><P><IMG SRC="/bank-support/Club.gif" ALIGN="LEFT"><jsp:useBean id="badCustomer"t pe "co ese lets BankC stome "type="coreservlets.BankCustomer"scope="request" />Watch out,<jsp:getProperty name="badCustomer"<jsp:getProperty name= badCustomerproperty="firstName" />,we know where you live.<P>PPay us the $<jsp:getProperty name="badCustomer"property="balanceNoSign" />you owe us before it is too late!

© SI1P1 – 2004 108/15</BODY></HTML>

Page 109: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer Bank Account Balance negativan JSP 2.0

<BODY><BODY><TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS="TITLE">We Know Where You Live!</TABLE><P><IMG SRC="/bank-support/Club.gif" ALIGN="LEFT">Watch out,${b dC t fi tN }${badCustomer.firstName},we know where you live.<P><P>Pay us the $${badCustomer.balanceNoSign}you owe us before it is too late!

© SI1P1 – 2004 109/15

you owe us before it is too late!</BODY></HTML>

Page 110: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer Bank Account Balance

© SI1P1 – 2004 110/15

Page 111: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: RequestCiljCilj– Prikazati slučajan broj korisnikuTip deljenja podatakap j j p– Svaki zahtev dobija novi broj, tako da je odgovarajuće deljenje podataka na nivou zahteva (request based).

© SI1P1 – 2004 111/15

Page 112: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Request Beanpackage coreservlets;package coreservlets;public class NumberBean {private double num = 0;p ;public NumberBean(double number) {setNumber(number);}public double getNumber() {

t ( )return(num);}public void setNumber(double number) {public void setNumber(double number) {num = number;}

© SI1P1 – 2004 112/15

}}

Page 113: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Request JSP 1.2<BODY><BODY><jsp:useBean id="randomNum"type="coreservlets.NumberBean"ypscope="request" /><H2>Random Number:<jsp:getProperty name="randomNum"property="number" />

/H2</H2></BODY></HTML>

© SI1P1 – 2004 113/15

Page 114: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Request JSP 2.0…<BODY><H2>Random Number:${randomNum.number}</H2></BODY></HTML>

© SI1P1 – 2004 114/15

Page 115: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: SessionCiljCilj– Prikazati korisnikovo ime i prezime.– Ako nam korisnik ne definiše svoje ime, želimo da mu j ,prikažemo ime koje nam je prethodno definisao.– Ako nam korisnik ne definiše svoje ime i ne možemo da pronađemo nijedno prethodno definisano imeda pronađemo nijedno prethodno definisano ime, potrebno je prikazati upozorenje.Tip deljenja podatakap j j p– Podatak se smešta za svakog klijenta, tako da je deljenje podataka na nivou sesije (session-based) d j ćodgovarajuće.

© SI1P1 – 2004 115/15

Page 116: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Session Beanpackage coreservlets;package coreservlets;public class NameBean {private String firstName = "Missing first name";private String lastName = "Missing last name";public NameBean() {}public NameBean(String firstName String lastName) {public NameBean(String firstName, String lastName) {setFirstName(firstName);setLastName(lastName);}public String getFirstName() {return(firstName);return(firstName);}…

© SI1P1 – 2004 116/15}

Page 117: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Session – servletpublic class RegistrationServlet extends HttpServlet {public class RegistrationServlet extends HttpServlet {public void doGet(HttpServletRequest request,HttpServletResponse response)p p p )throws ServletException, IOException {HttpSession session = request.getSession();NameBean nameBean =(NameBean)session.getAttribute("nameBean");if ( B ll) {if (nameBean == null) {nameBean = new NameBean();session setAttribute("nameBean" nameBean);session.setAttribute( nameBean , nameBean);}

© SI1P1 – 2004 117/15

Page 118: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Session – servletString firstName =grequest.getParameter("firstName");if ((firstName != null) &&(!firstName.trim().equals(""))) {nameBean.setFirstName(firstName);}String lastName =eq est getPa amete ("lastName")request.getParameter("lastName");

if ((lastName != null) &&(!lastName.trim().equals(""))) {nameBean setLastName(lastName);nameBean.setLastName(lastName);}String address ="/WEB-INF/mvc-sharing/ShowName.jsp";/WEB INF/mvc sharing/ShowName.jsp ;RequestDispatcher dispatcher =request.getRequestDispatcher(address);dispatcher.forward(request, response);

© SI1P1 – 2004 118/15}}

Page 119: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Session – JSP 1.2<BODY><BODY><H1>Thanks for Registering</H1><jsp:useBean id="nameBean"j ptype="coreservlets.NameBean"scope="session" /><H2>First Name:<jsp:getProperty name="nameBean"

t "fi tN " / /H2property="firstName" /></H2><H2>Last Name:<jsp:getProperty name="nameBean"<jsp:getProperty name= nameBeanproperty="lastName" /></H2></BODY></HTML>

© SI1P1 – 2004 119/15

/BODY /HTML

Page 120: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Session – JSP 2.0<BODY><BODY><H1>Thanks for Registering</H1><H2>First Name:${nameBean.firstName}</H2><H2>Last Name:${nameBean.lastName}</H2></BODY></HTML>

© SI1P1 – 2004 120/15

Page 121: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Session – JSP 2.0

© SI1P1 – 2004 121/15

Page 122: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: ApplicationCiljCilj– Prikazati prost broj određene dužine.– Ako korisnik ne defniše željenu dužinu, trebalo bi j ,prikazati bilo koji prost broj koji se koristio za bilo kog korisnika.Tip deljenja podatakaTip deljenja podataka– Podatak se deli između više klijenata, tako da je deljenje podataka na nivou aplikacije (application-based) j j p p j ( pp )odgovarajuće.

© SI1P1 – 2004 122/15

Page 123: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Application - Beanimport java.math.BigInteger;import java.math.BigInteger;public class PrimeBean {private BigInteger prime;public PrimeBean(String lengthString) {int length = 150;try {try {length = Integer.parseInt(lengthString);} catch(NumberFormatException nfe) {}setPrime(Primes.nextPrime(Primes.random(length)));}public BigInteger getPrime() {public BigInteger getPrime() {return(prime);}…

© SI1P1 – 2004 123/15

}}

Page 124: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Application - Servletpublic class PrimeServlet extends HttpServlet {p p {public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {throws ServletException, IOException {String length = request.getParameter("primeLength");ServletContext context = getServletContext();synchronized(this) {synchronized(this) {if ((context.getAttribute("primeBean") == null) ||(length != null)) {PrimeBean primeBean = new PrimeBean(length);context setAttribute("primeBean" primeBean);context.setAttribute( primeBean , primeBean);}String address ="/WEB INF/mvc sharing/ShowPrime jsp";/WEB-INF/mvc-sharing/ShowPrime.jsp ;RequestDispatcher dispatcher =request.getRequestDispatcher(address);dispatcher forward(request response);

© SI1P1 – 2004 124/15dispatcher.forward(request, response);}}}

Page 125: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Application – JSP 1.2<BODY><BODY><H1>A Prime Number</H1><jsp:useBean id="primeBean“ j p p

type="coreservlets.PrimeBean“ scope="application" /><jsp:getProperty name="primeBean“ property="prime" /></BODY></HTML>

© SI1P1 – 2004 125/15

Page 126: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Deljenje podataka: Application – JSP 1.2<BODY><BODY><H1>A Prime Number</H1>${primeBean.prime}${p p }</BODY></HTML>

© SI1P1 – 2004 126/15

Page 127: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Prosleđivanje sa JSP stranice<% String destination;<% String destination;if (Math.random() > 0.5) {destination = "/examples/page1.jsp";/ p /p g j p ;} else {destination = "/examples/page2.jsp";}%>

j f d " % d ti ti % " /<jsp:forward page="<%= destination %>" />Dozvoljeno, ali loša ideja– Poslovna i kontrolna logika pripada servletima– Poslovna i kontrolna logika pripada servletima– Zadatak JSP stranice je prezentacija korisniku

© SI1P1 – 2004 127/15

Page 128: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Korišćenje includePomoću metoda forward objektaPomoću metoda forward objekta RequestDispatcher:– Kontrola se nepovratno predaje novoj stranici– Originalna stranica ne može generisati bilo kakav izlazPomoću metoda include objekta RequestDispatcher:RequestDispatcher:– Kontrola se trenutno predaje novoj stranici– Originalna stranica može generisati izlaz pre i posleOriginalna stranica može generisati izlaz pre i posle uključene stranice– Originalni servlet ne vidi izlaz uključene stranice– Korisno za portale: JSP prikazuje delove, ali se delovi uređuju različito za različite korisnike

© SI1P1 – 2004 128/15

Page 129: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Korišćenje includeresponse.setContentType("text/html");String firstTable, secondTable, thirdTable;if (someCondition) {firstTable = "/WEB-INF/Sports-Scores.jsp";secondTable = "/WEB-INF/Stock-Prices.jsp";thirdTable = "/WEB-INF/Weather.jsp";} else if (...) { ... }RequestDispatcher dispatcher =request.getRequestDispatcher("/WEB-INF/Header.jsp");dispatcher.include(request, response);dispatcher =request.getRequestDispatcher(firstTable);dispatcher.include(request, response);dispatcher =request.getRequestDispatcher(secondTable);dispatcher.include(request, response);dispatcher =

i h ( hi d bl )request.getRequestDispatcher(thirdTable);dispatcher.include(request, response);dispatcher =request.getRequestDispatcher("/WEB-INF/Footer.jsp");di h i l d ( )

© SI1P1 – 2004 129/15dispatcher.include(request, response);

Page 130: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Expression jezik (EL)

Zašto ga koristitiZašto ga koristitiOsnovna sintaksaRelacija između expression jezik iRelacija između expression jezik i MVC arhitektureReferenciranje smeštenihReferenciranje smeštenih promenljviihPristup bean property ijimaPristup bean property-ijima, elementima niza, elementima liste i Map ulazimaMap ulazimaUpotreba operatora expression jezika Uslovno izvršavanje izraza© SI1P1 – 2004 130/15Uslovno izvršavanje izraza

Page 131: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Nedostaci MVCGlavni nedostatak je u završnom koraku:Glavni nedostatak je u završnom koraku: prezentovanje rezultata u okviru JSP stranice.– Koriste se jsp:useBean i jsp:getProperty- Nespretno i preopširno- Ne može se pristupiti bean podproperty-ijima– JSP scripting elementi- Rezultat je kod koji se teško otežava

Umanjuje se uticaj MVC arhitekture- Umanjuje se uticaj MVC arhitekture.Cilj– Upotrebiti koncizniji pristupUpotrebiti koncizniji pristup– Omogućiti pristup bean podproperty-ijima– Jednostavnija sintaksa pristupa za Web developere

© SI1P1 – 2004 131/15

Page 132: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Upotreba ELAko se koristi MVC pristup u okviru servera kojiAko se koristi MVC pristup u okviru servera koji podržavaju JSP 2.0 sa trenutnom web.xml verzijom, potrebno je promeniti samo:

<jsp:useBean id="someName"type="somePackage.someClass"scope "request session or application"/>scope="request, session, or application"/><jsp:getProperty name="someName"property="someProperty"/>property= someProperty />

U sledeći kod:${someName.someProperty}${ p y}

© SI1P1 – 2004 132/15

Page 133: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Prednosti upotrebe ELKoncizniji pristup smeštenim objektima.Koncizniji pristup smeštenim objektima.– Da bi se pristupilo “smeštenim promenljivama” (objekti smešteni metodom setAttribute u okviru PageContext, HttpServletRequest, HttpSession, ili ServletContext), na primer nekoj promenljivojHttpSession, ili ServletContext), na primer nekoj promenljivoj saleItem, koristi se ${saleItem}.Skraćena notacija za bean property-ije.– Da bi se pristupilo companyName property-iju (n p rezultat– Da bi se pristupilo companyName property-iju (n.p., rezultat dobijen od metoda getCompanyName) smeštene promenljive pod imenom company, koristi se ${company.companyName}. Da bi se pristupilo property-iju firstName od property-ija president smeštenepristupilo property iju firstName od property ija president smeštene promenljive company, koristi se ${company.president.firstName}.Jednostavniji pristup collection elementima.– Pristup elementima niza (array) List ili Map koristi sePristup elementima niza (array), List, ili Map, koristi se ${variable[indexOrKey]}. Treba primetiti da je potrebno realizovati prikaz indeksa ili ključa u formi legalnoj za imena Java promenljivih.

© SI1P1 – 2004 133/15

Page 134: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Prednosti upotrebe ELJednostavan pristup parametrima zahteva, cookies, i drugih p p p , , gpodataka zahteva.– Da bise pristupilo standardnim tipovima podataka zahteva, moguće je koristiti jedan od nekoliko predefinisanih implicitnih bj k tobjekata.

Mali, ali koristan skup jednostavnih operatora.– Za rad sa objektima u okviru EL izraza, može se koristiti bilo koji od nekoliko a itetičkih elacionih logičkih ili empt testingod nekoliko aritetičkih, relacionih, logičkih, ili empty-testing operatora.Uslovni rezultati

Da bi se izabrao prikaz između nekolikoopcija nije potrebno– Da bi se izabrao prikaz između nekolikoopcija, nije potrebno koristiti Java skriplete.Moguće je koristiti ${test ? option1 : option2}.Automatska konverzija tipova.– EL uklanja potrebu za korišćenjem konverzije tipova i omogućavaEL uklanja potrebu za korišćenjem konverzije tipova i omogućava ovaj proces automatskim.Bez vrednosti, umesto greške.– U većini slučajeva nedefinisana promenljiva ili

© SI1P1 – 2004 134/15

U većini slučajeva, nedefinisana promenljiva ili NullPointerExceptions prikazaće se kao prazni stringovi, a neće se dogoditi izuzetak.

Page 135: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Aktiviranje ELMoguće je upotrebljavati samo u okviru serveraMoguće je upotrebljavati samo u okviru servera koji imaju podršku za JSP 2.0 (servlets 2.4)– Na primer Tomcat 5, a ne Tomcat 4

Z l k li t k tibil ih l d ti– Za celokupnu listu kompatibilnih servera, pogledati http://theserverside.com/reviews/matrix.tssPotrebno je koristiti JSP 2.0 web.xml filej

<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee"

l i "htt // 3 /2001/XMLS h i t "xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app 2 4.xsd"ttp //ja a su co / / s/j ee eb app_ _ sdversion="2.4">…

/ b© SI1P1 – 2004 135/15</web-app>

Page 136: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Osnove ELOsnovna forma: ${expression}Osnovna forma: ${expression}– Ovi EL elementi se mogu pojaviti kako u običnom HTML tekstu tako i u okviru JSP tag atributa, i omogućiti izvršavanje regularnih JSP izraza Na primer:izvršavanje regularnih JSP izraza. Na primer:<UL><LI>Name: ${expression1}{ p }<LI>Address: ${expression2}</UL><j i l d "${ i 3}" /><jsp:include page="${expression3}" />EL i tag atributi– Može se koristiti više izraza u okviru jednog atributa o e se o st t še a a u o u jed og at buta(moguće ih je kombinovati i sa statičkim tekstom), tako da se na kraju konvertuju u stringove i izvrši njihova konkatenacija. Na primer:

© SI1P1 – 2004 136/15

konkatenacija. Na primer:<jsp:include page="${expr1}blah${expr2}" />

Page 137: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

EL problemScenarioScenario– Koristi se ${something} u okviru JSP stranice– Postoji "${something}" u generisanom izlazuj ${ g} g– Nije promenjen web.xml file da referiše na verziju servleta 2.4– Prenese se Web aplikacija na server i restartuje se– I dalje postoji "${something}" u generisanom izlazuZašto?Zašto?– JSP stranica je prevedena u servlet- I to verziju servleta koji ignorišeELI to verziju servleta koji ignorišeELRešenje– Presnimiti JSP stranicu da izvrši update datuma

© SI1P1 – 2004 137/15promene

Page 138: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Sprečavanje izvršavanja EL izrazaŠta se dešava ako JSP stranica sadrži ${ ?Šta se dešava ako JSP stranica sadrži ${ ?Potrebno je deaktivirati EL u trenutnoj Web aplikaciji.– U okviru web.xml fajla referisati na servlet verziju 2.3 (JSP 1.2) ili raniju.Deaktivirati EL u više JSP stranicaDeaktivirati EL u više JSP stranica.– Koristiti jsp-property-group element u okviru web.xmlDeaktivirati EL u pojedinačnim JSP stranicamaDeaktivirati EL u pojedinačnim JSP stranicama.– Koristiti <%@ page isELIgnored="true" %>Deaktivirati pojedinačne EL elemente.p j– U okviru JSP 1.2 stranica (bez promena web.xml), moguće je zameniti $ sa &#36;, HTML karakterom za $.

k k d ž ${© SI1P1 – 2004 138/15– U okviru JSP 2.0 stranica koje sadrže i EL izraze i ${ moguće je koristiti \${ kada se želi generisati ${

Page 139: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Sprečavanje izvršavanja skripletaDa bi se sprečilo pisanje skripleta moguće jeDa bi se sprečilo pisanje skripleta moguće je koristiti scripting-invalid u okviru web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>b l "htt //j / l/ /j2 "<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"http://www.w3.org/2001/XMLSchema instancexsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"version="2.4"><jsp-property-group><url-pattern>* jsp</url-pattern><url pattern> .jsp</url pattern><scripting-invalid>true</scripting-invalid></jsp-property-group>

© SI1P1 – 2004 139/15</web-app>

Page 140: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Pristup smeštenim promenljivama${varName}${varName}– Rezultat je pretraga objekata tipa PageContext, HttpServletRequest, HttpSession, ServletContext, u navedenom redosledu i prikaz objekta koji sadrži navedeno ime– Upotreba PageContext ne odgovara MVC pristupu– Upotreba PageContext ne odgovara MVC pristupu.Ekvivalentne forme– ${name}${ }– <%= pageContext.findAttribute("name") %>– <jsp:useBean id="name“ type="somePackage.SomeClass"scope="..."><% name %>

© SI1P1 – 2004 140/15<%= name %>

Page 141: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primerpublic class ScopedVars extends HttpServlet {p p p {public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {request.setAttribute("attribute1", "First Value");HttpSession session = request.getSession();session.setAttribute("attribute2", "Second Value");Se letConte t application getSe letConte t()ServletContext application = getServletContext();application.setAttribute("attribute3",new java.util.Date());request setAttribute("repeated" "Request");request.setAttribute( repeated , Request );session.setAttribute("repeated", "Session");application.setAttribute("repeated", "ServletContext");RequestDispatcher dispatcher =RequestDispatcher dispatcher request.getRequestDispatcher("/el/scoped-vars.jsp");dispatcher.forward(request, response);}

© SI1P1 – 2004 141/15}

Page 142: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer<!DOCTYPE …><!DOCTYPE …>…<TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS "TITLE"><TR><TH CLASS="TITLE">Accessing Scoped Variables</TABLE><P><UL><LI><B>attribute1:</B> ${attribute1}<LI><B>attribute1:</B> ${attribute1}<LI><B>attribute2:</B> ${attribute2}<LI><B>attribute3:</B> ${attribute3}<LI><B>Source of "repeated" attribute:</B><LI><B>Source of "repeated" attribute:</B>${repeated}</UL>

© SI1P1 – 2004 142/15</BODY></HTML>

Page 143: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

© SI1P1 – 2004 143/15

Page 144: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Pristup bean property-ijima${varName propertyName}${varName.propertyName}– Značenje je pronaći smeštenu promenljivu sa datim imenom i prikazati vrednost navedenog bean property-ijaEkvivalentne forme

– ${customer.firstName}– <%@ page import="coreservlets.NameBean" %><% NameBean person =(NameBean)pageContext findAttribute("customer");(NameBean)pageContext.findAttribute( customer );%><%= person.getFirstName() %><% person.getFirstName() %>

© SI1P1 – 2004 144/15

Page 145: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Pristup bean property-ijimaEkvivalentne formeEkvivalentne forme

– ${customer.firstName}– <jsp:useBean id="customer"j ptype="coreservlets.NameBean"scope="request, session, or application" /><jsp:getProperty name="customer"property="firstName" />

O j i t j b lji k i t th dOvaj pristup je bolji nego skript na prethodnom slajdu.– Ali zahteva da se poznaje oblast važenjaAli zahteva da se poznaje oblast važenja– Ne radi za podproperty-ije.- Nije ne-Java ekvivalent

© SI1P1 – 2004 145/15${customer.address.zipCode}

Page 146: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primerpublic class BeanProperties extends HttpServlet {p p p {public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {throws ServletException, IOException {NameBean name = new NameBean("Marty", "Hall");CompanyBean company =new CompanyBean("coreservlets com"new CompanyBean( coreservlets.com ,"J2EE Training and Consulting");EmployeeBean employee =new EmployeeBean(name company);new EmployeeBean(name, company);request.setAttribute("employee", employee);RequestDispatcher dispatcher =request getRequestDispatcherrequest.getRequestDispatcher("/el/bean-properties.jsp");dispatcher.forward(request, response);}

© SI1P1 – 2004 146/15}}

Page 147: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primerpublic class EmployeeBean {public class EmployeeBean {private NameBean name;private CompanyBean company;

bli E l B (N B C B ) {public EmployeeBean(NameBean name, CompanyBean company) {setName(name);setCompany(company);}public NameBean getName() { return(name); }public void setName(NameBean newName) {public void setName(NameBean newName) {name = newName;}public CompanyBean getCompany() { return(company); }public CompanyBean getCompany() { return(company); }public void setCompany(CompanyBean newCompany) {company = newCompany;

© SI1P1 – 2004 147/15}}

Page 148: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primerpublic class NameBean {public class NameBean {private String firstName = "Missing first name";private String lastName = "Missing last name";

bli N B () {}public NameBean() {}public NameBean(String firstName, String lastName) {setFirstName(firstName);setLastName(lastName);}public String getFirstName() {public String getFirstName() {return(firstName);}public void setFirstName(String newFirstName) {public void setFirstName(String newFirstName) {firstName = newFirstName;}…

© SI1P1 – 2004 148/15}

Page 149: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primerpublic class CompanyBean {public class CompanyBean {private String companyName;private String business;

bli C B (St i N St i b i ) {public CompanyBean(String companyName, String business) {setCompanyName(companyName);setBusiness(business);}public String getCompanyName() { return(companyName); }public void setCompanyName(String newCompanyName) {public void setCompanyName(String newCompanyName) {companyName = newCompanyName;}public String getBusiness() { return(business); }public String getBusiness() { return(business); }public void setBusiness(String newBusiness) {business = newBusiness;

© SI1P1 – 2004 149/15}}

Page 150: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer<!DOCTYPE ><!DOCTYPE …>…<UL><LI><B>First Name:</B>${employee.name.firstName}<LI><B>Last Name:</B>${employee.name.lastName}

LI B C N /B<LI><B>Company Name:</B>${employee.company.companyName}<LI><B>Company Business:</B><LI><B>Company Business:</B>${employee.company.business}</UL>

© SI1P1 – 2004 150/15

/UL</BODY></HTML>

Page 151: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

© SI1P1 – 2004 151/15

Page 152: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

NotacijaEkvivalentne formeEkvivalentne forme

– ${name.property}– ${name["property"]}${ [ p p y ]}

Razlozi za korišćenje notacije nizova– Zbog pristupa nizovima, listama, i drugim klasama kolekcija– Da bi se dobilo ime property-ija u trenutku zahteva.• {name1[name2]} (nema navodnika oko name2)• {name1[name2]} (nema navodnika oko name2)– Da bi se koristila imena koja su zabranjena kao imena Java promenljivihp j• {foo["bar-baz"]}• {foo["bar.baz"]}

© SI1P1 – 2004 152/15

Page 153: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Pristup kolekcijama${attributeName[entryName]}${attributeName[entryName]}Može se upotrebiti kod– Nizova. Ekvivalentno sa• theArray[index]– Lista. Ekvivalentno sa• theList get(index)• theList.get(index)– Mapa. Ekvivalentno sa• theMap.get(keyName)Ekvivalentne forme (za HashMap)– ${stateCapitals["maryland"]}

${stateCapitals maryland}– ${stateCapitals.maryland}– Sledeći element je nelegalan, jer 2 nije legalno ime promenljive

© SI1P1 – 2004 153/15- ${listVar.2}

Page 154: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Pristup kolekcijamapublic class Collections extends HttpServlet {public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String[] firstNames = { "Bill" "Scott" "Larry" };String[] firstNames = { Bill , Scott , Larry };ArrayList lastNames = new ArrayList();lastNames.add("Ellison");lastNames.add("Gates");lastNames.add("McNealy");HashMap companyNames = new HashMap();companyNames.put("Ellison", "Sun");companyNames.put("Gates", "Oracle");companyNames.put( Gates , Oracle );companyNames.put("McNealy", "Microsoft");request.setAttribute("first", firstNames);request.setAttribute("last", lastNames);

t tAtt ib t (" " N )request.setAttribute("company", companyNames);RequestDispatcher dispatcher =request.getRequestDispatcher("/el/collections.jsp");dispatcher.forward(request, response);

© SI1P1 – 2004 154/15

p ( q , p );}}

Page 155: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer<!DOCTYPE ><!DOCTYPE …>…<BODY><TABLE BORDER=5 ALIGN="CENTER"><TR><TH CLASS="TITLE">Accessing CollectionsAccessing Collections</TABLE><P><UL><LI>${first[0]} ${last[0]} (${company["Ellison"]})<LI>${first[1]} ${last[1]} (${company["Gates"]})<LI>${first[1]} ${last[1]} (${company[ Gates ]})<LI>${first[2]} ${last[2]} (${company["McNealy"]})</UL>

© SI1P1 – 2004 155/15

/</BODY></HTML>

Page 156: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

© SI1P1 – 2004 156/15

Page 157: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Predefinisane promenljivepageContext. PageContext objekat.pageContext. PageContext objekat.– ${pageContext.session.id}param i paramValues. Parametri zahteva.

${ tID}– ${param.custID}header i headerValues. Hederi zahteva.–${header.Accept} ili ${header["Accept"]}– ${header["Accept-Encoding"]}cookie. Cookie objekat (a ne cookie vrednost).– ${cookie.userCookie.value} ili ${cookie["userCookie"].value}${cookie.userCookie.value} ili ${cookie[ userCookie ].value}initParam. Sadrži parametre inicijalizacije sadržaja.pageScope, requestScope, sessionScope,applicationScope.

Umesto pretrage oblasti važenja– Umesto pretrage oblasti važenja.Problem– Upotreba implicitnih objekata ne odgovara MVC modelu

© SI1P1 – 2004 157/15

Page 158: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Predefinisane promenljive primer<!DOCTYPE ><!DOCTYPE …>…<P><UL><LI><B>test Request Parameter:</B>${param test}${param.test}<LI><B>User-Agent Header:</B>${header["User-Agent"]}<LI><B>JSESSIONID Cookie Value:</B>${cookie.JSESSIONID.value}<LI><B>Server:</B><LI><B>Server:</B>${pageContext.servletContext.serverInfo}</UL>

© SI1P1 – 2004 158/15

/</BODY></HTML>

Page 159: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Predefinisane promenljive primer

© SI1P1 – 2004 159/15

Page 160: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

EL operatoriAritmetičkiAritmetički– + - * / div % modRelacioni– == eq != ne < lt > gt <= le >= geLogički– && and || or ! NotBez vrednosti

B d ti– Bez vrednosti– True za null, prazan string, prazan niz, prazna lista, prazna map.prazna map. Upozorenje– Koristiti veoma retko da bi se zaštitio MVC model

© SI1P1 – 2004 160/15

Page 161: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer<TABLE BORDER=1 ALIGN="CENTER"><TABLE BORDER 1 ALIGN CENTER ><TR><TH CLASS="COLORED" COLSPAN=2>Arithmetic Operators<TH CLASS="COLORED" COLSPAN=2>Relational Operators<TR><TH>E i <TH>R lt<TH>E i <TH>R lt<TR><TH>Expression<TH>Result<TH>Expression<TH>Result<TR ALIGN="CENTER"><TD>\${3+2-1}<TD>${3+2-1}<TD>\${1&lt;2}<TD>${1<2}<TR ALIGN="CENTER"><TD>\${"1"+2}<TD>${"1"+2}<TD>\${ 1 +2}<TD>${ 1 +2}<TD>\${"a"&lt;"b"}<TD>${"a"<"b"}<TR ALIGN="CENTER"><TD>\${1 + 2*3 + 3/4}<TD>${1 + 2*3 + 3/4}<TD>\${1 + 2*3 + 3/4}<TD>${1 + 2*3 + 3/4}<TD>\${2/3 &gt;= 3/2}<TD>${2/3 >= 3/2}<TR ALIGN="CENTER">

© SI1P1 – 2004 161/15<TD>\${3%2}<TD>${3%2}<TD>\${3/4 == 0.75}<TD>${3/4 == 0.75}

Page 162: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

© SI1P1 – 2004 162/15

Page 163: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Uslovno izvršavanje${ test ? expression1 : expression2 }${ test ? expression1 : expression2 }–Izvršava se Evaluates test i prikazuje se ili expression1 ili expression2Problems– Relativno slabo

ć• Upotreba c:if i c:choose pomoću JSTL (The JavaServer Pages Standard Tag Library )– Dozvoljava rad sa poslovnom/procesnom logikom uDozvoljava rad sa poslovnom/procesnom logikom u okviru JSP strana.– Trebalo bi da se koristi samo za presentacionu logiku.- I u tim slučajevima postoje alternative

© SI1P1 – 2004 163/15

Page 164: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primerpublic class Conditionals extends HttpServlet {public class Conditionals extends HttpServlet {public void doGet(HttpServletRequest request,HttpServletResponse response)th S l tE ti IOE ti {throws ServletException, IOException {SalesBean apples =new SalesBean(150.25, -75.25, 22.25, -33.57);SalesBean oranges =new SalesBean(-220.25, -49.57, 138.25, 12.25);request.setAttribute("apples", apples);request.setAttribute( apples , apples);request.setAttribute("oranges", oranges);RequestDispatcher dispatcher =request getRequestDispatcherrequest.getRequestDispatcher("/el/conditionals.jsp");dispatcher.forward(request, response);

© SI1P1 – 2004 164/15}}

Page 165: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primerpublic class SalesBean {public class SalesBean {private double q1, q2, q3, q4;public SalesBean(double q1Sales,d bl 2S ldouble q2Sales,double q3Sales,double q4Sales) {q1 = q1Sales; q2 = q2Sales;q3 = q3Sales; q4 = q4Sales;}}public double getQ1() { return(q1); }public double getQ2() { return(q2); }public double getQ3() { return(q3); }public double getQ3() { return(q3); }public double getQ4() { return(q4); }public double getTotal() {

© SI1P1 – 2004 165/15return(q1 + q2 + q3 + q4); }}

Page 166: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer

© SI1P1 – 2004 166/15

Page 167: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Primer…<TABLE BORDER=1 ALIGN="CENTER"><TR><TH><TH CLASS="COLORED">Apples<TH CLASS="COLORED">Oranges<TH CLASS= COLORED >Oranges<TR><TH CLASS="COLORED">First Quarter<TD ALIGN="RIGHT">${apples.q1}<TD ALIGN="RIGHT">${oranges.q1}<TR><TH CLASS="COLORED">Second Quarter<TD ALIGN="RIGHT">${apples.q2}<TD ALIGN="RIGHT">${oranges.q2}……<TR><TH CLASS="COLORED">Total<TD ALIGN="RIGHT"BGCOLOR="${(apples.total < 0) ? "RED" : "WHITE" }">${ l t t l}${apples.total}<TD ALIGN="RIGHT"BGCOLOR="${(oranges.total < 0) ? "RED" : "WHITE" }">${oranges.total}

© SI1P1 – 2004 167/15

${ g }</TABLE>…

Page 168: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

The JSP Standard Tag Library (JSTL)

Primeri JSTL dokumentacije i kodaPrimeri JSTL dokumentacije i kodaJSTL Expression LanguageTagovi za realizaciju petljiTagovi za realizaciju petlji– Petlje sa tačno određenim brojem iteracijaiteracija– Petlje na osnovu strukture podataka

šTagovi za uslovno izvršavanje– Jedan izbor– Više izboraTagovi za pristup nazi podataka

© SI1P1 – 2004 168/15

g p p pDrugi tagovi

Page 169: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

The JSP Standard Tag Library (JSTL)JSTL je baziran na Struts tagovima za kontroluJSTL je baziran na Struts tagovima za kontrolu petlji i logičke operacijeJSTL nije bio deo JSP 1.2 ili 2.0 specifikacije– Zahtevao je posebnu specifikaciju i podešavanje– Moguće samo na serverima koji podržavaju servlets 2 3 i JSP 1 2 ili više verzije2.3 i JSP 1.2 ili više verzijeJSTL expression language je sada deo JSP 2.0JSTL specifikacija se nalazi naJSTL specifikacija se nalazi nahttp://jcp.org/aboutJava/communityprocess/final/jsr052/

© SI1P1 – 2004 169/15

Page 170: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju petljiPetlje sa eksplicitnim numeričkim vrednostimaPetlje sa eksplicitnim numeričkim vrednostima

<c:forEach var="name" begin="x" end="y" step="z"> Blah, blah <c:out value="${name}"/>

</c:forEach>Petlje koje koriste strukture podataka

ć– Moguće je kretati se po nizovima, stringovima, kolekcijama, mapama

<c:forEach var="name“ items=“niz-kolekcija"> Blah blah<c:forEach var= name items= niz kolekcija > Blah, blah <c:out value="${name}"/>

</c:forEach>Petlje kojekoriste stringove sa delimiterima– forTokens

© SI1P1 – 2004 170/15

Page 171: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju petljiJSP bez JSTLJSP bez JSTL

<UL><%f (i t i 0 i< l th i++) { St i [i]for(int i=0; i<messages.length; i++) { String message = messages[i];%><LI><%= message %><% } %></UL>

JSP sa JSTLJSP sa JSTL<UL><c:forEach var="message" items="${messages}"><LI><c:out value "${message}"/><LI><c:out value="${message}"/></c:forEach></UL>

© SI1P1 – 2004 171/15

Page 172: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju petlji<%@ taglib prefix="c"uri="http://java sun com/jstl/core"<%@ taglib prefix= c uri= http://java.sun.com/jstl/core

%><UL><c:forEach var="i" begin="1" end="10"><LI><c:out value="${i}"/></c:forEach></UL>

© SI1P1 – 2004 172/15

Page 173: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju petlji<%@ taglib prefix="c“ uri="http://java sun com/jstl/core"<%@ taglib prefix= c uri= http://java.sun.com/jstl/core

%><UL><c:forEach var="seconds" begin="0"end="${pageContext.session.maxInactiveInterval}"step="100"><LI><c:out value="${seconds}"/> seconds.</c:forEach></c:forEach><LI>Timeout exceeded.</UL></UL>

© SI1P1 – 2004 173/15

Page 174: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju petlji<% String[] words = { "foo", "bar", "baz"};g[] { , , };pageContext.setAttribute("words", words); %><%@ taglib prefix="c"uri="http://java.sun.com/jstl/core" %><H2>Key Words:</H2><UL><c:forEach var="word"items "${ o ds}">items="${words}"><LI><c:out value="${word}"/></c:forEach></UL></UL><H2>Values of the test Parameter:</H2><UL><c:forEach var="val"c:forEach var valitems="${paramValues.test}"><LI><c:out value="${val}"/></c:forEach>

© SI1P1 – 2004 174/15</UL>

Page 175: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju petlji<%@ taglib prefix="c"<%@ taglib prefix= curi="http://java.sun.com/jstl/core" %><UL><c:forEach var="country"items="Australia,Canada,Japan,Philippines,USA"><LI><c:out value="${country}"/></c:forEach>

/UL</UL>

© SI1P1 – 2004 175/15

Page 176: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju petlji<%@ taglib prefix="c"<%@ taglib prefix= curi="http://java.sun.com/jstl/core" %><UL><c:forTokens var="color"items="(red (orange) yellow)(green)((blue) violet)"delims="()"><LI><c:out value="${color}"/>

/ f T k</c:forTokens></UL>

© SI1P1 – 2004 176/15

Page 177: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju uslovaJedan izbor: ifJedan izbor: if<c:if test="${someTest}">

Sadrzajj</c:if>Više izbora: choose

<c:choose><c:when test="test1"> Sadrzaj1</c:when>

h t t "t t2" S d j2 / h<c:when test="test2"> Sadrzaj2</c:when>...<c:when test="testN"> SadrzajN</c:when><c:when test= testN > SadrzajN</c:when><c:otherwise>Default Sadrzaj </c:otherwise></c:choose>

© SI1P1 – 2004 177/15

/c:chooseNapomena: realizacija poslovne logike!

Page 178: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju uslova<%@ taglib prefix="c"<%@ taglib prefix= curi="http://java.sun.com/jstl/core" %><UL><c:forEach var="i" begin="1" end="10"><LI><c:out value="${i}"/><c:if test="${i > 7}">(greater than 7)

/ if</c:if></c:forEach></UL></UL>

© SI1P1 – 2004 178/15

Page 179: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za realizaciju uslova<%@ taglib prefix="c"uri="http://java.sun.com/jstl/core" %>g p p //j /j /<UL><c:forEach var="i" begin="1" end="10"><LI><c:out value="${i}"/><c:choose><c:when test="${i < 4}">(small)</c hen></c:when><c:when test="${i < 8}">(medium)</c:when></c:when><c:otherwise>(large)</c:otherwise>/c:otherwise</c:choose></c:forEach></UL>

© SI1P1 – 2004 179/15

Page 180: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za pristup bazama podataka<sql:setDataSource><sql:setDataSource>– Specificira se izvor podataka (može se podesiti i pomoću konfiguracionih podešavanja)< l ><sql:query>– Upiti nad bazom podataka i smeštanje ResultSet u okviru promenljivep j– Upozorenje: ovo je suprotno ideji da se poslovna logika odvoji od prezentacione. Bolje je pristupati bazama u okviru servleta i proslediti rezultate u JSP.bazama u okviru servleta i proslediti rezultate u JSP.<sql:update><sql:param><sql:dateParam><sql:transaction>– Izvršava odgovarajuće <sql:query> i <sql:update>

© SI1P1 – 2004 180/15Izvršava odgovarajuće <sql:query> i <sql:update>

akcije kao pojedinačnu transakciju

Page 181: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Tagovi za pristup bazama podataka<%@ taglib prefix="c“ uri="http://java.sun.com/jstl/core"<%@ taglib prefix c uri http://java.sun.com/jstl/core

%><%@ taglib prefix="sql“ uri="http://java.sun.com/jstl/sql"

%>%><sql:setDataSource driver="sun.jdbc.odbc.JdbcOdbcDriver"

url="jdbc:odbc:Northwind“ user="“ password=""/><sql:query var="employees"> SELECT * FROM employees</sql:query><UL><UL><c:forEach var="row" items="${employees.rows}"><LI><c:out value="${row.firstname}"/><c:out value="${row.lastname}"/></c:forEach></UL>

© SI1P1 – 2004 181/15</UL>

Page 182: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Preostali tagovi<c:import><c:import>– Čita se sadržaj sa odgovarajućeg URLa• Ubacuje se u stranicuj• Smešta u promenljivu• ili se omogućava pristup preko čitača– Za razliku od <jsp:include>, ne važi samo za sopstveni sistem<c:redirect><c:redirect>– Redirekcija ka specificiranom URLu<c:param><c:param>– Dodaju se parametri zahteva u URL

© SI1P1 – 2004 182/15

Page 183: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Preostali tagovi<fmt:formatNumber><fmt:formatNumber>– Formatiraju se numeričke vrednosti kao broj, iznos u valuti, ili procenat, u lokalnom formatu<fmt:parseNumber>– Čitaju se string prezentacije broja, iznosa u valuti, ili procentaprocenta<fmt:formatDate><fmt:parseDate><fmt:parseDate><fmt:timeZone><fmt:setTimeZone>

© SI1P1 – 2004 183/15

Page 184: Java Server Pages - rti.etf.bg.ac.rsrti.etf.bg.ac.rs/rti/ir4pia/materijali/predavanja/PIA_Lekcija3_JSP.pdf · Java Server Pages ©SI1P1– 2004 1/15. Servlet tehnologija ... Servlet/JSP

Preostali tagovi – rad sa XMLomOsnovniOsnovni– <x:parse>XPath– <x:if>– <x:choose>– <x:when>– <x:otherwise>

f E h– <x:forEach>XSLT– <x:transform>– <x:transform>– <x:param>

© SI1P1 – 2004 184/15