Web-App JEE

di il
7 risposte

Web-App JEE

Ciao a tutti,

poco tempo fa ho creato un'applicativo java che permetteva di scompattare un file zip, leggere il file xml contenuto all'interno e permetteva anche di cercare delle "keywords" all'interno del file.
Adesso però vorrei rendere questo processo una web-application, utilizzando JEE su Intellij IDEA con "GlassFish" come application server.
Al momento ho creato il layout, importato un file xml nel progetto (inserito in WebContent) ed ho anche importato la mia classe java scritta in precedenza che permette di leggere un file xml( inserita nel src).

Tutto ciò per dire che vorrei associare quella classe ad un bottone; alla pressione del bottone vorrei che si aprisse una nuova pagina in cui viene visualizzato l'xml come previsto dalla mia classe...Qualcuno può aiutarmi? Come faccio a collegare le due cose? So che devo usare delle servlet ma non ho la più pallida idea di come agire al momento ( al momento ho creato solo il <welcome-file-list> che porta all'index e il <servlet-mapping>/<servlet> che identifica la mia classe java "XMLreader").

Anche un progetto esempio può aiutare, poi con un po' di "reverse engineering" penso di riuscire a completare tutto il progetto.

7 Risposte

  • Re: Web-App JEE

    Ragnar ha scritto:


    vorrei associare quella classe ad un bottone; alla pressione del bottone vorrei che si aprisse una nuova pagina in cui viene visualizzato l'xml come previsto dalla mia classe...
    Innanzitutto hai bisogno di una pagina web che contiene il pulsante. Può anche essere una pagina "statica", non necessariamente "dinamica".
    Il pulsante bisogna vedere come vuoi farlo. Cioè se un classico pulsante di invio di un form oppure un link <a> fatto "a pulsante" (con un po' di stilizzazione CSS). Cambia a livello grafico ovviamente ma anche nel fatto che un form lo si può inviare in GET o POST mentre un link lo si "naviga" solo in GET.
    Che sia in GET o POST, la richiesta dovrà andare verso una risorsa server-side come una Servlet. Nel modo classico/tradizionale, una Servlet la si definisce e la si "mappa" nel web.xml. Se puoi sfruttare le specifiche Servlet 3.x o superiore, è disponibile la annotazione @WebServlet che di fatto sostituisce la dichiarazione/mapping nel web.xml.

    Quali sono i dubbi esattamente? Su come sviluppare una Servlet trovi sicuramente molte risorse in rete.
  • Re: Web-App JEE

    Ti illustro la mia situazione attuale:

    Nella cartella "src" ho la mia classe java "XMLreader extends HttpServlet", una normale classe java (tra l'altro mi hai aiutato tu a crearla @andbin) con un main che esegue il metodo "read" che accetta come parametro il path di un file .xml, per poi eseguirne la lettura e contare il numero dei tag <event> ed in più manda in output alcuni dati.

    Nella cartella "web-app" ho:
    1) i miei file .jsp, un index collegato alla servlet <welcome-file-list> e "logAnalysis.jsp" con un bottone così formato:

    "<form method="post" action="healtlog">
    <button type="submit" style="background-color: lightseagreen; color: blue; width: 50%; height: 10%; margin-left: 400px">LogAnalysis</button>
    </form>"

    collegato alla ad una servlet così formata:

    <servlet>
    <description>servlet per analisi file log</description>
    <servlet-name>Healtlog</servlet-name>
    <servlet-class>Healtlog</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>Healtlog</servlet-name>
    <url-pattern>/healtlog</url-pattern>
    </servlet-mapping>

    2) il file.xml sopra citato.
    3) /web-inf/web.xml in cui ho scritto le servlet.

    Per adesso se avvio tutto l'applicativo mi ritrovo sull'index dal quale, con un link href, mi sposto sulla pagina con il bottone e se lo clicco vengo portato su una pagina con scritto "error 404".
    inoltre se cerco di avviare unicamente il main della mia classe java (senza avviare GlassFish) il terminale mi dice "Errore: impossibile trovare o caricare la classe principale XMLreader".

    Spero di essere stato abbastanza chiaro!
  • Re: Web-App JEE

    Ragnar ha scritto:


    una normale classe java (tra l'altro mi hai aiutato tu a crearla @andbin) con un main
    Giusto per chiarire: nelle webapp NON c'è e non serve il "main()"

    Ragnar ha scritto:


    <servlet-class>Healtlog</servlet-class>
    Ma hai una classe Healtlog ? Credo di no, prima dicevi che hai una XMLreader extends HttpServlet
    Tra l'altro nelle webapp Java è caldamente consigliato usare dei nomi di package per le classi.
  • Re: Web-App JEE

    Nessuna classe Healtlog, ce l'avevo in precedenza, adesso si chiama XMLreader, ho cambiato anche i nomi nelle servlet ed ho tolto il main
  • Re: Web-App JEE

    Ragnar ha scritto:


    Nessuna classe Healtlog, ce l'avevo in precedenza, adesso si chiama XMLreader, ho cambiato anche i nomi nelle servlet ed ho tolto il main
    Ok, quindi?
  • Re: Web-App JEE

    Quindi ho creato un'altra classe che gestisca "XMLreader", così fatta:

    protected void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {

    res.setContentType("text/html");
    HttpSession s0 = req.getSession();

    /* String path = "Client%20Combined%20Log.xml";
    Healthlog hp = new Healthlog();
    hp.read(path);*/

    String risultato = "a";

    s0.setAttribute("risultato", risultato);
    RequestDispatcher dis = req.getRequestDispatcher("Healthlog");
    dis.forward(req, res);
    }

    sono arrivato add ottenere il risuldato di "File: null" sulla pagina in cui dovrei ricevere i dati in output della classe XMLreader, sono sulla strada giusta?
  • Re: Web-App JEE

    andbin ha scritto:


    Ok, quindi?
    Quindi devo comunque risolvere ciò che ti avevo illustrato poco sopra
Devi accedere o registrarti per scrivere nel forum
7 risposte