Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Con java è possibile separare l'html dal codice della servlet?

    Premetto che ho letto solo un capitoletto sulle servlet e quindi non sono molto esperto però volevo chiedervi se c'era un sistema per separare il codice della servlet dall'html perché altrimenti la realizzazione di siti dinamici un pochetto più complessi diventa praticamente improponibile...

    Detto in altro modo io vorrei editare il campo value di un tag input premendo sul bottone di un tag form che ha come action il nome della servlet disegnata senza dover ridisegnare tutta la pagina ogni volta.

    Ecco l'esempio che vorrei poter modificare separando, possibilmente le 2 parti:

    codice:
    package servlet;
    
    //A simple loan calculator servlet. 
    import javax.servlet.*; 
    import javax.servlet.http.*; 
    import java.io.*; 
    import java.text.*; 
    
    public class RegPayS extends HttpServlet { 
    double principal; // original principal 
    double intRate;   // interest rate 
    double numYears;  // length of loan in years 
    
    /* Number of payments per year.  You could 
      allow this value to be set by the user. */ 
    final int payPerYear = 12; 
    
    NumberFormat nf; 
    
    public void doGet(HttpServletRequest request, 
                     HttpServletResponse response) 
     throws ServletException, IOException {  
     String payStr = ""; 
    
     // Create a number format. 
     nf = NumberFormat.getInstance(); 
     nf.setMinimumFractionDigits(2); 
     nf.setMaximumFractionDigits(2); 
    
     // Get the parameters. 
     String amountStr = request.getParameter("amount"); 
     String periodStr = request.getParameter("period"); 
     String rateStr = request.getParameter("rate"); 
    
     try {  
       if(amountStr != null && periodStr != null && 
          rateStr != null) { 
         principal = Double.parseDouble(amountStr); 
         numYears = Double.parseDouble(periodStr); 
         intRate = Double.parseDouble(rateStr) / 100; 
    
         payStr = nf.format(compute()); 
       } 
       else { // one or more parameters missing 
         amountStr = ""; 
         periodStr = ""; 
         rateStr = ""; 
       } 
     } catch (NumberFormatException exc) { 
       // Take appropriate action here. 
     } 
    
     // Set the content type. 
     response.setContentType("text/html"); 
    
     // Get the output stream. 
     PrintWriter pw = response.getWriter(); 
    
     // Display the necessary HTML. 
     pw.print("<html><body>" + 
              "<form name=\"Form1\"" + 
              " action=\"RegPayS\">" + 
              "<B>Enter amount to finance:</B>" + 
              " <input type=textbox name=\"amount\"" + 
              " size=12 value=\""); 
     pw.print(amountStr + "\">"); 
     pw.print("<BR><B>Enter term in years:</B>" + 
              " <input type=textbox name=\"period\""+ 
              " size=12 value=\""); 
     pw.println(periodStr + "\">"); 
     pw.print("<BR><B>Enter interest rate:</B>" + 
              " <input type=textbox name=\"rate\"" + 
              " size=12 value=\""); 
     pw.print(rateStr + "\">"); 
     pw.print("<BR><B>Monthly Payment:</B>" + 
              " <input READONLY type=textbox" + 
              " name=\"payment\" size=12 value=\""); 
     pw.print(payStr + "\">"); 
     pw.print("<BR><P><input type=submit value=\"Submit\">"); 
     pw.println("</form> </body> </html>");  
    }  
    
    // Compute the loan payment. 
    double compute() { 
     double numer; 
     double denom; 
     double b, e; 
    
     numer = intRate * principal / payPerYear;  
    
     e = -(payPerYear * numYears); 
     b = (intRate / payPerYear) + 1.0; 
    
     denom = 1.0 - Math.pow(b, e); 
    
     return numer / denom; 
    } 
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    volevo chiedervi se c'era un sistema per separare il codice della servlet dall'html
    Sì, principalmente JSP: Java Server Pages. (in generale qualunque libreria/framework di template engine).

    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    senza dover ridisegnare tutta la pagina ogni volta.
    Senza dover inviare al client tutta la pagina? Di per sé no. Il client fa una request HTTP e il server risponde con una response HTTP "completa" (un documento intero, un PDF, una pagina HTML, ecc...).

    E per precisare: "no" .... a meno di usare tecniche AJAX, che fanno uso nel browser di request "asincrone" tramite Javascript e che ricevono dati o anche pezzi di pagina per andare a modificare solo una parte del DOM della pagina. Ma, scusa se lo dico, viste le domande che stai ponendo, ti chiederei di dimenticare quest'ultimo paragrafo.


    P.S. Il servlet container, data la dichiarazione di una Servlet nel web.xml, tipicamente crea 1 sola istanza della Servlet e poi fa in modo che più thread possano invocare in modo concorrente (a seconda delle richieste, ovvio) il metodo service (che poi dispaccia a uno dei doXYZ). Questo ha una implicazione importante: tenere variabili di istanza nella Servlet è estremamente critico se i dati sono mutabili in base alle richieste (a meno che siano costanti o valori inizializzati e fissati al init() ).
    Ultima modifica di andbin; 27-12-2013 a 23:45
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Finalmente capisco a cosa servono queste JSP. Hai hai hai, il mio libro si dimentica pure di darne una definizione! Potresti farmi un esempio tu anche molto semplice in modo che possa capire per poi adattare al mio script? Per esempio scrivo 1 nel primo tag input, 2 nel secondo e nel tergo leggo 3 dopo aver premuto sul pulsante "calcola" o anche qualcosa di più semplice che magari trovi già pronto su uno dei tuoi libroni su cui hai imparato ad usare questi strumenti.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    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).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Uff.... mi sono accorto solo adesso che in Potenza dovevo denominare il primo campo 'potenza' .... non 'base'. L'ho scritto talmente velocemente ......
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    yesss!!!! che belle che sono le pagine jsp!

    Grazie andbin credo di aver capito bene tutto il codice a parte questa riga qui che non so a cosa serva e cosa dica:

    codice:
    private static final long serialVersionUID = 1L;
    e queste:

    codice:
    <url-pattern>/potenze-di-due</url-pattern>
    codice:
    <form action="<c:url value='/potenze-di-due'/>" method="post">
    che non contengolo la varola view (come fa Eclipse a capire che potenze-di-due.jsp è dentro view?!?

    Inoltre il mio file xml è leggermente diverso:

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>EsempioJSP</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      <servlet>
        <description></description>
        <display-name>PotenzeDiDueServlet</display-name>
        <servlet-name>PotenzeDiDueServlet</servlet-name>
        <servlet-class>com.esempio.PotenzeDiDueServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>PotenzeDiDueServlet</servlet-name>
        <url-pattern>/PotenzeDiDueServlet</url-pattern>
        <url-pattern>/potenze-di-due</url-pattern>
      </servlet-mapping>
    </web-app>
    E' stato scritto interamente da Eclipse tranne questa riga aggiunta da me:

    <url-pattern>/potenze-di-due</url-pattern>
    Questi sono gli errori in Problems

    codice:
    Description    Resource    Path    Location    Type
    Element (center) is obsolete. Its use is discouraged in HTML5 documents.    ColorGetServlet.html    /SitoProvaLinux/WebContent    line 3    HTML Problem
    The serializable class MaxWD does not declare a static final serialVersionUID field of type long    MaxWD.java    /RegPay/src/contenitore    line 15    Java Problem
    No end tag (</center>).    ColorGetServlet.html    /SitoProvaLinux/WebContent    line 3    HTML Problem
    The serializable class InitInv does not declare a static final serialVersionUID field of type long    InitInv.java    /RegPay/src/contenitore    line 14    Java Problem
    The serializable class Annuity does not declare a static final serialVersionUID field of type long    Annuity.java    /RegPay/src/contenitore    line 17    Java Problem
    No end tag (</center>).    PostParameters.html    /SitoProvaLinux/WebContent    line 3    HTML Problem
    Undefined attribute value (textbox).    servletfinanziarie.html    /ServletFinanziarie/WebContent    line 7    HTML Problem
    Element (center) is obsolete. Its use is discouraged in HTML5 documents.    PostParameters.html    /SitoProvaLinux/WebContent    line 3    HTML Problem
    No end tag (</B>).    PostParameters.html    /SitoProvaLinux/WebContent    line 9    HTML Problem
    No end tag (</form>).    PostParameters.html    /SitoProvaLinux/WebContent    line 4    HTML Problem
    The serializable class ColorGetServlet does not declare a static final serialVersionUID field of type long    ColorGetServlet.java    /SitoProvaLinux/src/contenitore    line 7    Java Problem
    Undefined attribute value (textbox).    servletfinanziarie.html    /ServletFinanziarie/WebContent    line 16    HTML Problem
    No end tag (</B>).    PostParameters.html    /SitoProvaLinux/WebContent    line 13    HTML Problem
    Undefined attribute value (textbox).    PostParameters.html    /SitoProvaLinux/WebContent    line 10    HTML Problem
    Undefined attribute value (textbox).    servletfinanziarie.html    /ServletFinanziarie/WebContent    line 10    HTML Problem
    Undefined attribute value (textbox).    servletfinanziarie.html    /ServletFinanziarie/WebContent    line 13    HTML Problem
    Undefined attribute value (textbox).    PostParameters.html    /SitoProvaLinux/WebContent    line 14    HTML Problem
    The serializable class RegPayS does not declare a static final serialVersionUID field of type long    RegPayS.java    /ServletFinanziarie/src/servlet    line 9    Java Problem
    The serializable class AddCookieServlet does not declare a static final serialVersionUID field of type long    AddCookieServlet.java    /SitoProvaLinux/src/contenitore    line 7    Java Problem
    The serializable class FutVal does not declare a static final serialVersionUID field of type long    FutVal.java    /RegPay/src/contenitore    line 13    Java Problem
    Enumeration is a raw type. References to generic type Enumeration<E> should be parameterized    PostParametersServlet.java    /SitoProvaLinux/src/contenitore    line 18    Java Problem
    The serializable class PostParametersServlet does not declare a static final serialVersionUID field of type long    PostParametersServlet.java    /SitoProvaLinux/src/contenitore    line 7    Java Problem
    The serializable class ProgressRenderer does not declare a static final serialVersionUID field of type long    ProgressRenderer.java    /DownloadManager/src/contenitore    line 8    Java Problem
    The project cannot be built until build path errors are resolved    SitoProva        Unknown    Java Problem
    Class is a raw type. References to generic type Class<T> should be parameterized    DownloadsTableModel.java    /DownloadManager/src/contenitore    line 16    Java Problem
    The serializable class DownloadsTableModel does not declare a static final serialVersionUID field of type long    DownloadsTableModel.java    /DownloadManager/src/contenitore    line 8    Java Problem
    The serializable class DownloadManager does not declare a static final serialVersionUID field of type long    DownloadManager.java    /DownloadManager/src/contenitore    line 11    Java Problem
    The serializable class RegPay does not declare a static final serialVersionUID field of type long    RegPay.java    /RegPay/src/contenitore    line 13    Java Problem
    The serializable class DateServlet does not declare a static final serialVersionUID field of type long    DateServlet.java    /SitoProvaLinux/src/contenitore    line 8    Java Problem
    Undefined attribute value (textbox).    AddCookieServlet.html    /SitoProvaLinux/WebContent    line 8    HTML Problem
    The serializable class ColorPostServlet does not declare a static final serialVersionUID field of type long    ColorPostServlet.java    /SitoProvaLinux/src/contenitore    line 7    Java Problem
    No end tag (</center>).    AddCookieServlet.html    /SitoProvaLinux/WebContent    line 3    HTML Problem
    Element (center) is obsolete. Its use is discouraged in HTML5 documents.    AddCookieServlet.html    /SitoProvaLinux/WebContent    line 3    HTML Problem
    Undefined attribute value (textbox).    PostParameters.html    /SitoProva/WebContent    line 15    HTML Problem
    No end tag (</B>).    PostParameters.html    /SitoProva/WebContent    line 14    HTML Problem
    Undefined attribute value (textbox).    PostParameters.html    /SitoProva/WebContent    line 19    HTML Problem
    No end tag (</B>).    PostParameters.html    /SitoProva/WebContent    line 18    HTML Problem
    Element (center) is obsolete. Its use is discouraged in HTML5 documents.    PostParameters.html    /SitoProva/WebContent    line 8    HTML Problem
    No end tag (</center>).    ColorPostServlet.html    /SitoProvaLinux/WebContent    line 3    HTML Problem
    Element (center) is obsolete. Its use is discouraged in HTML5 documents.    ColorPostServlet.html    /SitoProvaLinux/WebContent    line 3    HTML Problem
    Unbound classpath container: 'JRE System Library [jre7]' in project 'SitoProva'    SitoProva        Build path    Build Path Problem
    No end tag (</form>).    PostParameters.html    /SitoProva/WebContent    line 9    HTML Problem
    The serializable class GetCookiesServlet does not declare a static final serialVersionUID field of type long    GetCookiesServlet.java    /SitoProvaLinux/src/contenitore    line 7    Java Problem
    No end tag (</center>).    PostParameters.html    /SitoProva/WebContent    line 8    HTML Problem
    Questo invece quello che vedo dopo la renderizzazione:

    HTTP Status 404 -

    type Status report

    message

    description The requested resource is not available.

    Apache Tomcat/6.0.37
    ho anche provato ad aggiungere views al codice ma nulla...

    P.S.: Come faccio su Eclipse ad andare a modificare quel valore di tomcat (2.4 o 2.5) di cui parlavamo in precedenza?
    Ultima modifica di giannino1995; 02-01-2014 a 14:20

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    questa riga qui che non so a cosa serva e cosa dica:

    codice:
    private static final long serialVersionUID = 1L;
    Ignoralo .... HttpServlet è Serializable e il serialVersionUID serve per il "versionamento" delle classi serializzabili. La Servlet che ho postato l'ho generata da wizard di Eclipse e serialVersionUID l'ha messo in automatico. Senza questo serialVersionUID, Eclipse tra l'altro si lamenterebbe con un warning.

    Anzi .... invece di ignorarlo, dovresti farti un minimo di "cultura" sulla serializzazione degli oggetti. Non è che serve tutti i giorni, ma se la conosci hai sicuramente qualcosa in più ....

    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    e queste:

    codice:
    <url-pattern>/potenze-di-due</url-pattern>
    codice:
    <form action="<c:url value='/potenze-di-due'/>" method="post">
    che non contengolo la varola view (come fa Eclipse a capire che potenze-di-due.jsp è dentro view?!?
    Non hai ancora compreso come funziona tutto il ciclo della request/response, allora.

    <c:url> serve in generale per "riscrivere" un URL. Il termine riscrivere indica la capacità di manipolare un URL aggiungendo/cambiando certe parti. E per <c:url> la capacità principale è il fatto di poter aggiungere al URL il Session ID (ovviamente solo SE necessario). E inoltre siccome "sa" del ServletContext è in grado di generare un url a partire dalla "server" root.

    In:
    <c:url value='/potenze-di-due'/>

    il '/' indicato in rosso è relativo alla "context" root, perché <c:url> "sa" appunto del contesto della applicazione. L'URL generato è qualcosa tipo:

    /nomecontesto/potenze-di-due
    oppure se serve il session ID, qualcosa del tipo:
    /nomecontesto/potenze-di-due;jsessionid=1C35DDFC4E4B951968AE807A70C8AC52

    Dove nomecontesto è chiaramente il nome del contesto della applicazione. Il vantaggio di <c:url> (ignorando per un attimo la capacità di aggiungere il session ID) è almeno il fatto che è in grado di risolvere l'URL aggiungendo in automatico il nome del contesto.

    Qui però come vedi non c'è nulla relativo a WEB-INF/views. Perché questo è un aspetto interno alla webapp. Tutto cio che c'è sotto WEB-INF è totalmente nascosto al client. Le specifiche Servlet dicono chiaramente che il servlet container non deve "esporre" tramite HTTP alcunché di quello sotto WEB-INF. Solo la webapp può accederci.

    Quindi quando si invia il form, la action fa innanzitutto eseguire la servlet PotenzeDiDueServlet. Poi la servlet ad un certo punto fa un "forward" a "/WEB-INF/views/potenze-di-due.jsp". Il ciclo di request/response non termina quindi con la servlet ma viene semplicemente "passata la palla" ad un'altra risorsa interna della webapp che è appunto la pagina potenze-di-due.jsp.


    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Inoltre il mio file xml è leggermente diverso:
    Non ha importanza (fintanto che è corretto dal punto di vista di sintassi/struttura). Io ho postato solo dichiarazione/mapping della servlet, non il resto.
    Fino alle specifiche Servlet 2.3 i tag figli di primo livello dentro <web-app> (es. <servlet>, <servlet-mapping>, ecc...) dovevano essere in un ordine ben preciso, perché il web.xml era validato tramite un DTD che imponeva una struttura abbastanza rigida. A partire dalle specifiche 2.4 la validazione è fatta con uno schema XSD che ha "allentato" un pochino le restrizioni, percui è possibile mettere <welcome-file-list> prima o dopo <servlet>, <servlet-mapping> prima o dopo <servlet>, ecc....

    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    Element (center) is obsolete. Its use is discouraged in HTML5 documents. ColorGetServlet.html /SitoProvaLinux/WebContent line 3 HTML Problem
    The serializable class MaxWD does not declare a static final serialVersionUID field of type long MaxWD.java /RegPay/src/contenitore line 15 Java Problem
    No end tag (</center>). ColorGetServlet.html /SitoProvaLinux/WebContent line 3 HTML Problem
    The serializable class InitInv does not declare a static final serialVersionUID field of type long InitInv.java /RegPay/src/contenitore line 14 Java Problem
    The serializable class Annuity does not declare a static final serialVersionUID field of type long Annuity.java /RegPay/src/contenitore line 17 Java Problem
    No end tag (</center>). PostParameters.html /SitoProvaLinux/WebContent line 3 HTML Problem
    E tutto quello che ho segnato in rosso (giusto alcuni) cosa sono? Secondo te come faccio io a sapere cosa è MaxWD.java ???
    Che cosa stavi cercando di fare? Hai scaricato e/o creato altro? Come faccio a capire così su 2 piedi cosa hai fatto?

    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    ho anche provato ad aggiungere views al codice ma nulla...

    P.S.: Come faccio su Eclipse ad andare a modificare quel valore di tomcat (2.4 o 2.5) di cui parlavamo in precedenza?
    Ascolta, crea un nuovo Dynamic Web Project seguendo quanto avevo detto qui e aggiungi i pezzi per il mio esempio delle potenze di due.
    Non puoi sbagliare .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.