home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 January / PCWorld_2004-01_cd.bin / Novinky / Interval / clanek07.htm < prev    next >
Encoding:
Extensible Markup Language  |  2003-12-04  |  17.9 KB  |  205 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='0' />
  10. <meta name='robots' content='index, follow' />
  11. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  12. <meta name='keywords' content='Interval' />
  13. <meta http-equiv='imagetoolbar' content='no' />
  14. <meta http-equiv='MSThemeCompatible' content='no' />
  15. <meta name='MSSmartTagsPreventParsing' content='true' />
  16. <title>Interval.cz - denn∞ o tvorb∞ webu a e-komerci</title>
  17. <style media='all' type='text/css'>
  18. @import '__services/styles/interval_articles.css';
  19. </style>
  20. </head>
  21. <body class='interval interval-articles'>
  22. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  23. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://diskuse.interval.cz'>Diskusnφ f≤rum</a></li><li class='right'><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  24. <div id='page-body'><div id='page-left'><div id='article'>
  25.  
  26.  
  27.  
  28. <h2>Java Servlets - interakcia a zdie╛anie objektov a zdrojov</h2>
  29. <p id='prepend'>Vo vΣΦÜine prφkladov, ktorΘ nßjdete na webe, sa pou₧φvaj· samostatnΘ servlety, respektφve JSP. Aj v naÜom serißly o servletoch sme Φasto vyu₧φvali stand-alone servlety. V skutoΦnom svete vÜak servlety nem⌠₧u by¥ iba samostatnΘ programy, mali by vytvßra¥ prepojenΘ skupiny, ktorΘ s· iba Φas¥ou webovskej aplikßcie. Komponenty takejto aplikßcie potom m⌠₧u tvori¥ skupiny servletov, zdie╛anΘ objekty, HTML, JSP strßnky a podobne.</p>
  30.  
  31.  
  32. <p>Z toho samozrejme vypl²va, ₧e prvky aplikßcie (konkrΘtne servlety) potrebuj· nejak² systΘm a prostriedky na vzßjomn· komunikßciu a interakciu bu∩ navzßjom medzi sebou alebo s ostatn²mi zdrojmi web aplikßcie. T²mto prostriedkom je Φasto <em>ServletContext</em> object.</p>
  33. <p>V nasleduj·cich riadkoch sa budeme zaobera¥ viacer²mi technikami vzßjomnej komunikßcie a interakcie medzi servletmi, respektφve medzi servletmi a in²mi zdrojmi. Budeme si hovori¥ o t²chto typoch technφk:</p>
  34.  
  35. <div class='list'>
  36. <ol>
  37. <li><strong>Servlet collaboration</strong> - s· dve zßkladnΘ techniky vzßjomnej spoluprßce, a to servlet filtering a servlet chaining. V tomto prφpade viacero servletov spolupracuje na vytvßranφ vlastnej odpovede klientovi. V skutoΦnosti vÜak servlety nespolupracuj· priamo, ale za ich prepojenie je zodpovedn² servlet kontajner. O jednej z technφk sme u₧ hovorili v Φlßnku <a href='http://interval.cz/clanek.asp?article=2571' title='Branick², Marek: Java Servlets - servlet filtering'>Java Servlets - servlet filtering</a>.</li>
  38. <li><strong>Response redirection</strong> - alebo presmerovanie odpovede na in² aplikaΦn² zdroj, Φo m⌠₧e by¥ tie₧ servlet, HTML alebo JSP strßnka.</li>
  39. <li><strong>Request dispatching</strong> - prostrednφctvom tejto techniky m⌠₧eme preda¥ po₧iadavku na ∩alÜφ servlet, ktor² sa postarß o vytvorenie odpovede. A zßrove≥ m⌠₧eme priamo zφska¥ odpove∩ inΘho servletu a zahrn·¥ ju do naÜej.</li>
  40. <li><strong>Vyu₧itie extern²ch zdrojov</strong> - s ktor²mi m⌠₧eme pracova¥ cez u₧ spomφnan² objekt <em>ServletContext</em> a pristupova¥ k nim cez met≤du <kbd>getResource()</kbd>.</li> 
  41. <li><strong>Zdie╛anie objektov</strong> - resp. atrib·tov, ktorΘ m⌠₧e by¥ na troch ·rovniach. Na ·rovni aplikßcie s· dostupnΘ cez <em>ServletContext</em>. ╧alÜia ·rove≥ predstavuje aktußlne sedenie (session) prφstupnΘ cez <em>HttpSession</em> objekt a nakoniec s· to objekty spojenΘ s aktußlnou po₧iadavkou dostupnΘ cez <em>HttpServletRequest</em>.</li>
  42. </ol>
  43. </div>
  44.  
  45. <h3>Servlet collaboration - filtering a chaining</h3>
  46. <p>Ako som u₧ spomenul o nieΦo vyÜÜie, o technike filtrovania request a response objektov sme u₧ hovorili, preto sa tomu u₧ nemusφm podrobnejÜie venova¥. V Φlßnku iÜlo o vyu₧itie Üpecißlnej komponenty odvodenenej z triedy <em>javax.servlet.Filter</em>, ktorß bola asociovanß s jedn²m alebo s viacer²mi servletmi. Na niektor²ch aplikaΦn²ch serveroch, naprφklad na IBM WebSphere Application Server, je mo₧nΘ vytvori¥ trochu in² sp⌠sob filtrovania ako u₧ poznßme. KonkrΘtne m⌠₧eme vyu₧i¥ tzv. MIME filtrovanie. Ako vypl²va z nßzvu, ide o filtrovanie, ktorΘ sa t²ka pou₧φvania MIME typov. Pre lepÜiu predstavu si dobre prezrite tento obrßzok:</p>
  47.  
  48. <div class='image'><img src='podklady/branicky/680/filter.png' alt='Servlet MIME filtering' title='Servlet MIME filtering' /></div>
  49.  
  50. <h4>Servlet MIME filtering</h4>
  51. <p>V tomto type filtrovania prv² servlet v poradφ spracuje po₧iadavku a vytvorφ odpove∩ v u₧φvate╛sky definovanom MIME type. Tento typ je asociovan² s druh²m servletom v poradφ. V tom prφpade je v²stup prvΘho pou₧it² ako vstup druhΘho. Takto je mo₧nΘ priradi¥ r⌠zne MIME typy na spracovanie r⌠znym servletom. V prφpade, ₧e definovan² typ nie je podporovan² browserom, m⌠₧e sa odpove∩ presmerova¥ na servlet, ktor² vrßti odpove∩ v text/html tvare. Tento sp⌠sob filtrovania sa m⌠₧e vyu₧i¥ naprφklad pri konverzii z XML do HTML, i ke∩ na tento ·Φel dnes existuj· ove╛a sofistikovanejÜie nßstroje.</p>
  52. <p>Bolo by dobrΘ ukßza¥, ako sa druh² servlet v poradφ vlastne dostane k v²stupu prvΘho servletu. Celkom jednoducho cez objekt request. Uvediem ukß₧ku (Servlet1.java):</p>
  53.  
  54. <div class='sample'>
  55. response.setContentType("text/xml");
  56. <br />PrintWriter out = response.getWriter();
  57. <br />out.println("<name>First_Servlet</name>");
  58. </div>
  59.  
  60. <p>Pre tento MIME typ je na servery zaregistrovan² konkrΘtny servlet, ktorΘmu je predanΘ ∩alÜie riadenie (Servlet2.java):</p>
  61.  
  62. <div class='sample'>
  63. response.setContentType("text/html");
  64. <br />PrintWriter out = response.getWriter();
  65. <br />BufferedReader in = request.getReader();
  66. <br />String line;
  67. <br />while((line = in.readLine()) != null)
  68. <br />  out.println(line);
  69. <br />out.println("Second_Servlet");
  70. </div>
  71.  
  72. <p>Toto je len nahrubo naΦrtnut² sp⌠sob, ako zφskate v²stup z prvΘho servletu. ╚o s nφm konkrΘtne vykonßte, u₧ zßle₧φ na vßs.</p>
  73.  
  74. <h4>Servlet chaining (re¥azenie)</h4>
  75. <p>V systΘme re¥azenia je pre jeden HTTP request zavolan²ch postupne viacero servletov, priΦom ka₧d² z nich vytvorφ svoju Φas¥ odpovede nezßvisle od ostatn²ch, ale v definovanom poradφ. Server WebSphere poskytuje vlastn· triedu <em>com.ibm.websphere.servlet.filter.ChainerServlet</em>, Φo je vlastne Üpecißlny servlet, ktor² si m⌠₧ete zaregistrova¥ pod vlastn²m aliasom. Originßlny request je smerovan² na tento servlet a ten sa potom postarß o postupnΘ volanie jednotliv²ch servletov (Servlet1, Servlet 2...). V²slednß odpove∩, zlo₧enß z jednotliv²ch Φiastkov²ch odpovedφ, je poslanß klientovi.</p>
  76.  
  77. <div class='image'><img src='podklady/branicky/680/chain.png' alt='Servlet chaining' title='Servlet chaining' /></div>
  78.  
  79. <p>Servlet filtering a chaining umo₧≥uje webdeveloperom vytvßra¥ modulßrne systΘmy. Jednou z mo₧nostφ vyu₧itia v s·vislosti s XML je, ₧e jeden servlet m⌠₧e vytvori¥ alebo zφska¥ po₧adovanΘ XML dßta a druh² mo₧e na tieto dßta aplikova¥ konkrΘtne XSL a v²sledok posla¥ klientovi. Znova vÜak opakujem, ₧e opφsan² sp⌠sob je vlastnos¥ou WebSphere Servera, Φo na druhej strane v⌠bec nevyluΦuje, aby ste boli s touto mo₧nos¥ou oboznßmenφ.</p>
  80.  
  81. <h3>Response redirection - presmerovanie odpovede</h3>
  82. <p>Ako som spomenul vyÜÜie, odpove∩ m⌠₧eme presmerova¥ na in² aplikaΦn² zdroj, Φo m⌠₧e by¥ servlet, HTML alebo JSP strßnka. Tento zdroj, respektφve jeho URL, musφ by¥ pre servlet dostupn². Existuj· dve formy presmerovania:</p>
  83.  
  84. <div class='list'>
  85. <ol>
  86. <li><strong>ètandardnΘ presmerovanie</strong> - s vyu₧itφm <kbd>response.sendRedirect("login.jsp")</kbd> sp⌠sobφ, ₧e servlet "vrßti" ako odpove∩ JSP strßnku. Ak by to bol in² servlet, tento by nemal prφstup k originßlnemu <em>request</em> objektu, ale ako odpove∩ klientovi by bola vrßtenß odpove∩ druhΘho servletu. Ak potrebujete ma¥ prφstup k p⌠vodnΘmu requestu, musφte pou₧i¥ techniku servlet dispatchingu, o ktorej budeme hovori¥ v bud·cej Φasti.</li>
  87. <li><strong>Presmerovanie na error strßnku</strong> - v tomto prφpade je klientovi poslan² konkrΘtny status k≤d ako parameter met≤dy <kbd>response.sendError(response.CODE)</kbd>. KonkrΘtne k≤dy s· preddefinovanΘ konÜtanty objektu <em>response</em>. Ni₧Üie uvßdzam preh╛ad niektor²ch znßmych chybov²ch k≤dov.</li>
  88. </ol>
  89. </div>
  90.  
  91. <div class='table'>
  92. <table cellspacing='0'>
  93. <tr><th>konÜtanta</th><th>popis</th></tr>
  94. <tr><td><em>SC_CONTINUE</em></td><td><strong>100</strong> - indikuje, ₧e servlet obdr₧al ·vodn· Φas¥ po₧iadavky a klient m⌠₧e pokraΦova¥ a posla¥ aj zvyÜn· Φas¥.</td></tr>
  95. <tr><td><em>SC_MOVED_<br>PERMANENTLY</em></td><td><strong>301</strong> - indikuje, ₧e po₧adovan² zdroj bol permanentne pres¥ahovan² na inΘ miesto a vÜetky ostatnΘ po₧iadavky by mali by¥ smerovanΘ na novΘ URL.</td></tr>
  96. <tr><td><em>SC_BAD_REQUEST</em></td><td><strong>400</strong> - indikuje, ₧e po₧iadavka poslanß klientom bola syntakticky nesprßvna.</td></tr>
  97. <tr><td><em>SC_UNAUTHORIZED</em></td><td><strong>401</strong> - indikuje, ₧e poslanß po₧iadavka vy₧aduje HTTP autentifikßciu.</td></tr>
  98. <tr><td><em>SC_FORBIDDEN</em></td><td><strong>403</strong> - indikuje, ₧e servlet pochopil po₧iadavku, ale odmietol ju vykona¥ (naprφklad z d⌠vodu nedostatoΦn²ch prßv).</td></tr>
  99. <tr><td><em>SC_NOT_FOUND</em></td><td><strong>404</strong> - indikuje, ₧e po₧adovan² zdroj je nedostupn².</td></tr>
  100. <tr><td><em>SC_HTTP_VERSION_<br>NOT_SUPPORTED</em></td><td><strong>505</strong> - indikuje, ₧e servlet nepodporuje alebo odmietol verziu HTTP protokolu, ktorß bola pou₧itß v danej po₧iadavke.</td></tr>
  101. </table>
  102. </div>
  103.  
  104. <p>VÜetky stavovΘ HTTP k≤dy m⌠₧eme rozdeli¥ do piatich skupφn pod╛a nasleduj·cej tabu╛ky:</p>
  105.  
  106. <div class='table'>
  107. <table cellspacing='0'>
  108. <tr><th>rozsah k≤dov</th><th>kateg≤rie</th></tr>
  109. <tr><td>100-199</td><td>InformaΦnß kateg≤ria.</td></tr>
  110. <tr><td>200-299</td><td>Po₧iadavka od klienta bola ·speÜne spracovanß.</td></tr>
  111. <tr><td>300-399</td><td>Po₧iadavka bola presmerovanß.</td></tr>
  112. <tr><td>400-499</td><td>Po₧iadavka od klienta je nekompletnß.</td></tr>
  113. <tr><td>500-599</td><td>Server error.</td></tr>
  114. </table>
  115. </div>
  116.  
  117. <p>V tomto viacmenej teoretickom Φlßnku budeme pokraΦova¥ aj nabud·ce, kedy sa pozrieme na ∩alÜie mo₧nosti spoluprßce medzi servletmi a in²mi zdrojmi web aplikßcie.</p>
  118.  
  119. <div class='refer'>
  120. <h3>P°edchozφ Φlßnky</h3>
  121. <ul>
  122. <li><a href='http://interval.cz/clanek.asp?article=2774'>Java Servlets - i18n</a></li>
  123. <li><a href='http://interval.cz/clanek.asp?article=2686'>Java Servlets - JDBC, JNDI a dßtovΘ zdroje II</a></li>
  124. <li><a href='http://interval.cz/clanek.asp?article=2640'>Java Servlets - JDBC, JNDI a dßtovΘ zdroje I</a></li>
  125. <li><a href='http://interval.cz/clanek.asp?article=2571'>Java Servlets - servlet filtering</a></li>
  126. <li><a href='http://interval.cz/clanek.asp?article=2559'>Java Servlets - session tracking II</a></li>
  127. <li><a href='http://interval.cz/clanek.asp?article=2466'>Java Servlets - session tracking</a></li>
  128. <li><a href='http://interval.cz/clanek.asp?article=2445'>Java Servlets - state tracking</a></li>
  129. <li><a href='http://interval.cz/clanek.asp?article=2444'>Java Servlets - perzistencia a serializßcia objektov</a></li>
  130. <li><a href='http://interval.cz/clanek.asp?article=2416'>Java Servlets - spracovanie formulßra II</a></li>
  131. <li><a href='http://interval.cz/clanek.asp?article=2395'>Java Servlets - spracovanie formulßra</a></li>
  132. <li><a href='http://interval.cz/clanek.asp?article=2384'>Java Servlets - web.xml - pokraΦovanie</a></li>
  133. <li><a href='http://interval.cz/clanek.asp?article=2352'>Java Servlets - web.xml</a></li>
  134. <li><a href='http://interval.cz/clanek.asp?article=2342'>Java Servlets - vytvorenie jednoduchΘho servletu</a></li>
  135. <li><a href='http://interval.cz/clanek.asp?article=2319'>Java Servlets - ₧ivotn² cyklus servletu</a></li>
  136. <li><a href='http://interval.cz/clanek.asp?article=2262'>Java Servlets - predstavenie technol≤gie</a></li>
  137. </ul>
  138. </div>
  139.  
  140.  
  141.  
  142. <div id='article-author'>
  143. <a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=134'>Branick², Marek</a> (12.11. 2003)
  144.  
  145. </div>
  146.  
  147.  
  148.  
  149. </div></div>
  150. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  151. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  152.  
  153.  
  154.  
  155. <div class='page-right-box book'>
  156.     <h3>Kni₧nφ novinka</h3>
  157.     <div class='page-right-box-in'>
  158.         <div class='book-top'>
  159.             <h4><a href='http://interval.cz/redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=235'>PostgreSQL: Praktick² pr∙vodce</a></h4>
  160.         </div>
  161.     </div>
  162.     <div class='image'>
  163.         <a href='http://interval.cz/redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=235'><img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  164.     </div>
  165.     <div class='book-bottom'>Cena: <span class='book-price-old'>447,00 KΦ</span> <span class='book-price-new'>402,30 KΦ</span></div>
  166. </div>
  167.  
  168.  
  169.  
  170. <div class='page-right-box reading'>
  171.     <h3>NejΦten∞jÜφ</h3>
  172.     <div class='page-right-box-in'>
  173.         <ul>
  174. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2856'>ZnakovΘ sady v praxi</a></li>
  175. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2849'>Vytvß°enφ dokument∙ PDF v PHP</a></li>
  176. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2852'>Interval v zajetφ Φφsel</a></li>
  177. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2850'>CSS2 - podpora kaskßdov²ch styl∙ v sedmiΦkovΘ °ad∞ Opery</a></li>
  178. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2844'>P.E.T. - jednoduch² Üablonovacφ systΘm v PHP</a></li>
  179.         </ul>
  180.     </div>
  181. </div>
  182.  
  183.  
  184.  
  185. <div class='page-right-box cauldron'>
  186.     <h3>Diskuznφ kotel</h3>
  187.     <div class='page-right-box-in'>
  188.         <ul>
  189. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2313'>Studenß vßlka prohlφ₧eΦ∙</a><div>222 komentß°∙ </div></li>
  190. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1573'>Kam jφt studovat?</a><div>108 komentß°∙ </div></li>
  191. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2797'>VyhlßÜenφ sout∞₧e Interzen 2003</a><div>95 komentß°∙ </div></li>
  192. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2827'>Dreamweaver MX 2004</a><div>48 komentß°∙ </div></li>
  193. <li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2816'>beeasy.cz</a><div>47 komentß°∙ </div></li>
  194.         </ul>
  195.     </div>
  196. </div>
  197.  
  198.  
  199.  
  200. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  201. </div>
  202. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  203. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  204. </body>
  205. </html>