Commit 77f44962 by Patryk Czarnik

Pierwsze przykłady JSP

parent 0d8b2964
......@@ -31,6 +31,12 @@
<version>8.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
......
package beans;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
public class ExampleBean {
private String napis = "Ala ma kota";
private int licznik = 0;
private final List<String> lista = new ArrayList<>(List.of("Warszawa", "Kraków", "Wrocław", "Gdańsk"));
public String getNapis() {
return napis;
}
public void setNapis(String napis) {
this.napis = napis;
}
public synchronized int getLicznik() {
return ++licznik;
}
// Metoda może wyglądać jak getter, ale zamiast po prostu zwracać wartość pola z obiektu,
// może pobrać dane z innego źródła: bieżący czas, dane z pliku, z bazy danych, obliczona na podstawie innych wartości.
// W skryptach JSP, Thymeleaf itp. można ten getter wywołać pisząc bean.currentTime
public LocalDateTime getCurrentTime() {
return LocalDateTime.now();
}
public List<String> getLista() {
return lista;
}
@Override
public String toString() {
return "ExampleBean z napisem " + napis + " i aktualną wartością licznika " + licznik;
}
}
......@@ -45,6 +45,11 @@
<li><a href="Kalkulator9">Kalkulator 9</a> - wersja z <code>forward</code> i widokiem JSP</li>
</ul>
<h3>Przykłady JSP</h3>
<ul>
<li><a href="przyklad1.jsp">przyklad1</a> - podstawa działania i skryptlety</li>
<li><a href="przyklad2.jsp">przyklad2</a> - wyrażenia EL, beany i tgliby</li>
</ul>
</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" %>
<%@page import="java.time.LocalTime"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Przykład JSP 2</title>
</head>
<body>
<h1>Przykład JSP 2</h1>
<%-- Stosowanie skryptletów, czyli bezpośrednie wstawianie kodu Javy do JSP,
jest obecnie uważane za złą praktykę, a należy używać sposobów bardziej "wysokopoziomowych", jak:
- wyrażenia EL ("Expression Language"), czyli ${...}
- za ich pomocą odwołania do "beanów", czyli obiektów istniejących po strony Javy,
- biblioteki tagów ("taglibs")
--%>
<h2>Expression Language</h2>
<p>Wynik obliczenia: ${2+3*4}</p>
<p>Parametr imie: ${param.imie}</p>
<hr>
<h2>Beans</h2>
<jsp:useBean id="obiekt" class="beans.ExampleBean"/>
<p>${obiekt}</p><%-- To powoduje wywołanie toString() --%>
<p>napis: ${obiekt.napis}, licznik: ${obiekt.licznik}</p><%-- To powoduje wywołanie obiekt.getNapis() --%>
<p>Licznik po raz drugi: ${obiekt.licznik}</p>
<p>Bieżący czas: ${obiekt.currentTime}</p>
<p>Pola czasu: ${obiekt.currentTime.dayOfWeek}, ${obiekt.currentTime.dayOfYear} dzień roku, sekunda ${obiekt.currentTime.second}</p>
<hr>
<p>Zmieniam tekst...</p>
<jsp:setProperty name="obiekt" property="napis" value="Ola ma ${1+2} psy"/><%-- można też param zamiast value --%>
<p>Teraz tekst jest taki: ${obiekt.napis}</p>
<h2>Taglibs</h2>
<ul>
<c:forEach var="x" items="Ala,Ola,Ela">
<li>Witaj ${x}!</li>
</c:forEach>
</ul>
<p>Liczby: <c:forEach var="i" begin="10" end="20" step="2">${i}, </c:forEach></p>
<%-- Najczęściej dane do forEach są pobierane z jakiegoś beana w formie kolekcji lub tablicy. --%>
<ol>
<c:forEach var="miasto" items="${obiekt.lista}">
<li>${miasto}</li>
</c:forEach>
</ol>
</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