Appunti JSP

Java web

Corso JSP

Corso JSP - In breve

corso-jsp-introduzione

Corso JSP - Le direttive

corso-jsp-le-direttive

Corso JSP - Le direttive Le direttive permettono di definire la struttura di tutto il documento JSP. Indicano gli aspetti principali del servlet in cui sarà convertito il file JSP.

Sono processati al momento della conversione in servlet: a compile-time, cioè a tempo di compilazione.

Le direttive esistenti sono: page, include e taglib.

Introdotte dal simbolo @ possono contenere diversi attributi, in alcuni casi concatenabili come per la direttiva import.

direttiva page <%@ page attributi %>

dove attributi sono coppie: nome="valore" Esempio: <%@ page language=”Java” import="java.sql.*,java.util.*" session="true" buffer="10kb" %> Esiste una lista di attributi che possono essere usati, ne elenco alcuni:

import ="package.class"

Lista di package o classes, separati da virgola, che saranno importati per essere utilizzati nel codice java.

session ="true | false" specifica se la pagina fa parte di una sessione HTTP. Se si inizializza a true, è disponibile l'oggetto implicito sessione.

buffer ="dimensionekb" specifica la dimensione di un buffer di uscita di tipo stream, per il client.

errorPage="url" specifica una pagina JSP che sarà processata nel caso si verifichi un errore.

isErrorPage="true|false" Indica che la pagina è una pagina di errore JSP e può mostrare a video l'output dell'errore verificatosi. Per default è settata false.

contentType = "MIME-Type" oppure contentType = "MIME-Type; charset = Character-Set" Il valore MIME di default è text/html direttiva include Indica al motore JSP di includere il contenuto del file corrispondente, inserendolo al posto della direttiva nella pagina JSP. Il contenuto del file incluso è analizzato al momento della traduzione del file JSP e si include una copia del file stesso nel servlet generato. Una volta incluso, se si modifica il file non sarà ricompilato nel servlet. Il tipo di file da includere può essere un file html (statico) file jsp (dinamico) Sintassi: <%@ include file="nome del file" %> esempio

<html>

<head>

<title> pagina di prova Direttive  </title>

</head>

<body>

<h1> pagina di prova Direttive inclusione  </h1>

      <%@ include file="/hello_world.html" %>

      <%@ include file=”/login.jsp” %>

</body>

</html>

direttiva taglib Permette estendere i marcatori di JSP con etichette o marcatori generati dall'utente (etichette personalizzate).

Sintassi

<%@ taglib uri="taglibraryURI" prefix="tagPrefix" %>

Esempi librerie standard

Corso JSP - Le variabili

corso-jsp-le-variabili

Corso JSP - Le variabili Le variabili in Java devono essere definite e tipizzate, i tipi principali sono (utilizzati negli esempi)

poi ci sono

Per l'elenco completo delle variabili e dei tipi primitivi fare riferimento alla documentazione di Java.

Esempi di uso delle variabili nelle Java Server Pages: Copia codice

<%--
Document : variabili
Created on : 3-giu-2013, 11.19.17
Author : mauro
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>variabile stringa</h1>
<%
 String stVar = "Questa è una stringa!";
 %>
variabile stringa: <%=stVar%>
<h1>variabile intera</h1>
<%
 int iVar=25;
 %>
variabile intera: <%=iVar%>
<h1>variabile float</h1>
<%
float fVar=123.456f;
%>
variabile float: <%=fVar%>

<h1>variabile booleana</h1>
<%
boolean checkBoolean=false;
if(checkBoolean==true)
{
out.print("La condizione è vera");
}
else
{
out.print("La condizione è falsa");//stamperà la condizione è falsa
}
%>
</body>
</html>

pagina JSP -> Servlet

oggetti impliciti JSP utilizza gli oggetti impliciti (built-in)

questi oggetti sono disponibili per l’uso in pagine JSP e sono:

Gli oggetti impliciti possono essere

Ambito Definisce dove e per quanto tempo saranno accessibili gli oggetti: oggetti impliciti, JavaBeans, ...

Ciclo di vita di una pagina JSP La pagina viene salvata in una cartella pubblica del server web

alla prima richiesta ricevuta dal Web server la pagina JSP è automaticamente:

successivamente la pagina JSP (la servlet) viene solo eseguita. In fase di debug il web server verifica se la pagina JSP è più recente del servlet corrispondente.

Rispetto ad altre tecnologie server side come PHP o ASP, questa è una differenza vantaggiosa in termini di velocità di risposta: dopo la prima esecuzione, il codice risulterà già compilato e disponibile immediatamente. Con PHP e ASP il webserver interpreterà il codice ad ogni richiesta prima di servire la pagina di risposta.

Elementi di una pagina JSP

Costrutti del linguaggio Supporta i costrutti e la sintassi standard di Java, ecco alcuni esempi:

esempi disponibili:

JDBC e interazione con database

Le Tag Libraries

Uso avanzato

Post su JSP [su_post post_id="4311"]

Edizione del corso


Corso JSP - argomenti

corso-jsp-argomenti

Corso JSP - argomenti delle lezioni Primo approccio a JSP

->Esercizio: installazione ed esecuzione della prima pagina JSP

Elementi fondamentali di JSP - Sintassi e caratteristiche degli oggetti principali: scriptlet, azioni standard, servlet

-> Esercizio esempi di utilizzo degli elementi fondamentali

-> Esercizio utilizzo di JavaBeans

Lavorare con i database

Elementi Avanzati di una pagina JSP

-> Esercizio uso di Etichette personalizzate


Corso JSP - jsp:forward

L'azione forward, come intuibile, serve per trasferire l'utente da una pagina jsp ad un'altra. Come l'azione jsp:include è possibile utlizzare forward con o senza parametri. In quest'ultimo caso occorre terminare l'istruzione inserendo / prima della parentesi angolare di chiusura tag :

<jsp:forward page="URL" /> Nel caso si vogliano utilizare dei parametri, invece, utilizzeremo il tag di chiusura del blocco di codice </jsp:forward> :

<jsp:forward page="URL" > 
<jsp:param name="ParamName1" value="ParamValue1" /> 
<jsp:param name="ParamName2" value="ParamValue2" /> 
</jsp:forward>

Esempio di codice (incluso in tomcat 7) per trovarne altri, dopo l'indirizzo del server (es. localhost:8080) scrivi /examples/jsp/

<html>
<%
   double freeMem = Runtime.getRuntime().freeMemory();
   double totlMem = Runtime.getRuntime().totalMemory();
   double percent = freeMem/totlMem;
   if (percent < 0.5) {
%>

<jsp:forward page="one.jsp"/>

<% } else { %>

<jsp:forward page="two.html"/>

<% } %>

</html>

Corso JSP - Le dichiarazioni

corso-jsp-dichiarazioni

Racchiuse tra i tag <%! ... %>, contengono codice Java e sono utilizzate per definire metodi e proprietà della classe generata. Le dichiarazioni sono esterne al servlet, a differenza degli scriptlet. Queste variabili o metodi dichiarati diventeranno variabili di istanza della classe servlet generata. Questo significa che saranno globali a tutto il servlet generato per la pagina. Può servire per definire dei metodi da usarsi con il servlet, dichiarare attibuti (variabili di oggetto) del servlet. Sintassi <%! Dichiarazione %>

esempio Copia e completa il codice

<%@page contentType="text/html" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JSP Page</title>
</head>
<body>
<h1>Corso JSP - Le dichiarazioni: crea una funzione per stampare 5 numeri random</h1>
<h2>NB: non ci sono i controlli per ordinare i numeri e verificare l'assenza di duplicati, prova a completare il codice usando gli array</h2>
<%!
 private String lottoGame() {
 return ("<h2>" + (int)Math.floor(Math.random() * 90 +1 )+ "</h2>");
 }
 %>
<%= lottoGame() %>
<%= lottoGame() %>
<%= lottoGame() %>
<%= lottoGame() %>
<%= lottoGame() %>
</body>
</html>

Corso JSP - Ciclo DO WHILE

corso-jsp-ciclo-do-while

<%--
Document : CicloDOWhile
Created on : 28-mag-2013, 16.43.59
Author : mauro
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Corso JSP</title>
</head>
<body>
<h1>Corso JSP - Uso del ciclo DO WHILE</h1>

<h2>Uso dell'oggetto implicito OUT per stampare il valore a video</h2>
<table >
<tr>
<td></td>
<td>numero</td>
<td>aggiungo +1 al numero base </td>
<td>moltiplico *2 il numero base </td>
</tr>
<%
  int i=0;
  do{
  out.print("<tr><td>numero</td><td>"+i+"</td>"+"<td>"+(i+1)+"</td>"+"<td>"+(i*2)+"</td></tr>");
  i++;
  }
  while(i<=10);
  %>
</body>
</html>

Corso JSP - Funzione contatore accessi + esempio uso dichiarazioni e espressioni

corso-jsp-dichiarazioni-espressioni

<%--
Document : contatore
Created on : 7-mag-2013, 15.47.29
Author : mauro
--%>

<%@page contentType="text/html" pageEncoding="utf-8" language="java"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>

<%! int conta = 0; %>
<%! public void contatore()
 {
 conta ++;
 }
 %>
Questa pagina è stata caricata <%= conta %> volte.
<% contatore(); %>
</body>
</html>

Corso JSP - Esempio JSTL Core

corso-jsp-esempio-jstl-core

Corso JSP - JSTL e EL JSP Standard Tag Library e Expression Language

<%-- 
    Document   : core
    Created on : 26-giu-2013, 15.16.15
    Author     : mauro
--%>
<!-- collega la taglib e assegna il prefisso, in questo caso usa la lettera c -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Esempi core</title>
</head>
<body>
    <h1>Esempio con tag: out</h1>
<!-- la lettera del prefisso permette di accedere agli oggetti ed ai metodi definiti nella taglib vedi gli esempi -->
<c:out value="${'<body> , %'}"/>

    <h1>Esempio con tag: set</h1>
<c:set var="prodotto" scope="session" value="${2000*2}"/>
<c:out value="${prodotto}"/>
    <h1>Esempio con tag: remove</h1>
<c:remove var="prodotto"/>
<c:out value="${prodotto}"/>

    <h1>Esempio con tag: catch e if</h1>
<c:catch var ="catchException">
   <% int x = 10/0;%>
</c:catch>

<c:if test = "${catchException != null}">
   <p>The exception is : ${catchException} <br />
   There is an exception: ${catchException.message}</p>
</c:if>
    <h1>Esempio con tag: choose</h1>

    <c:set var="prodotto" scope="session" value="${5000+500+50+5}"/>

<c:choose>
    <c:when test="${prodotto <= 0}">
       Il valore del prodotto è minore di 0.
    </c:when>
    <c:when test="${prodotto > 1000}">
       Il valore del prodotto è maggiore di 1000.
    </c:when>
    <c:otherwise>
        <c:out value="${prodotto}"/>
    </c:otherwise>
</c:choose>   

<h2>Esempio con import: importa il sorgente di una pagina web con JSTL</h2>
<%--<c:import var="data" url="http://www.bogliaccino.it"/>--%>
<h2>stampa il codice importato</h2>
<%--<c:out value="${data}"/>--%>

</body>
</html>

Corso JSP - Esempio JSTL Functions

corso-jsp-esempio-jstl-functions

Corso JSP - JSTL

<%-- 
    Document   : newjspfucntions
    Created on : 26-giu-2013, 16.27.22
    Author     : mauro
--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
<h2>la funzione replace fn:replace()</h2>
<c:set var="stringa1" value="Questa è la prima stringa."/>
<c:out value="${stringa1}"/>
<c:set var="stringa2" value="${fn:replace(stringa1, 
                                'prima', 'seconda')}" />

<p>Stringa modificata: ${stringa2}</p>
<h2>la funzione split e la funzione join fn:split() fn:join()</h2>
<c:set var="stringa1" value="Questa è la prima stringa."/>
<c:set var="stringa2" value="${fn:split(stringa1, ' ')}" />
<c:set var="stringa3" value="${fn:join(stringa2, '|')}" />

<p>Stringa (3) : ${stringa3}</p>

<c:set var="stringa4" value="${fn:split(stringa3, '|')}" />
<c:set var="stringa5" value="${fn:join(stringa4, ' ')}" />

<p>Stringa (5) : ${stringa5}</p>
    </body>
</html>

Corso JSP - Esempio Java Server Faces

corso-jsp-java-server-faces

Corso JSP - Java Server Faces - Hello world JSF con Netbeans 7.3

In Source Packages aggiungi un nuovo package (p.es login ), all'interno del package aggiungi una classe java (p. es accesso.java)

Incolla il codice seguente

package login;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
*
* @author mauro
*/

@ManagedBean
@RequestScoped
public class accesso {
public String login;

public String getLogin() {
return login;
}

public void setLogin(String login) {
this.login = login;
}

public accesso() {
}
}

Il file index.xhtml contiene il form per l'invio del nome utente, incolla il codice all'interno dei tag h:body

<h:form>

<h2>login</h2>
Login: <h:inputText id="login" size="30" required="true" requiredMessage="inserisci nome utente" value="#{accesso.login}" />

<h:/form>
Iinfine crea il file login.xhtml che visualizza il testo inviato. Attenzione! Anche questo codice dovrà compreso all'interno dei tag h:form, così come il campo input per l'invio del testo.
    
<h:form>

Benvenuto: <h:outputText value="#{accesso.login}" />
            <h:commandLink value="torna alla home" action="index"/>

<h:/form>---