You are on page 1of 35

Programowanie w Sieci

Internet
dr Piotr Kalita
kalita@ii.uj.edu.pl
semestr zimowy 2012/1
!yk"ad 1

"iteratura
Przyk!ad z #i#liotek$ znacznik%w poc&odzi z ksi$'ki(
S.).*lson+ ,ja- on .a/a+ 0elion 2001
2. 3am#on+ 4eginning
.SP+ .S5 amd 6omcat
e# )e/elopment+
,P78SS 2001

8" przyk!ady wyra'e9
:;<irst.second.t&ird= jest r%wnowa'ne >
?@<irst.getSecondAB.get6&irdAB?C+

8" o#iekty niejawne
:;paramDEnazwaEF= :;reGuestScope.nazwa=
7%wnowa'ne+ ale w podejHciu IE wewn$trz IE mo'na u'yJ
sym#oli . K . PodejHcie z . zinterpretuje te sym#ole.

.S6" K pierwszy przyk!ad
Lstwaienie atry#utu sesji K ma!o eleganckie AskryptletB

Lstawienie atry#utu sesji II

4i#lioteki .S6"
>?@tagli# pre<i-@McM uri@M&ttp(//ja/a.sun.com/jsp/jstl/coreM?C
>?@tagli# pre<i-@M<mtM uri@M&ttp(//ja/a.sun.com/jsp/jstl/<mtM?C
>?@tagli# pre<i-@M<nM uri@M&ttp(//ja/a.sun.com/jsp/jstl/<unctionsM?C
>?@tagli# pre<i-@MsGlM uri@M&ttp(//ja/a.sun.com/jsp/jstl/sGlM?C
>?@tagli# pre<i-@M-M uri@M&ttp(//ja/a.sun.com/jsp/jstl/-mlM?C

.S6" N znaczniki

Paramtery '$dania K #ez
.S6"

Parametry '$dania N .S6"
<c:out value="${k}"/> - konwersja encji

.S6" K i<
Oie ma
else.
<or8ac& Ajak nazwa
wskazujeB s!u'y do
iteracji po ta#elac& i
listac&+ ale mo'na
te' zro#iJ zwyk!$
pPtlP I<orE

.S6" K w&en i c&oose
ewn$trz c&oose mog$ znajdowaJ siP
tylko w&en i ot&erwise.

Internacjonalizacja K klasa
#undle

Internacjonalizacja N jsp

!asne #i#lioteki znacznik%w
>?@ AintBQat&.randomABR100 ?C
poprzez
>my"i#(randomSalue/C
T&cemy zro#iJ nasz$ w!asn$ <unkcjonalnoHJ
przez znacznik np. tak$(
3nacznik ma dostPp do standardowyc&
o#iekt%w takic& jak reGuest+ response+
session+ out U.
V rzeczy(
N
plik tld+
N
klasa+
N
wpis w we#.-ml
A.SP > 2.0B+
N
i strona jsp na
kt%rej tego
u'ywamy.

Klasa o#s!uguj$ca znacznik
Klasa mo'e #yJ w
84NIO5/classes
lu# w jarze w
84NIO5/li#

Przetwarzanie taga

)e<inicja znacznika Aplik tldB
84NIO5 lu# dowolnym pod<olderze 84NIO5 lu#
w dowolnym jarze w /84NIO5/li# w <olderze Q86,N
IO5 tego jara Ato ostatnie jest pre<erowaneB

Korzystamy ze znacznika na
stronie

Podsumowanie

4ardziej zaawansowany
przyk!ad AjsB

4ardziej zaawansowany
przyk!ad Aczytacz jsB

6ag 0andler

Plik tld
,try#uty
taga s$
wstawione
setterami
do
0andlera

Strona jsp

Serwlet o#s!uguj$cy '$danie
,.,W

zorzec Siew 0elper
&ttp(//ja/a.sun.com/#lueprints/corej2eepatterns/Pa
tterns/Siew0elper.&tml
0elpery to o#iekty Amog$ #yJ #eany czyli atry#uty '$daniaB+
kt%re tymczasowo przec&owuj$ dane do pokazania na
widoku.

QST z Siew0elperem
Kontroler AserwletB odpyta aplikacjP i stworzy atry#ut
'$dania Ato #Pdzie nasz 0elperB+ kt%ry zostanie
przekazany stronie jsp. 0elper zawiera dane
dostosowane do zaprezentowania na stronie Anp.
pozycje 10N20 z listyB. idok zostanie wygenerowany na
podstawie danyc& z &eplera.

,ntywzorce i zalecenia .SP
Ignoring Reality
Too uc! "o#e
$%&e##e# 'avigational In(or%ation
"o)y an# *aste +,*
Too uc! -ata in ,ession
.# /i& Tag/i&s

Ignoring reality
Strona .SP nie ma zde<iniowanej strony #!Pdu.
przegl$darce widzimy Hlad stosu. yj$tek nie musi
wyst$piJ w kodzie na stronie ale np. w #i#liotece
znacznik%w.

6oo muc& code
Kod .SP jest trudno de#ugowaJ. Poza tym #!$d
kompilacji nie pojawi siP w trakcie kompilacji tylko
wykonania. Ponadto <unkcjonalnoHJ na stronie .SP jest
niemo'liwa do ponownego wykorzystania.
miarP mo'liwoHci w plikac& .SP kodu nie powinno
#yJ. Oale'y wykorzystaJ QST+ #eany+ e-pression
language+ <iltry.

8m#edded Oa/igational
In<ormation
4roken "inks aiting to 0appen
In<ormacja nawigacyjna nie powinna znajdowaJ siP
w kodzie a ju' na pewno nie mo'e #yJ porozrzucana
po kodzie.
Qo'e #yJ w jednej klasie+ w pliku .properties+ w pliku
tekstowym+ w we#.-ml.

Topy and Paste .SP
Stosujemy include.

6oo Quc& )ata in Session
Sesja to nie Iglo#alna przestrze9 nazwE do kt%rej mo'na
zawsze coH dodaJ. PrPdzej czy p%Xniej spr%#ujemy
dodaJ dwa atry#uty pod tym samym kluczem. Oie
panujemy nad kluczami. ,plikacja jest niewydajna.
PowionniHmy do#rze zaplanowaJ+ co powinno #yJ
pamiPtane w sesji i stworzyJ odpowiednie klasy
#ean%w/atry#ut%w sesji oraz okreHliJ dla nic& klucze.

,d "i# 6agli#s
4i#lioteki znacznik%w s$ czPHci$ widoku w modelu
QST i nie powinna tam siP znajdowaJ 'adna logika
aplikacji. Op. komunikowanie siP z #az$ danyc& w
znaczniku jest niedopuszczalne. ykorzystajmy
0elperY
3darza siP 'e mamy jeden znacznik+ za kt%rym stoi
#ardzo du'o kodu. 6aki kod jest trudny w
utrzymaniu. 6*+ co ro#i znacznik powinno #yJ
do#rze zde<iniowane i stosunkowo niewielkie.

You might also like