JAVA – JSP

16
1 JAVA – JSP Java EE training: http://courses.coreservlets.com JAVA BEANS

description

JAVA – JSP. JAVA BEANS. Java EE training: http://courses.coreservlets.com. 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) - PowerPoint PPT Presentation

Transcript of JAVA – JSP

Page 1: JAVA – JSP

1

JAVA – JSP

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

JAVA BEANS

Page 2: JAVA – JSP

2

Java Beans

• Muszą posiadać konstruktor domyślny

• Dostęp do prywatnych pól składowych jest realizowany przez funkcje:getNAZWAPOLAsetNAZWAPOLA(oznacza to zdefiniowanie właściwości-property w klasie)

• Pola typu logicznego są wykorzystują funkcję isNAZWAPOLA

• Muszą być umieszczane w pakietach

Page 3: JAVA – JSP

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);

}

}

Page 4: JAVA – JSP

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"/>

Page 5: JAVA – JSP

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

Page 6: JAVA – JSP

6

jsp:setPropertyFormat

<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",

..... );

Page 7: JAVA – JSP

7

jsp:getPropertyFormat

<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()

)

Page 8: JAVA – JSP

8

Konwersje i przypisaniaPrzypisanie 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" value="<%= numItemsOrdered %>" />

Page 9: JAVA – JSP

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" />

Page 10: JAVA – JSP

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)

Page 11: JAVA – JSP

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ł)

Page 12: JAVA – JSP

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 za pomocą funkcji getAttribute

Page 13: JAVA – JSP

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);

}

}

Page 14: JAVA – JSP

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">

Page 15: JAVA – JSP

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

Page 16: JAVA – JSP

16

Wykorzystanie JavaBeans Podsumowanie

•jsp:useBeanUtworzenie nowego lub utworzenie referencji do istniejącego obiektu

JavaBean

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

•jsp:setPropertyElement 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:getPropertyElement służy do odczytu właściwości obiektu JavaBean<jsp:getProperty name="beanName"

property="propertyName" />