Inviare pagina html da servlet

di il
8 risposte

Inviare pagina html da servlet

Salve a tutti,
vorrei un consulto su come procedere su un problema.

Ho una servlet java che deve inviare in risposta a un app android alcune informazioni.
In generale queste informazioni dovrebbero essere raccolte in una pagina html.
Il punto è che i contenuti di questa pagina sono variabili!

Fatto salvo il fatto che non posso generare una pagina html dinamicamente e poi inviare il link all'app android (per l'app la pagina è come se non esistesse no?).
Vorrei un consiglio su come ottenere l'effetto richiesto.

In linea di massima avevo pensato di creare la pagina e stoccarla sul server, e in questo modo inviare il link all'app android, ma non so se questa cosa si possa effettivamente fare. Consigli?

Grazie a tutti.

8 Risposte

  • Re: Inviare pagina html da servlet

    Kinn ha scritto:


    per l'app la pagina è come se non esistesse no?
    Che vuol dire "è come se non esistesse" !? Un URL preciso e fisso che è "mappato" sulla servlet, lo hai no? Magari potrebbe anche ricevere parametri in query string, appunto per "parametrare" la esecuzione.
    A quel punto nessuno ti impedisce di generare una response HTML "dinamica", in cui certe parti cambiano.
    Certo ... generare contenuto HTML direttamente da una servlet, con codice Java puro, non è per niente comodo né bello ma tecnicamente sarebbe possibile.

    Molto meglio se fai tutte le eventuali query su DB, logiche, ecc... e poi fai un forward interno ad una pagina JSP che si occupa solo di fare da "view" e in cui magari usi custom-tag di JSTL o altro.
    Questo è appunto quello che si fa normalmente e a livello basilare (intendo cioè senza usare framework specifici, Struts, Spring, ecc...)
  • Re: Inviare pagina html da servlet

    Scusami ma non ho pratica con la materia quindi potrei essere un po confuso.

    Se io (dopo interrogazione su db e astrazione dei dati) genero con jsp una pagina web, posso passare questa ad un app android su un terminale? e se si come?
  • Re: Inviare pagina html da servlet

    Kinn ha scritto:


    Se io (dopo interrogazione su db e astrazione dei dati) genero con jsp una pagina web, posso passare questa ad un app android su un terminale? e se si come?
    Se la Servlet fa un "forward" ad una pagina JSP, la response che il client (nel tuo caso la app android che ha fatto la request alla Servlet) riceve è il risultato della JSP, dove tutte le parti "dinamiche" (tramite expression, custom-tag o altro) vengono eseguite lato server e tutto il risultato finale generato viene inviato appunto al client.
  • Re: Inviare pagina html da servlet

    Capisco, grazie.

    Proverò, e nel caso richiederò aiuto qui. Per ora sto cercando di capire perchè non riesco a visualizzare nemmeno una stringa di risposta sull'app
  • Re: Inviare pagina html da servlet

    Kinn ha scritto:


    Capisco, grazie.

    Proverò, e nel caso richiederò aiuto qui. Per ora sto cercando di capire perchè non riesco a visualizzare nemmeno una stringa di risposta sull'app
    Non saprei come aiutarti di più (a parte farti un esempio di Servlet+forward a JSP) ... perché non conosco il contesto completo in cui stai lavorando.

    La app android apre una "web view" puntando al URL della tua Servlet? Se sì, se nella Servlet mandi pedestremente in output sulla response un pezzo di codice HTML banale, lo vedi?
  • Re: Inviare pagina html da servlet

    Ciao, grazie dell'infinita pazienza XD

    Dunque alla fine sono riuscito a mandare una semplice stringa all'app senza problemi.

    Potresti farmi un esempio banalissimo di servlet con forward a JSP?
  • Re: Inviare pagina html da servlet

    Kinn ha scritto:


    Potresti farmi un esempio banalissimo di servlet con forward a JSP?
    Certo. Molto abbozzato ma giusto per farti capire.

    Immagina di avere una classe Libro con le proprietà "titolo" e "editore" (con i corrispettivi metodi setter e/o getter getTitolo() ecc....).

    Nella Servlet:
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // ......
        
        List<Libro> libri = //.... da DB/logica ....
        
        request.setAttribute("listaLibri", libri);
    
        RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/view/lista-libri.jsp");
        dispatcher.forward(request, response);
    }
    Nella pagina in /WEB-INF/view/lista-libri.jsp:
    <%@ page pageEncoding="UTF-8" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
      ........
    </head>
    <body>
    
    <table>
    <c:forEach items="${listaLibri}" var="libro">
      <tr>
        <td><c:out value="${libro.titolo}"/></td>
        <td><c:out value="${libro.editore}"/></td>
      </tr>
    </c:forEach>
    </table>
    
    </body>
    </html>
    Il client non riceve quei <c:forEach> e <c:out> ma l'output generato dalla esecuzione sul server di questi custom-tag di JSTL (JSTL è una libreria che va chiaramente inserita nella applicazione).

    Se la lista dei libri contenesse es. 2 libri, il client riceverebbe es.:
    <html>
    <head>
      ........
    </head>
    <body>
    
    <table>
      <tr>
        <td>TITOLO 1</td>
        <td>EDITORE 1</td>
      </tr>
      <tr>
        <td>TITOLO 2</td>
        <td>EDITORE 2</td>
      </tr>
    </table>
    
    </body>
    </html>
    (qui ho semplificato ... ci sono delle righe vuote in più dovute ai custom tag, che una volta tolti ... la riga resta vuota)
  • Re: Inviare pagina html da servlet

    Grazie mille
Devi accedere o registrarti per scrivere nel forum
8 risposte