kurswww 08 jsp lnt75cn4hp6dum3e Nieznany

background image

Kurs WWW

1

Paweł Rajba

Paweł Rajba

pawel@ii.uni.wroc.pl

http://pawel.ii.uni.wroc.pl/

1

Na podstawie: Hougland, D. i Tavistock A., JSP. Tworzenie stron WWW, RM, Warszawa 2002

background image

Wprowadzenie

Technologia po stronie serwera

Strony JSP są kompilowane

JSP to specyfikacja, a nie produkt – jest kilka

implementacji (Tomcat, ...)

Jest to jeden z elementów J2EE, czyli jest

dostępne wiele elementów z Javy

Bezpieczeństwo gwarantowane przez silny

system typów

Obsługa wyjątków

background image

Tomcat

Jedna z implementacji JSP, projekt apache.org

Struktura katalogów

/bin

programy i skrypty (.sh lub .bat)

/conf

pliki konfiguracyjne (najważniejszy: server.xml)

/logs

pliki dziennika

/webapps, /webapps/ROOT

aplikacje, domyślna lokalizacja

background image

Składnia

typu JSP (rekomendowana)

<% skrypt %>

typu XML

<jsp:element >skrypt</jsp:element>

background image

Elementy w JSP

Wyróżniamy trzy typy elementów

Elementy skryptowe

fragmenty kodu w Javie, które generuja kod HTML,

XHTML, itd.

Elementy akcji

predefiniowane funkcje; specyfikacja JSP zawiera

kilka takich funkcji, a dzięki specyfikacji JSP 1.1

można tworzyć własne znaczniki

Dyrektywy

określają informacje dodatkową, ogólną, dotyczacą

całej strony

background image

Elementy skryptowe

Elementy skryptletu

Składnia

<% kod %>

<jsp:scriptlet>kod</jsp:scriptlet>

Przykład

data.jsp

Elementy wyrażenia

Składnia

<%= kod %>

<jsp:expression>kod</jsp:expression>

Przykład

data2.jsp

background image

Elementy skryptowe

Elementy deklaracji

Uwagi:

Elementy deklaracji nie generują żadnych napisów

Zmienne i metody utworzone w elemencie

deklaracji są globalne

Składnia

<%! kod %>

<jsp:declaration>kod</jsp:declaration>

Przykład

data3.jsp

background image

Elementy skryptowe

Sterowanie przepływem

Instrukcje jak w Javie:

if..then..else, while..do, for, try..catch

Można ,,wyskakiwać'' z kodu JSP

Przykład: dnitygodnia.jsp

Komentarze

wewnątrz kodu:

// ...

/* ... */

zewnętrzne:

<%-- ... --%>

<!-- ... -->

background image

Elementy akcji

Składnia

<jsp:nazwa_akcji atrybut="wartosc" />

Atrybuty:

Dla wszystkich elementów akcji dostępne są

dwa atrybuty:

id – jednoznacznie identyfikuje elementy akcji, a w

przypadku, gdy taki element tworzy obiekt, to

poprzez id można sie do niego później odwoływać

scope – określa czas życia elementu akcji. Moze

on przyjmowac nastepujace wartosci:

background image

Elementy akcji

Atrybuty c.d.

scope

page – obiekty o tym zasiegu sa dostępne jako część

strony i są usuwane po wysłaniu odpowiedzi do klienta

lub po przekierowaniu,

request – obiekty o tym zasięgu są dostępne ze stron

przetwarzających to samo żądanie; podobne do page,

ale obiekt bedzie dalej dostepny po przekazaniu

żądania do innej strony JSP

session – obiekty o tym zasięgu będą dostępne ze

stron przetwarzających żądania w takiej samej sesji

jak ta, w której zostały utworzone

application – obiekty będą dostępne ze stron

przetwarzających żądania z tej samej aplikacji jak ta,

w której zostały utworzone

background image

Elementy akcji

Standardowe akcje

Zasobów

include – dołącza plik

forward – przekierowuje do nowej lokalizacji

plugin – wstawia na stronę komponent Javy

JavaBeans

background image

Elementy akcji

Akcja include

Składnia

<jsp:include page="adres" flush="true" />

<jsp:include page="adres" flush="true">

<jsp:param name="param"

value="wartosc" /> ...

</jsp:include>

page="adres" – względny adres zasobu, który ma

zostać dołączony

flush="true" – określa buforowanie; należy koniecznie

ustawić na true

Przykłady

akcja_include.jsp, tytul.jsp

background image

Elementy akcji

Akcja forward

Składnia

<jsp:forward page="adres" />

<jsp:forward page="adres">

<jsp:param name="param"

value="wartosc" /> ...

</jsp:forward>

page="adres" – względny adres zasobu, na który

zostaniemy przekierowani

Uwaga:

w pasku adresu URL pozostanie bez zmian

Przykłady:

akcja_forward.jsp

background image

Elementy akcji

Akcja plugin

Składnia

<jsp:plugin type="bean|applet"

code="objectCode"

codebase="objectCodebase"

align="alignment" height="height" width="width"

hspace="hspace" vspace="vspace" title=”title

name="componentName">

<jsp:params>

<jsp:param name="name" value=”value" /> ...

</jsp:params>

<jsp:fallback>Na wypadek awarii</jsp:fallback>

</jsp:plugin>

background image

Elementy akcji

Akcja plugin

Przykład

<jsp:plugin type="applet"

code="gierka.class"

codebase="/aplety"

width="200" height="200">

<jsp:param name="parametr"

value="wartosc jego" />

<jsp:fallback>Nie mozna uruchomic Java

Plugin</jsp:fallback>

</jsp:plugin>

background image

Elementy akcji

Model komponentowy, krótkie wprowadzenie

do Enterprise JavaBeans (EJB)

Komponenty, czyli JavaBeans

JavaBean ma zdefiniowane tzw. właściwosci i

metody dostępowe, poprzez które komunikuje

sie z otoczeniem.

JavaBean to zwykła klasa utworzona przy

stosowaniu kilku zasad.

background image

Elementy akcji

Zasady tworzenia bean-a

Konstruktor nie moze przyjmowac zadnych

argumentów.

Własciwosci i metody dostępowe. Dla każdej

właściwosci istnieją metody dostępowe i dostęp

do nich jest tylko przez te metody. Dla każdej

właściwosci powinny być zdefiniowane

nastepujące 3 (ewentualnie 2) metody

public {Typ obiektu} get{Własciwosc} ()

public void set{Własciwosc} ({Typ obiektu})

public boolean is{Własciwosc} ()

background image

Elementy akcji

Zasady tworzenia bean-a c.d.

Właściwości indeksowane

public {Typ obiektu}[] get{Własciwosc} ()

public void set{Własciwosc} ({Typ obiektu}[])

public {Typ obiektu} get{Własciwosc} (int)

public void set{Własciwosc} (int, {Typ obiektu})

Widoczność: poza konstruktorem i metodami

dostępowymi nic nie powinno być widoczne.

Przykład:

ProstyBean.java

background image

Elementy akcji

Akcja JavaBeans

Warte zainteresowania, gdyż całość

implementacji może być zawarta JavaBeans, a

JSP tylko jej wykorzystanie

Wyszukuje obiektu (za pomoca id i scope) lub

tworzy jego egzemplarz oraz związuje ten

obiekt z niejawnym obiektem utworzonym

poprzez atrybut scope. Znacznik useBean

może, ale nie musi miec ciała.

background image

Elementy akcji

Akcja JavaBeans

Atrybuty

id – identyfikuje obiekt; atrybut wymagany,

scope – okresla zasięg,

class – definiuje implementację obiektu; jeśli nie

podamy class lub beanName, to obiekt musi

dostępny w podanym zasięgu,

type – typ tworzonej zmiennej skryptowej;

domyślnie jest to typ określony w class,

beanName – nazwa obiektu bean.

background image

Elementy akcji

Akcja JavaBeans

Składnia, przykład

<jsp:useBean id="DataBean" class="org.java.DataBean" />

<jsp:useBean id="newBean" class="org.java.DataBean">

<jsp:setProperty name="newBean" property="border" value="0">

</jsp:useBean>

background image

Elementy akcji

Akcja JavaBeans, akcja <jsp:setProperty>

Ustawia właściwości Bean-a

Atrybuty

name – nazwa beana, którego wartość ustawiamy,

property – nazwa właściwosci, którą chcemy

ustawić; jeżeli pominiemy atrybuty value i param,

to zostanie przypisana wartość z parametru

zadania o tej samej nazwie,

param – nazwa parametru zadania, której wartość

chcemy przypisac własciwości,

value – wartość, która zostanie przypisana danej

właściwości; wyklucza sie z param.

background image

Elementy akcji

Akcja JavaBeans, akcja <jsp:setProperty>

Przykłady użycia

<jsp:setProperty id="DataBean" property="border" value="30" />

<jsp:setProperty id="DataBean" property="border" param="borderWidth" />

<jsp:setProperty id="DataBean" property="border" />

<jsp:setProperty id="DataBean" property="*" />

background image

Elementy akcji

Akcja JavaBeans, akcja <jsp:getProperty>

Pobiera wartosc własciwosci bean’a.

Atrybuty:

name – nazwa ziarnka, którego wartość

pobieramy; atrybut wymagany,

property – nazwa właściwosci, którą pobieramy;

atrybut wymagany.

background image

Dyrektywy

Składnia

Dostępne są dwa rodzaje składni

<%@ nazwa_dyrektywy %>

<jsp:directive.nazwa_dyrektywy />

Zależy od rodzaju dyrektywy

Omówimy dyrektywy

page

include

taglib

background image

Dyrektywy

Dyrektywa page

Określa parametry strony

Para atrybut/wartosc może wystąpić tylko raz

Atrybuty

contentType – określa typ zawartości; domyślnie

jest to text/html z kodowaniem ISO-8859-1

errorPage – określamy stronę, która bedzie

wyświetlana przy pojawieniu sie wyjątku

isErrorPage – strona, która ma być wyświetlana

przy pojawianiu się wyjatków musi ten atrybut mieć

ustawiony na true; domyślnie jest on oczywiście

ustawiany na false

background image

Dyrektywy

Dyrektywa page

Atrybuty c.d.

import – umożliwia import pakietów, można podać

kilka po przecinku; domyślnie importowane są:

javax.Servlet.jsp.*, javax.Servlet.http.*,

java.lang.*, javax.Servlet.*

atrybut import dostępny jest tylko wtedy, gdy

atrybut language jest ustawiony na java

language – określa język używany wewnątrz strony

JSP; obecnie wartoscią domyślną i jedyną jest java

session – określa, czy dana strona powinna

uczestniczyc w sesji HTTP; domyslna wartoscia

jest true

background image

Dyrektywy

Dyrektywa page

Przykład

<%@ page language="java"

contentType="text/html;charset=iso-8859-2" %>

<%@ page import="java.util.Enumeration" %>

<%@ page import="java.util.StringTokenizer" %>

background image

Dyrektywy

Dyrektywa include

Dołącza zawartość zewnętrznego pliku

Wstawienie jest w momencie kompilacji

dołączenie jest statyczne

Atrybut file określa zasób do dołączenia

Przykład

<% include file="naglowek.html" %>

background image

Dyrektywy

Dyrektywa taglib

Określa bibliotekę, o które można rozszerzyć

standardowy zestaw znaczników JSP

Atrybuty:

uri – określa ścieżkę do biblioteki,

prefix – prefix, poprzez który będzie się można

odwoływać wewnątrz strony.

Przykład

<%@ taglib uri="http://www.java.com/taglib/sample.jar"

prefix="sample" %>

<sample:tagaction>Przykładzik</sample>

background image

Żądanie HTTP

Wraz żądaniem tworzony jest obiekt klasy

HttpServletRequest o nazwie request

Metody do obsługi parametrów żądania:

String request.getQueryString()

BufferedReader request.getReader()

ServletInputStream request.getInputStream()

String request.getMethod()

String request.getParameter(String)

Enumeration request.getParameterNames()

String[] request.getParameterValues(String)

Przykład

userinfo.html, userinfo.jsp

background image

Żądanie HTTP

Metody do pobrania nagłóków HTTP:

String request.getHeader(String)

zwraca czysty nagłówek

int request.getIntHeader(String)

j.w., przy czym zwraca int

Date request.getDateHeader(String)

j.w., przy czym zwraca Date

Enumeration request.getHeaderNames()

zwraca nazwy pól nagłówków żądania

background image

Żądanie HTTP

Metody do pobrania nagłóków HTTP c.d.:

Enumeration request.getHeaders(String)

zwraca wartości dostępne w danym nagłówku

String request.getLocale()

pobiera kod preferowanego języka

zdefiniowanego w Accept-Language

Enumeration request.getLocales()

pobiera kody wszystkich języków określonych

w Accept-Language wg preferencji

background image

Żądanie HTTP

Do pobrania ciasteczek mamy

Cookie[] request.getCookies()

Do pobrania informacji o serwerze mamy

String application.getServerInfo()

Przykład

headers.jsp

background image

Wysyłanie odpowiedzi

Aby zmodyfikować odpowiedź należy użyć

metod obiektu HttpServletResponse

dostępnego pod nazwę response

Do ustawienia kod odpowiedzi mamy metody:

void response.sendError(int sc)

void response.sendError(int sc, String msg)

void response.sendStatus(int sc)

void response.sendStatus(int sc, String msg)

background image

Wysyłanie odpowiedzi

Przykładowe kody odpowiedzi

Kod stanu

Stała w JSP

200 OK

SC_OK

204 No Content

SC_NO_CONTENT

301 Moved Permanently

SC_MOVED_PERMANENTLY

302 Moved Temporarily

SC_MOVED_TEMPORARILY

401 Unauthorized

SC_UNAUTHORIZED

403 Forbidden

SC_FORBIDDEN

404 Not Found

SC_NOT FOUND

500 Internal Server Error SC_INTERNAL_SERVER_ERROR
503 Service Unavailable

SC_SERVICE UNAVAILABLE

background image

Wysyłanie odpowiedzi

Wstawianie nagłówków do odpowiedzi

void response.addHeader(String name, String value)

void response.setHeader(String name, String value)

void response.addIntHeader(String name, int value)

void response.setIntHeader(String name, int value)

void response.addDateHeader(String name, long date)

void response.setDateHeader(String name, long date)

Przykładowe nagłówki

Content-Type

text/html

Connection

keep-alive | close

Location

index2.html

Expires

<data>

background image

Wysyłanie odpowiedzi

Kilka uwag

Do ustawienia nagłówka Content-type jest osobna

funkcja void response.setContenttype(String type)

response.setContentType(

"text/xml"

);

Do sprawdzenia, czy dany nagłówek został wysłany jest

metoda boolean response.containsHeader(String name)

Dwa przykłady na przekierowanie strony

response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);

response.setHeader("Location","http://localhost:8080/");

void response.sendRedirect("http://localhost:8080/");

background image

Wysyłanie odpowiedzi

Obsługa ciasteczek

Ciasteczka sa reprezentowane przez obiekty

typu Cookie.

Do utworzenia mamy kontruktor

public Cookie(String name, String value)

Do obsługi obiektu klasy Cookie mamy metody:

void Cookie.setMaxAge(int expire)

void Cookie.setDomain(String pattern)

void Cookie.setPath(String uri)

void Cookie.setSecure(boolean flag)

String Cookie.getName()

String Cookie.getValue()

background image

Wysyłanie odpowiedzi

Obsługa ciasteczek

Do wysłania ciastka mamy metodę

void response.addCookie(Cookie cookie)

Przykład

licznik.jsp

background image

Sesje

Kilka uwag wstępnych

Przekazywanie identyfikatora. Wiele motorów

jest „inteligentna”, tzn. przekazują ID przez

ciacho, a jak się nie powiedzie, to przez URL.

Śledzenie sesji jest właczane domyślnie i

automatycznie jest tworzony egzemplarz

obiektu HttpSession dostępny pod nazwa

session.

Jeśli chcemy wyłaczyc śledzenie sesji, musimy

to zrobić jawnie poprzez dyrektywę

<%@ page session="false" %>

background image

Sesje

Ważniejsze metody obiektu HttpSession

void session.putValue(String key, Object value)

wkłada obiekt ewentualnie go nadpisując

Object session.getValue(String name)

pobiera obiekt lub zwraca null

void session.removeValue(String name)

usuwa obiekt z sesji

String[] session.getValueName()

zwraca tablicę kluczy do obiektów sesji

background image

Sesje

Metody związane z cyklem życia sesji

int session.getMaxInactiveInterval()

pobiera czas, po jakim sesja wygaśnie

void session.setMaxInactiveInterval(int interval)

ustawienie czasu, po jakim sesja wygaśnie

long session.getCreationTime()

moment utworzenia sesji (liczba sekund od

1970-01-01)

long session.getLastAccessedTime()

moment ostatniego użycia sesji

void session.invalidate() - usuwa sesję

background image

Sesje

Przykład

odwiedziny.jsp

confirmLogin.jsp

login.jsp

logout.jsp


Wyszukiwarka

Podobne podstrony:
chemia lato 12 07 08 id 112433 Nieznany
Literaturoznawstwo (08 04 2013) Nieznany
08 02bid 7351 Nieznany (2)
86 Nw 08 Lampy oscyloskopowe V Nieznany (2)
08 Programowanie w srodowisku j Nieznany (2)
08 5id 7231 Nieznany
08 Projektowanie i realizacja z Nieznany (2)
08 2id 7222 Nieznany
2007 08 Szkola konstruktorowid Nieznany
kurswww 04ab javascript i67y762 Nieznany
CW 08 id 122562 Nieznany
2002 08 Osla laczka Nieznany
08 vimid 7592 Nieznany (2)
713[05] Z1 08 Wykonywanie posad Nieznany
MD wykl 08 id 290160 Nieznany
08 9id 7236 Nieznany (2)
08 technologia programowaniaid Nieznany
podst chemii 05 07 08 id 365984 Nieznany
MD cw 08 id 290129 Nieznany

więcej podobnych podstron