Bez tytułu slajdu

advertisement
Internet i jego zastosowania
Technologia JSP
1
Internet i jego zastosowania
Co to jest JSP?
JSP, czyli Java Server Pages, to specyfikacja oparta na
technologii Serwletów umożliwiającej tworzenie
dynamicznych stron HTML, wzbogaconych o skrypty w
Javie i specjalne znaczniki. Strona zawierająca skrypt
jest kompilowana do postaci Serwleta, który obsługuje
żądania do niej kierowane. Cała translacja i kompilacja
odbywa się w tle i jest wykonywana przez kontener.
Dzięki temu zachowano korzyści, które niosła
technologia Java Servlets.
2
Internet i jego zastosowania
Engine JSP & Servlets
3
Internet i jego zastosowania
Model Viewer Controller
Wzorzec MVC jest podejściem hybrydowym służącym do
przetwarzania zapytań klienta
4
Internet i jego zastosowania
Serwlety i JSP – porównanie
• obie technologie są równoważne, czyli każdy serwlet
można zaprojektować jako stronę JSP i odwrotnie, ale
biorąc pod uwagę model MVC odgrywają one różne
role
• JSP zapewniają podział prac pomiędzy programistom
a designerem stron HTML
• serwletów można używać gdy chcemy wykonać
czynności inicjalizacyjne, zapisywać dane w formacie
binarnym do klienta a także elementy związane z tzw.
Logiką biznesowa.
5
Internet i jego zastosowania
Dyrektywy
Dyrektywy to znaczniki które stosują się do całego pliku
JSP. Należą do nich:
– Page. stosuje się do deklaracji pakietów używanych w pliku,
ustalania tekstu informacyjnego, definiowania strony błędów.
Przykładowo, jeżeli chcemy używać pakietu java.util, należy
umieścić w źródle strony:
<%@ page import="java.text.SimpleDateFormat,java.util.*" %>
<%@ page errorPage=„error.jsp" %>
<%@ page isErrorPage=„true" %> (error.jsp)
– Include, która powoduje zamieszczenie w miejscu jej
występowania treści określonego pliku, z uwzględnieniem
przetwarzania elementów JSP w nim zawartych.
Dzięki temu można stworzyć kod wielokrotnie używany na wielu
stronach i przechowywać go w jednym miejscu.
<%@ include file="info.jsp" %>
6
Internet i jego zastosowania
Dyrektywy – cd.
• TagLib, określająca bibliotekę znaczników z
której zamierzamy korzystać. Zostanie ona
szerzej omówiona w dalszej części
prezentacji.
7
Internet i jego zastosowania
Deklaracje
Deklaracje, wyrażenia i skryptlety są kodem w języku
skryptowym stosowanym w stronie JSP.
Obecnie jedynym dostępnym językiem jest Java.
W pojedynczym znaczniku może się ich znaleźć
więcej niż jedna. Deklarować można zarówno
zmienne jak
i metody.
<%! String text = “Hello World”;
Date currentDate = new Date(); %>
<%!
private void doSomething(String obj)
throws IOException { . . . ciało metody} %>
8
Internet i jego zastosowania
Wyrażenia
Wyrażenia podobnie jak deklaracje mają swoje
odpowiedniki w języku Java. Jest to kod który
przyjmuje konkretną wartość klasy String.
Dzięki temu mamy do dyspozycji bardzo łatwy
mechanizm wklejania w stronę prostych, dynamicznie
generowanych treści.
<%= request.getServerName() %>
<%= new Date() %> ( (new Date()).toString() )
9
Internet i jego zastosowania
Skryptlety
Dopełnieniem deklaracji i wyrażeń są skryptlety w których
można zawierać większą ilość kodu, instrukcje sterujące,
itp.
<%
for (Enumeration e=session.getAttributeNames();e.hasMoreElements();)
{
attrName = (String) e.nextElement();
%>
<B><U> <%= attrName %> </U>= </B>
<% } %>
<% if (kobieta) { %>
Szanowna Pani!
<% } else { %>
Szanowny Panie!
<% } %>
10
Internet i jego zastosowania
Predefiniowane obiekty
Obiekt
Typ
Zakres
Najczęściej używane metody
request
Subclass of javax. servlet.
ServletRequest
Request
getAttribute, getParameter, getParameterNames,
getParameterValues, setAttribute
response
Subclass of javax. servlet.
ServletResponse
Page
Standardowo nie używana przez autorów stron
JSP
pageContext
javax. servlet. jsp.
PageContext
Page
findAttribute, getAttribute, getAttributesScope,
getAttributeNamesInScope, setAttribute
session
javax. servlet. http.
HttpSession
Session
getAttribute, getId, setAttribute
application
javax. servlet. ServletContext
Application
getAttribute, getMimeType, getRealPath,
setAttribute
out
javax. servlet. jsp. JspWriter
Page
clear, clearBuffer, flush, getBufferSize,
getRemaining
config
javax. servlet. ServletConfig
Page
getInitParameter, getInitParameterNames
page
java. lang. Object
Page
Standardowo nie używana przez autorów stron
JSP
exception
java. lang. Throwable
Page
getMessage, getLocalizedMessage,
printStackTrace, toString
11
Internet i jego zastosowania
Efektywność
Dotychczas opisane elementy JSP umożliwiają
napisanie w pełni funkcjonalnych, dynamicznych
stron HTML. Mają one jednak wadę polegającą na
konieczności zawierania nieraz dużej ilości kodu
(skryptlety) dotyczącego logiki biznesowej
wymieszanego z kodem HTML. Utrudnia to
zarządzanie i współpracę członków zespołu
implementującego serwis, podobnie jak to ma
miejsce w ‘czystych’ Serwletach.
Rozwiązaniem tego problemu jest możliwość
zamykania logiki w komponentach o dobrze
zdefiniowanych interfejsach, przy użyciu wzorca
projektowego MVC (np. framework Struts).
12
Internet i jego zastosowania
JavaBeans
JavaBeans były stosowane jeszcze przed powstaniem
specyfikacji JSP i zostały zaadoptowane do nich w naturalny
sposób. Są one wykorzystywane często do przetwarzania
danych.
Przykladowy kod:
<% ShoppingCart cart = (ShoppingCart)session. getAttribute("cart");
// If the user has no cart, create a new one
if (cart == null)
{
cart = new ShoppingCart();
session.setAttribute("cart", cart);
}
%>
można wyraźić też przy użyciu JavaBeans:
<jsp:useBean id="cart" class="cart.ShoppingCart" scope="session"/>
13
Internet i jego zastosowania
JavaBeans – cd.
Ustawienie pola „propName”:
<jsp:setProperty name=„cart” property="propName" value="string"/>
Ustawienie pola „propName” wartością pobraną z requestu
(parametr „paramName”):
<jsp:setProperty name=„cart” property="propName" param="paramName"/>
Parametry requestu wstawiane do pól beana:
<jsp:setProperty name="beanName" property="*"/>
14
Internet i jego zastosowania
Biblioteki znaczników – taglibs
Nowym elementem wprowadzonym w specyfikacji JSP 1.1 są
biblioteki znaczników (tag), których funkcjonalność może być
dowolnie definiowana przez twórców.
Podstawowe różnice pomiędzy JavaBeans, a tag’ami to:
–
–
–
JavaBean’y, w przeciwieństwie do znaczników nie mogą
przetwarzać zawartości strony JSP
Stosowanie tagów jest bardziej naturalne dla twórców stron
WWW
Tworzenie tagów wymaga więcej wysiłku
15
Internet i jego zastosowania
Prosty ‘tag handler’
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
public class ExampleTag
extends TagSupport {
public int doStartTag() {
try {
JspWriter out = pageContext.getOut();
out.print("Custom tag example");
} catch(IOException ioe) {
System.out.println("Error in ExampleTag: " + ioe);
}
return(SKIP_BODY);
}
}
Metoda doStartTag wywoływana jest w trakcie napotkania
znacznika początkowego. Zapis do wynikowej strony HTML
uzyskuje się poprzez obiekt pageContext klasy PageContext
ustawiany w trakcie inicjalizacji tag’a przez kontener.
16
Internet i jego zastosowania
Deskryptor biblioteki (example-taglib.tld)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<!-- a tag library descriptor -->
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>examplejsp</shortname>
<urn></urn>
<info> A example tag library </info>
<tag>
<name>example</name>
<tagclass>examples.tags.ExampleTag</tagclass>
<info>Simplest example: inserts one line of output</info>
<bodycontent>EMPTY</bodycontent>
</tag>
<!-- Other tags defined later ...-->
</taglib>
17
Internet i jego zastosowania
Przykład użycia tagliba
<HTML>
<HEAD>
<%@ taglib uri="example-taglib.tld" prefix="example" %>
<TITLE>Przykład użycia tagliba</TITLE>
</HEAD>
<BODY>
<H1><example:example /></H1>
<example:example />
</BODY>
</HTML>
18
Internet i jego zastosowania
Dziękuję za uwagę
Dodatkowe informacje
- http://java.sun.com
- http://www.onjava.com
- http://jakarta.apache.org (Tomcat, Struts)
19
Download