
Originariamente inviata da
giannino1995
Potresti farmi un esempio tu anche molto semplice in modo che possa capire per poi adattare al mio script?
Ok, un esempio sul calcolo delle potenze di due, tutto sommato semplice ma che comunque mostra già un po' di cose e concetti.
1) Innanzitutto vai su: http://archive.apache.org/dist/jakar...dard/binaries/
e scarica il file jakarta-taglibs-standard-1.1.2.zip che è la Apache Standard Taglib, una implementazione di JSTL (JSP Standard Tag Library). La versione di JSTL è la 1.1.2, esistono implementazioni più recenti ma non ti preoccupare, questa tra l'altro va bene per le specifiche 2.4 delle Servlet che hai già usato nella tua webapp.
Dentro lo zip, nella cartella "lib" ci trovi 2 file: jstl.jar e standard.jar. Solo questi due copiali nella cartella WEB-INF/lib del tuo progetto in Eclipse.
2) Crea una classe "bean" Potenze:
codice:
package com.esempio;
import java.math.BigInteger;
public class Potenza {
private int base;
private BigInteger valore;
public Potenza(int base, BigInteger valore) {
this.base = base;
this.valore = valore;
}
public int getBase() {
return base;
}
public void setBase(int base) {
this.base = base;
}
public BigInteger getValore() {
return valore;
}
public void setValore(BigInteger valore) {
this.valore = valore;
}
}
3) Crea una servlet:
codice:
package com.esempio;
import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PotenzeDiDueServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/potenze-di-due.jsp");
rd.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String daPotenzaParam = request.getParameter("daPotenza");
String aPotenzaParam = request.getParameter("aPotenza");
String daPotenzaError = null;
String aPotenzaError = null;
int daPotenza = 0, aPotenza = 0;
ArrayList<Potenza> potenze = null;
try {
daPotenza = Integer.parseInt(daPotenzaParam);
} catch (NumberFormatException nfe) {
daPotenzaError = "Numero non in formato valido";
}
try {
aPotenza = Integer.parseInt(aPotenzaParam);
} catch (NumberFormatException nfe) {
aPotenzaError = "Numero non in formato valido";
}
if (daPotenza < 0) {
daPotenzaError = "Numero negativo non valido";
}
if (aPotenza < 0) {
aPotenzaError = "Numero negativo non valido";
}
if (daPotenzaError == null && aPotenzaError == null) {
if (aPotenza < daPotenza) {
aPotenzaError = "Numero inferiore a Da potenza";
} else {
potenze = new ArrayList<Potenza>();
BigInteger due = BigInteger.valueOf(2);
for (int p = daPotenza; p <= aPotenza; p++) {
BigInteger valore = due.pow(p);
potenze.add(new Potenza(p, valore));
}
}
}
request.setAttribute("daPotenza", daPotenzaParam);
request.setAttribute("aPotenza", aPotenzaParam);
request.setAttribute("daPotenzaError", daPotenzaError);
request.setAttribute("aPotenzaError", aPotenzaError);
request.setAttribute("listaPotenze", potenze);
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/potenze-di-due.jsp");
rd.forward(request, response);
}
}
4) Nella cartella WEB-INF del progetto crea una nuova cartella "views" (viste in inglese) e dentro metti la seguente pagina JSP:
potenze-di-due.jsp
codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Potenze di due</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
.errore { color: red; }
.risultati { padding-top: 2em; }
</style>
</head>
<body>
<h1>Potenze di due</h1>
<form action="<c:url value='/potenze-di-due'/>" method="post">
<p>
Da potenza <input name="daPotenza" type="text" size="5" value="<c:out value='${daPotenza}'/>">
<span class="errore"><c:out value="${daPotenzaError}"/></span>
</p>
<p>
A potenza <input name="aPotenza" type="text" size="5" value="<c:out value='${aPotenza}'/>">
<span class="errore"><c:out value="${aPotenzaError}"/></span>
</p>
<p><input type="submit" value="INVIA"></p>
</form>
<c:if test="${not empty listaPotenze}">
<div class="risultati">
<table border="1" cellspacing="0" cellpadding="4">
<c:forEach items="${listaPotenze}" var="potenza">
<tr>
<td>2<sup><c:out value="${potenza.base}"/></sup></td>
<td><c:out value="${potenza.valore}"/></td>
</tr>
</c:forEach>
</table>
</div>
</c:if>
</body>
</html>
5) Nel web.xml è sufficiente avere (oltre alle solite dichiarazioni iniziali):
codice:
<servlet>
<servlet-name>PotenzeDiDueServlet</servlet-name>
<servlet-class>com.esempio.PotenzeDiDueServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PotenzeDiDueServlet</servlet-name>
<url-pattern>/potenze-di-due</url-pattern>
</servlet-mapping>
La pagina sarà accessibile all'indirizzo:
http://localhost:8080/tuocontextroot/potenze-di-due
dove tuocontextroot è ovviamente il nome del tuo Context root.
P.S. in questo esempio seppur basilare, c'è molta, ripeto molta "carne al fuoco", quindi armati di pazienza, manuali/libri, documentazione online, documentazione javadoc (oltre che del framework di Java SE anche di Java EE, perlomeno delle Servlet API) e cerca di capire cosa fa. Se hai dubbi chiedi pure (magari in una nuova discussione se necessario).