Commit 8c706b9a by Patryk Czarnik

Przyjkłady JSP

parent 2da4e062
...@@ -35,5 +35,17 @@ ...@@ -35,5 +35,17 @@
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
<version>3.12.0</version> <version>3.12.0</version>
</dependency> </dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Najnowsza wersja z innymi identyfikatorami:
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
-->
</dependencies> </dependencies>
</project> </project>
package beans;
import java.time.LocalDateTime;
public class PrzykladowyBean {
private String napis = "Ala ma kota";
// Klasa pełniąca rolę beana musi mieć konstruktor bezargumentowy.
// Uwaga: jeśli nie stworzymy żadnego konstruktora, to jest generowany automatycznie konstruktor domyślny.
public String getNapis() {
return napis;
}
public void setNapis(String napis) {
this.napis = napis;
}
// Przykład metody, któr "wygląda jak getter", a może być łatwo wywoływana w JSP itp. miejscach,
// jako "read-only property".
public LocalDateTime getCurrentTime() {
return LocalDateTime.now();
}
@Override
public String toString() {
return "PrzykladowyBean, napis = " + napis;
}
}
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.time.LocalTime"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Przykład JSP</title>
</head>
<body>
<h1>Przykład JSP</h1>
<p>Zwykły HTML jest po prostu wysyłany do klienta.</p>
<%-- To jest komentarz JSP. Jego treść nie zostanie wysłana do klienta. --%>
<!-- To jest komentarz HTML. Jego treść zostanie wysłana do klienta, ale przeglądarka jej nie wyświetli. -->
<%-- Tutaj widzimy podstawowe rozumienie czym jest JSP (Java/Jakarta Server Pages):
Pisanie HTML ze wstawkami Javy. Uwaga, to jest najstarszy styl użycia JSP.
W następnym przykładzie zobaczycie podejście "bardziej nowoczesne".
--%>
<%-- Zasadniczo w JSP piszemy tagi HMTL i treści, które mają być wysłane w odpowiedzi do klienta. --%>
<%-- Natomiast wstawiając "skryptlet", możemy wykonać fragment kodu Javy.
Są tam dostępne "implicit objects", np. request, response, out - jak w serwletach.
<% ... %> zwykły blok kodu
--%>
<%
int x = 12 + 13;
out.println("a to wypisała Java, x = " + x);
System.out.println("To wypisało JSP na konsolę.");
%>
<%-- <%= wyrażenie %> - wstawienie wartości --%>
<p>Wartość zmiennej x wynosi <%= x %>, a bieżący czas to <%= LocalTime.now() %>.</p>
<%-- <%! deklaracja z poziomu klasy %> - pozwala deklarować pola i metody w klasie serwletu --%>
<%! static int licznik = 0; %>
<%!
String akuku() {
return "akuku, teraz licznik ma wartość " + licznik;
}
%>
<p>Wartość licznika: <%= ++licznik %></p>
<p>Wynik metody: <%= akuku() %></p>
</body>
</html>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%-- W wersji JSTL 3.0 (Jakarta 10) uri="jakarta.tags.core" --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Przykład JSP</title>
</head>
<body>
<h1>Przykład JSP 2</h1>
<%-- Wpisując w dowolne miejsce treści znacznik ${WYRAŻENIE} powodujemy, że WYRAŻENIE zostanie obliczone
a wynik trafi do treści.
WYRAŻENIA, które można wpisywać, to tzw. "Expression Language", "EL".
--%>
<p>Wynik działania: ${2 + 3 * 4}.</p>
<p>Parametr imie: ${param.imie}.</p>
<%-- Głównym zastosowaniem EL jest dostęp do obiektów nazywanych "beans".
Te obiekty mogą być wstępnie utworzone przez aplikację, albo mogą być tworzone w samym skrypcie:
--%>
<jsp:useBean id="obiekt" class="beans.PrzykladowyBean"/>
<p>Obiekt: ${obiekt}</p>
<p>Napis: ${obiekt.napis}</p>
<%-- Wypisanie całego obiektu jest realizowane poprzez wywołanie metody toString(),
a dostęp do pola w obiekcie poprzez wywołanie gettera.
${obiekt.napis} jest tłumaczone na obiekt.getNapis() --%>
<%-- Zmiana wartości poprzez wywołanie settera: --%>
<jsp:setProperty name="obiekt" property="napis" value="Ola ma psa"/>
<p>Napis po zmianie: ${obiekt.napis}</p>
<ul>
<li>cały DateTime: ${obiekt.currentTime}</li>
<li>rok: ${obiekt.currentTime.year}</li>
<li>dzień roku: ${obiekt.currentTime.dayOfYear}</li>
<li>sekunda: ${obiekt.currentTime.second}</li>
</ul>
<%-- Przykładowe użycia tagów z biblioteki JSTL Core --%>
<%-- Typowym zastosowaniem forEach jest przeglądanie elementów kolekcji,
np. wyników zapytania bazodanowego. Tutaj coś prostszego: --%>
<ol>
<c:forEach var="miasto" items="Warszawa,Kraków,Wrocław,Gdańsk">
<li>${miasto}</li>
</c:forEach>
</ol>
<c:if test="${not empty param.imie}">
<p>Witaj ${param.imie}</p>
<jsp:setProperty name="obiekt" property="napis" value="${param.imie} ma psa"/>
<p>Napis po zmianie: ${obiekt.napis}</p>
</c:if>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment