• Nie Znaleziono Wyników

JAVA – JSPJava EE training: http://courses.coreservlets.comJAVA BEANS

N/A
N/A
Protected

Academic year: 2021

Share "JAVA – JSPJava EE training: http://courses.coreservlets.comJAVA BEANS"

Copied!
16
0
0

Pełen tekst

(1)

JAVA – JSP

Java EE training: http://courses.coreservlets.com

JAVA BEANS

(2)

Java Beans

• Muszą posiadać konstruktor domyślny

• Dostęp do prywatnych pól składowych jest realizowany przez funkcje:

getNAZWAPOLA setNAZWAPOLA

(oznacza to zdefiniowanie właściwości-property w klasie)

• Pola typu logicznego są wykorzystują funkcję isNAZWAPOLA

• Muszą być umieszczane w pakietach

(3)

Przykład (NetBeans)

public class MyBeam implements Serializable {

public static final String PROP_SAMPLE_PROPERTY = "sampleProperty";

private String sampleProperty;

private PropertyChangeSupport propertySupport;

public MyBeam() {

propertySupport = new PropertyChangeSupport(this);

}

public String getSampleProperty() { return sampleProperty;

}

public void setSampleProperty(String value) { String oldValue = sampleProperty;

sampleProperty = value;

propertySupport.firePropertyChange(PROP_SAMPLE_PROPERTY, oldValue, sampleProperty);

}

public void addPropertyChangeListener(PropertyChangeListener listener) { propertySupport.addPropertyChangeListener(listener);

}

public void removePropertyChangeListener(PropertyChangeListener listener) { propertySupport.removePropertyChangeListener(listener);

(4)

Schemat użycia

Użytkownik zatwierdza dane na formularzu (stronie JSP)

<FORM ACTION="SomePage.jsp">

Strona JSP Tworzy obiektJavaBean

<jsp:useBean id="myBean" class="…"/>

Następuje ustawienie właściwości obiektu wykorzystując dane przesłane w żądaniu

<jsp:setProperty name="myBean„ property="customerID" value="…"/>

• Wartości wynikowe pobierane są też przez właściwości

< jsp:getProperty name="myBean" property="bankAccountBalance"/>

(5)

jsp:useBean

Format

<jsp:useBean id="name" class="package.Class" />

Wynik

Tworzy obiekt lub pobiera referencję do istniejącego obiektu bez bezpośredniego pisania kodu

Uwagi

Wywołanie:

<jsp:useBean id="book1" class="coreservlets.Book" />

Może być interpretowane jako wywołanie skrypletu:

<% coreservlets.Book book1 = new coreservlets.Book(); %>

Zalety użycia JavaBeans:

• Łatwiej ustawiać wartości w obiektach parametrami żądania

• Łatwiej wykorzystywać obiekty na różnych stronach

(6)

jsp:setProperty

Format

<jsp:setProperty name="name" property="property" value="value" />

Wynik

Ustawienie właściwości obiektu przez wywołanie metody setXXX Uwagi

<jsp:setProperty name="book1" property="title" value="Tytuł 1" />

Może być interpretowane jako wywołanie skrypletu

<% book1.setTitle(" Tytuł 1 "); %>

Przykład:

<jsp:setProperty name="MyBean1" property="sampleProperty" value="10" />

Kod wynikowy:

org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(

_jspx_page_context.findAttribute("MyBean1"), "sampleProperty", "10",

... );

(7)

jsp:getProperty

Format

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

Wynik

Uzyskanie dostępu do właściwości obiektu przez niejawne wywołanie funkcji getName Uwagi

<jsp:getProperty name="book1" property="title" />

Może być interpretowane jako:

<%= book1.getTitle() %>

Przykład:

<jsp:getProperty name="MyBean1" property="sampleProperty" />

Kod wynikowy:

org.apache.jasper.runtime.JspRuntimeLibrary.toString(

(

((MyElements.MyBeam)_jspx_page_context.findAttribute("MyBean1")).getSampleProperty() )

(8)

Konwersje i przypisania

Przypisanie wartości typu string

<jsp:useBean id="entry" class="coreservlets.SaleEntry" />

<%-- setItemID oczekuje na obiekt typu string --%>

<jsp:setProperty name="entry" property="itemID"

value='<%= request.getParameter("itemID") %>' />

Przypisanie wartości typu int

<%

int numItemsOrdered = 1;

try {

numItemsOrdered = Integer.parseInt(request.getParameter("numItems"));

} catch(NumberFormatException nfe) {}

%>

<%-- setNumItems potrzebuje wartości typu int --%>

<jsp:setProperty name="entry" property="numItems"

(9)

Przypisanie poszczególnych

właściwości parametrami żądania

<jsp:useBean id="entry" class="coreservlets.SaleEntry" />

<jsp:setProperty name="entry" property="itemID" param="itemID" />

<jsp:setProperty name="entry" property="numItems" param="numItems" />

<jsp:setProperty name="entry" property="discountCode" param="discountCode"

/>

(10)

Zbiorowe ustawienie właściwości obiektu Java Bean parametrami

żądania

<jsp:useBean id="entry" class="coreservlets.SaleEntry" />

<jsp:setProperty name="entry" property="*" />

Uwagi:

Mechanizm ten umożliwa tworzenie tzw obietów „form beans”, których właściwości są wypełniane z formularzy stworzonych na stronach www

Można podzielić proces wypełniania obiektu pomiedzy wiele formularzy (każdy służy do wypełnienia fragmentu zestawu właściwości)

(11)

Współdzielnie obiektów Java Beans miedzy stronami „jsp”

Atrybut scope służ do określenia dodatkowego miejsca przechowywania zmiennej typu JavaBeam

Zmienna tak jest dodatkowo dostępna jako lokalna dla metody _ jspService Still also bound to local variable in _

<jsp:useBean id="…" class="…" scope="…" />

Wartości:

•application

•page

•request

•session

• Umożliwiono w ten sposób współdzielenie danych miedzy stronami jsp

• Obiekt tworzony jest warunkowo (jeśli nie istniał)

(12)

• page

<jsp:useBean … scope="page"/> lub <jsp:useBean…>

Wartość domyślna. Obiekt jest umieszczany w PageContex na czas trwania żądania. Pozwala metodom w bieżącym servlecie korzytać z obiektu

• application

<jsp:useBean … scope="application"/>

Obiekt jest składowany w obiekcie ServletContext, do którego dostęp można uzyskać wywołując metodę:

getServletContext()). ServletContext jest współdzielony przez wszystkie servlety w ramach aplikacji webowej lub pomiedzy wszystkimi servletami na serwerze www jeśli żadna aplikacja webowa nie jest zdefiniowana na serwerze www

• session

<jsp:useBean … scope="session"/>

Obiekt jest przechowywany w obiekcie HttpSession związanym z bieżącym żądaniem z kąd może być dostępny dla zwykłego kodu servletu. Obiekt ten jest dostępny przez funkcje getAttribute i setAttribute

• request

<jsp:useBean … scope="request"/>

Obiekt jest umieszczany w obiekcie ServletRequest na czas trwania bieżącego żądania, gdzie jest dostępny

(13)

Jsp:useBean scope="... "

<jsp:useBean id="MyBean1" scope="session" class="MyElements.MyBeam" />

synchronized (_jspx_page_context) {

MyBean1 = (MyElements.MyBeam) _jspx_page_context.getAttribute("MyBean1", PageContext.PAGE_SCOPE);

if (MyBean1 == null){ MyBean1 = new MyElements.MyBeam();

_jspx_page_context.setAttribute("MyBean1", MyBean1, PageContext.PAGE_SCOPE);

} }

<jsp:useBean id="MyBean1" scope= "page" class="MyElements.MyBeam" />

synchronized (session) {

MyBean1 = (MyElements.MyBeam) _jspx_page_context.getAttribute("MyBean1", PageContext.SESSION_SCOPE);

if (MyBean1 == null){ MyBean1 = new MyElements.MyBeam();

_jspx_page_context.setAttribute("MyBean1", MyBean1, PageContext.SESSION_SCOPE);

} }

(14)

Współdzelenie obiektów Java Beans przykład

• page1.jsp

<jsp:useBean id="MyBean1" class="…" scope="application"/>

<jsp:setProperty name=" MyBean1 " property="sampleProperty"

value="Hello"/>

<jsp:getProperty name="foo" property="message">

• page2.jsp

<jsp:useBean id=" MyBean1 " class="…" scope="application"/>

<jsp:getProperty name=" MyBean1 " property="sampleProperty">

(15)

Operacje warunkowe z wykorzysaniem JavaBeans

• Obiekt Java bean jest tworzony tylko w tedy jeśli nie istnieje już instancja obiektu o takiej nazwie w zdefiniowanym zakresie. To znaczy, że element.:

jsp:useBean utworzy nowy obiekt tylko w tedy gdy on jeszcze nie istnieje. W przeciwnym przypadku ustawiana jest po prostu referencja na istniejący obiekt.Tę włąściwość można wykorzystać do zaimplementowania operacji warunkowych.

Stosujęąc pełny zapis XML znacznik:

<jsp:useBean ... />

Przedstawiamy w postaci:

<jsp:useBean ...>Wyrazenie</jsp:useBean>

gdzie wyrażenie może zawierać instrukcje jsp:setProperty. Takim przypadku "Wyrażenie”

jest wywoływane tylko jeśli tworzony jest nowy obiekt

(16)

Wykorzystanie JavaBeans Podsumowanie

•jsp:useBean

Utworzenie nowego lub utworzenie referencji do istniejącego obiektu JavaBean

<jsp:useBean id="beanName" class="package.Class" />

•jsp:setProperty

Element służy do modyfikacji właściwości (property) obiektu JavaBean (wywołuje metodę setXXX)

<jsp:setProperty name="beanName"

property="propertyName”

value="propertyValue" />

• jsp:getProperty

Element służy do odczytu właściwości obiektu JavaBean

<jsp:getProperty name="beanName"

property="propertyName" />

Cytaty

Powiązane dokumenty

• W bazie typu file (plik o nazwie keyfile) serwer przechowuje listy uwierzytelniające użytkowników, zarządzanych za pomocą narzędzia Admin Console W bazie typu

kluczem sesji (korzystając z liczby wylosowanej przez siebie i serwera) do szyfrowania przesyłanej później informacji szyfrem symetrycznym, szyfruje go z użyciem klucza

public static void main (String[] args) {} ¡– główna metoda;. import

public static void main (String[] args) {} ¡– główna metoda;.. import

Rysunek: Import bibliotek i klasa Random... Rysunek: Import wielu

Przykład z wątkami i JSON Excel i obsługa plików xls Generowanie i odczyt plików pdf. Generowanie skryptów do aplikacji zewnętrznych Zagadnienia

dwie jedna z liczb dodatnia, druga ujemna: odejmnowanie drugiej liczby od pierwszej.. dwie liczby ujemne: program wypisuje komunikat:

– Obiekt do obsługi mechanizmu sesji związanej z żądaniem (typ obiektu HttpSession) Mechanizm sesji może być wyłączony przez dyrektywę