Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuţii   




Cartea de oaspeţi   




Mesaje   





Agora   





Clic aici
PC Magazine





IPRO - PC Magazine Romania, Aprilie 2004
SOLUŢII PENTRU PROGRAMATORII ŞI DESIGNERII WEB

JSP la pachet

Exemple de utilizare ale tehnologiei

Mircea Scărlătescu

În acest număr ne vom concentra atenţia asupra unor cazuri practice de folosire a noţiunilor prezentate în numerele anterioare.

Detectarea browser-ului client

Problemele care apar în momentul în care o pagină web este afişată în browsere diferite sunt arhicunoscute. Problemele apar atunci când un script funcţionează bine în Internet Explorer, dar în Opera, Netscape sau alte browsere totul apare diferit. O soluţie universală nu veţi regăsi pentru a face ca un script să ruleze bine pe toate browserele. O soluţie (preferată cam de… nimeniJ) este să realizăm 2-3 variante ale codului script-ului în funcţie de browser.

În acest caz însă, punem problema de a detecta ce browser foloseşte clientul pentru a vizualiza pagina. Detecţia browserului este prezentă în orice limbaj de scripting, iar JSP nu face excepţie.

Iată care sunt paşii pentru a reuşi o astfel de detecţie.

<%!
public final static int IE = 0;
public final static int NETSCAPE = 1;
public final static int WML = 2;
public int getBrowser(HttpServletRequest request) {
String accept = request.getHeader("ACCEPT");
if (null != accept && -1 !=
accept.indexOf("wml")) {
return WML;
}
String agent = request.getHeader("USER-AGENT");
if (null != agent && -1 !=
agent.indexOf("MSIE")) {
return IE;
}
return NETSCAPE;
}
%>

Codul de mai sus defineşte 3 variabile, care corespund valorilor detecţiei browser-ului. De precizat că WML reprezintă un browser care citeşte format Wireless Markup Language, formatul folosit la navigarea pe Internet cu ajutorul device-urilor mobile.

Metoda definită, getBrowser(), acceptă obiectul Request şi analizează proprietăţile acestuia, mai exact citeşte header-ul ACCEPT. Cum folosim o astfel de metodă: iată un exemplu concret:

<%
switch (getBrowser(request)) {
case WML:
response.setContentType("text/vnd.wap.wml");
%>
<?xml version="1.0"?>
<wml>
<card id="index" title="Browser Greeting">
<p align="center">Acces via WML</p>
</card>
</wml>
<%
break;
case IE:
%>
<HTML><BODY><H1>Acces IE</H1></BODY></HTML>
<%
break;
default:
%>
<HTML><BODY><H1>Acces Netscape</H1></BODY></HTML>
<%
}
%>

Folosind metoda de mai sus, conţinutul returnat de script diferă de la browser la bowser. Metoda este desigur dificil de aplicat pentru siturile de mari dimensiuni. În general, siturile sunt astfel proiectate pentru ca pe orice browser, conţinutul să fie util vizitatorului. Astfel, dacă pe un anumit browser aspectul general nu este ideal, funcţionalitatea nu este afectată.

Afişarea datei şi orei într-un site.

Problema comună a afişării orei server-ului pe un sit. Exemplul de mai jos prezintă modalitatea de a afişa cu ajutorul obiectelor de tip bean.

<%@ page language="java" contentType="text/html" %>
<html>
<body>
<jsp:useBean id="clock" class="java.util.Date" />
<b>Timpul si ora la server:</b><hr>
<ul>
<li>Date: <jsp:getProperty name="clock"
property="date" />
<li>Month: <jsp:getProperty name="clock"
property="month" />
<li>Year: <jsp:getProperty name="clock"
property="year" />
<li>Hours: <jsp:getProperty name="clock"
property="hours" />
<li>Minutes: <jsp:getProperty name="clock"
property="minutes" />
</ul>
<hr>
</body>
</html>

Să analizăm putin acest exemplu. Prima linie specifică directivă de declarare a limbajului în care script-ul este scris. Atributele prezente specifică şi tipul de răspuns întors de script, şi anume HTML. Documentaţia JSP vă oferă o listă cu toate opţiunile pe care le puteţi seta în aceste directive. În exemplul de mai sus, majoritatea conţinutului este de tip HTML. Să lăsăm însă această parte (foarte uşor de înţeles) şi să analizăm partea dinamică a paginii.

Observăm în primul rând prezenţa unei componente de tip JavaBeans. În esenţă o astfel de componentă repezintă o clasă Java, utilizată în contextul unei pagini web. Pentru a putea utiliza o astfel de componentă într-o pagină JSP, ea trebuie mai întâi declarată:

<jsp:useBean id="clock" class="java.util.Date" />

şi reprezintă modalitatea de declarare. Id-ul repezintă un nume (unic) pentru componentă noastră. Acest nume trebuie să respecte restricţiile de nume de variabile pe care le impune limbajul de scripting (în cazul nostru Java). Atributul class reprezintă clasa Java pe care obiectul nostru o instanţiază.

O astfel de componentă este definită pentru a-i folosi proprietăţile şi metodele.

Astfel, bean-ul folosit mai sus, care instanţiază clasa Date are disponibile proprietăţile:

După ce am declarat un bean, proprietăţile acestuia pot să fie afişate folosind tag-ul JSP de mai jos:

<jsp:getProperty name="clock" property="date" />

Detalii despre cum se folosesc şi ce pot să facă bean-urile în cazul JSP, vom mai avea ocazia să discutăm.

Referinţe: www.java.sun.com; www.javaworld.com.


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2004 Agora Media.

webmaster@pcmagazine.ro

LG - Life´s Good

www.agora.ro

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro