Laboratorio di sistemi Prima Web Application JSP [Java] Vogliamo

Laboratorio di sistemi
Prima Web Application
JSP [Java]
Vogliamo scrivere la nostra prima web application che legga da tastiera il nostro nome
e fornisca un messaggio di saluto.
Per costruire la nostra applicazione creiamo con NetBeans un nuovo progetto. File >
New Project... > Web > Web Application. Diamo un nome (PrimaWebApp).
Confermiamo tutte le impostazioni predefinite. Facciamo solo attenzione
all'impostazione del Server: scegliamo Tomcat 5.5.
Modalità 1) Usiamo un form e una servlet (creiamo quindi due file: tasto destro del
mouse sul nome del progetto > New > HTML... (form.htm); poi New > Servlet...
(Saluto.java). Per eseguire l'applicazione, tasto destro del mouse sul nome del file
html > Run File. In tal modo, viene attivato Tomcat.
File form.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h3>Form di prova</h3>
<!-- aggiungere al codice HTML il seguente codice: -->
<form action="Saluto" name="provaFrm" method="post" >
<input type="text" name="nomeTxt" value="" />
<input type="submit" value="Invia" name="inviaBtn" />
</form>
</body>
</html>
Servlet Saluto.java
package provaPkg;
import
import
import
import
java.io.*;
java.net.*;
javax.servlet.*;
javax.servlet.http.*;
/**
* @author maurizio
*/
public class Saluto extends HttpServlet {
// qui possono esser presenti delle variabili attributo; ad ogni modo, per motivi
// che sarebbe troppo lungo spiegare in questa sede, le variabili attributo non si
// dovrebbero utilizzare nelle servlet
int i;
public void init(ServletConfig config) {
// per esempio inizializziamo la variabile i
i = 10;
}
primawebapp.pdf
Pag. 1/9
Cozzetto ©
Laboratorio di sistemi
Prima Web Application
JSP [Java]
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// nel form usiamo il metodo POST
doPost(request,response);
}
// metodo richiamato da doGet e da doPost
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
//TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Saluto</title>");
out.println("</head>");
out.println("<body>");
out.println("<h3>Servlet Saluto all'indirizzo (relativo) " +
request.getContextPath () + "</h3>");
String nome = request.getParameter("nomeTxt");
if (nome.equals("")) nome="Maurizio";
out.println("Ciao "+nome+". Benvenuto alla tua prima web
application.<br/>");
out.println("Questo codice è generato da una Servlet.");
out.println("<br/>Il valore della variabile i="+i);
out.println("</body>");
out.println("</html>");
}
} finally {
out.close();
}
// metodo richiamato quando si richiede un "get"
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
// metodo richiamato quando si richiede un "post"
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
primawebapp.pdf
Pag. 2/9
Cozzetto ©
Laboratorio di sistemi
Prima Web Application
JSP [Java]
// breve descrizione della servlet
public String getServletInfo() {
return "Prima Web Application di prova";
}
public void destroy() {
// per esempio cambiamo il valore di i
i = 4;
}
} // fine servlet Saluto
Modalità 2) Usiamo una sola pagina jsp (la pagina conterrà sia il codice HTML che il
codice jsp). Modifichiamo il codice della pagina index.jsp (che esiste già) nella maniera
seguente. Per eseguire l'applicazione, tasto destro del mouse sul file index.jsp > Run
File (verrà eseguita anche la compilazione, qualora non sia già stata effettuata).
Pagina index.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
primawebapp.pdf
Pag. 3/9
Cozzetto ©
Laboratorio di sistemi
Prima Web Application
JSP [Java]
<title>JSP Page</title>
</head>
<body>
<h3>La tua prima web application</h3>
<%
// Se è stato premuto il tasto submit
if (request.getParameter("inviaBtn")!=null) {
String nome = request.getParameter("nomeTxt");
// se l'utente ha scritto il suo nome
if (!nome.equals("")) {
out.println("Ciao "+nome+". Benvenuto alla tua prima web application.");
out.println("Questo codice è generato da una pagina jsp.<br/><br/>");
}
} %>
<form action="${request.requestURI}" name="provaFrm">
Scrivi il tuo nome <input type="text" name="nomeTxt" value="" />
<input type="submit" name="inviaBtn" value="Invia"/>
</form>
</body>
</html>
requestURI è un metodo dell'oggetto predefinito (o implicito) request (che denota la
richiesta effettuata al server) che restituisce il nome della pagina web corrente.
getParameter(“nomeTxt”) è il metodo dell'oggetto request che restituisce il contenuto
della casella testuale nomeTxt.
primawebapp.pdf
Pag. 4/9
Cozzetto ©
Laboratorio di sistemi
Prima Web Application
JSP [Java]
Il metodo prescelto questa volta è il “get” (se nel form non scriviamo il metodo in
maniera esplicita, il sistema assume “get”).
Modalità 3) Un'unica pagina jsp che fa uso delle librerie JSTL (Jsp Standard Tag
Library). Ricordiamoci di includere nel nostro progetto tali librerie (Tasto destro del
mouse sul progetto > Proprietà > Libraries > Add Library > JSTL 1.1). Creiamo
adesso una nuova pagina jsp: tasto destro del mouse sul nome del progetto > New >
JSP...(index2.jsp).
Pagina index2.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h3>Prima web application!</h3>
<form action="${request.requestURI}" name="provaFrm">
Scrivi il tuo nome <input type="text" name="nomeTxt" value="" />
<input type="submit" name="inviaBtn" value="Invia"/>
</form>
<c:if test="${!empty param.inviaBtn}">
<c:set var="nome" value="${param.nomeTxt}"/>
<c:if test="${!empty nome}">
<br/>Benvenuto <c:out value="${param.nomeTxt}"/>.
Questo codice è generato da una pagina jsp.
</c:if>
</c:if>
</body>
</html>
param è un oggetto predefinito e contiene tutti i parametri del form.
primawebapp.pdf
Pag. 5/9
Cozzetto ©
Laboratorio di sistemi
Prima Web Application
JSP [Java]
Modalità 4) Usiamo una pagina web (index3.jsp) e una classe java (javabean).
Maggiori approfondimenti sul concetto di javabean saranno affrontati in seguito.
Ricordiamoci di includere le librerie JSTL, come illustrato nella modalità 3. Tasto
destro del mouse sul nome del progetto > New > Java Class...(MessaggioBean.java)
File MessaggioBean.java
/**
*
* MessaggioBean.java
*/
package provaPkg;
/**
*
* @author maurizio
*/
public class MessaggioBean implements java.io.Serializable {
private String saluto;
private String nome;
public MessaggioBean() {
saluto="Ciao";
nome="Maurizio";
}
primawebapp.pdf
Pag. 6/9
Cozzetto ©
Laboratorio di sistemi
Prima Web Application
JSP [Java]
public MessaggioBean(String saluto, String nome) {
this.saluto=saluto;
this.nome=nome;
}
public String getSaluto() {
return saluto;
}
public void setSaluto(String saluto) {
this.saluto=saluto;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome=nome;
}
} // fine JavaBean
File index3.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h3>Uso di una classe (javabean)</h3>
<jsp:useBean id="messaggio" class="provaPkg.MessaggioBean"/>
<form action="${request.requestURI}" name="provaFrm">
Scrivi il tuo nome <input type="text" name="nome" value="" />
<input type="submit" name="inviaBtn" value="Invia"/>
</form>
<c:if test="${!empty param.inviaBtn}">
<jsp:setProperty name="messaggio" property="*"/>
<jsp:setProperty name="messaggio" property="saluto" value="Benvenuto"/>
<br/><jsp:getProperty name="messaggio" property="saluto"/>
primawebapp.pdf
Pag. 7/9
Cozzetto ©
Laboratorio di sistemi
Prima Web Application
JSP [Java]
<jsp:getProperty name="messaggio" property="nome"/>.
Questo codice fa uso di un javabean.
</c:if>
</body>
</html>
L'asterisco che appare precedentemente ci consente di associare tutti i campi del form
agli attribuiti della classe (noi tuttavia utilizziamo un solo attribuito) per cui il nome
del parametro del form deve essere nome e non nomeTxt.
Se non viene inserito nessun valore, il sistema assume come nome Maurizio. Se viene
fornito un nome, appare il messaggio di benvenuto per quel nome. Il messaggio di
saluto è “settato” a “Benvenuto”. Se non si “setta” il messaggio di saluto, appare
“Ciao”.
Modalità 5) Sempre nell'ipotesi di voler utilizzare la classe (javabean)
MessaggioBean, creiamo il file index4.jsp con la procedura indicata precedentemente
File index4.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
primawebapp.pdf
Pag. 8/9
Cozzetto ©
Laboratorio di sistemi
Prima Web Application
JSP [Java]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h3>Uso di una classe (javabean)</h3>
<form action="${request.requestURI}" name="provaFrm">
Scrivi il tuo nome <input type="text" name="nomeTxt" value="" />
<input type="submit" name="inviaBtn" value="Invia"/>
</form>
<%
// istanziamo l'oggetto messaggio
provaPkg.MessaggioBean messaggio = new provaPkg.MessaggioBean();
// Se è stato premuto il tasto submit
if (request.getParameter("inviaBtn")!=null) {
messaggio.setSaluto("Benvenuto");
String nome = request.getParameter("nomeTxt");
if (nome.equals("") || nome==null) {
nome = messaggio.getNome();
}
String saluto = messaggio.getSaluto();
out.println("<br/>"+saluto+" "+nome+". Benvenuto alla tua prima web
application.");
out.println("Questo codice è generato da una pagina jsp.<br/><br/>");
}
%>
</body>
</html>
L'output è comunque simile a quello della modalità 4.
primawebapp.pdf
Pag. 9/9
Cozzetto ©