Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Problema Contatore

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    26

    Problema Contatore

    Ciao, sentite non capisco un errore. Ho fatto un contatore, anzi aprii proprio un topic il codice è il seguente, è funzione pure bene:


    nomeClasseServlet{

    @EJB
    private ContatoriFacadeLocal contatoriFacade;


    //Oggetto sessione;
    HttpSession oggettoSessione = request.getSession(true);
    Integer intero = 0;

    intero = (Integer) oggettoSessione.getAttribute("contatore");

    //Oggetto Contatore;
    Contatori oggettoContatore = new Contatori();

    //Controllo se la sessione è nuova;
    if (oggettoSessione.getAttribute("contatore") == null) {

    int incrementa = oggettoContatore.getContatorehome();
    ++incrementa;
    oggettoContatore.setContatorehome(incrementa);
    contatoriFacade.incrementaAccesso(oggettoContatore );


    } else {

    }

    }
    Soltanto che se il seguente codice vado a metterlo all'interno di una JSP non funge più, dicendomi nullpoint:



    <%@page import = "javax.servlet.http.HttpSession" %>
    <%@page import = "javax.servlet.http.HttpServletResponse" %>
    <%@page import = "javax.servlet.http.HttpServletRequest" %>
    <%@page import = "javax.servlet.http.HttpServlet" %>
    <%@page import = "entities.contatori.Contatori" %>



    <%
    entities.contatori.ContatoriFacade conta = null;
    %>

    <%
    HttpSession oggettoSessione = request.getSession(true);
    Integer intero = 0;

    intero = (Integer) oggettoSessione.getAttribute("contatore");
    Contatori oggettoContatore = new Contatori();
    if (oggettoSessione.getAttribute("contatore") == null) {
    int incrementa = oggettoContatore.getContatorehome();
    ++incrementa;
    oggettoContatore.setContatorehome(incrementa);
    conta.incrementaAccesso(oggettoContatore);

    } else {
    }

    %>

  2. #2
    Nella servlet hai usato la tecnica della Injection (@EJB) per creare l'istanza di 'conta', mentre nella JSP tale oggetto viene inizializzato a null è rimane null fino all'invocaizone del metodo 'conta.incrementaAccesso(oggettoContatore);'. In una JSP se non vado errato non è possibiole usare la Injection, in ogni caso puoi usare il metodo classico di lookup degli EJB, inserendo un metodo privato all'interno della stessa JSP:

    Codice PHP:

    <%!private ContatoriFacadeLocal lookupContatoriFacade() {
            try {
                
    Context c = new InitialContext();
                return (
    ContatoriFacadeLocalc.lookup("java:comp/env/....");
            } catch (
    NamingException ne) {
                
    Logger.getLogger(getClass().getName()).log(Level.SEVERE"exception caught"ne);
                throw new 
    RuntimeException(ne);
            }
        }
    %> 
    e inizializzando 'conta' attraverso questo nuovo metodo:

    Codice PHP:

    <%
    entities.contatori.ContatoriFacade conta lookupContatoriFacade();
    %> 
    ciao

  3. #3

    Contatore

    Si infatti, non puoi utilizzare nella JSP la Injection, oppure puoi fare semplicemente:


    CODICE JSP:


    <%
    HttpSession oggettoSessione = request.getSession(true);
    Integer intero = 0;



    intero = (Integer) oggettoSessione.getAttribute("contatore");
    if (oggettoSessione.getAttribute("contatore") == null) {

    %>

    <jsp:forward page="ContatoreHome" />

    <%
    } else {
    }
    %>
    e con la forward ti chiami la servlet , poi ovviamente all'interno della servlet inserisci una RequestDispatcher per farla tornare alla JSP che t'interessa:


    request.getRequestDispatcher("nomejsp.jsp").forwar d(request, response);
    ..:: ( Erwittsy ) ::..

  4. #4

    Re: Contatore

    Originariamente inviato da Erwittsy
    poi ovviamente all'interno della servlet inserisci una RequestDispatcher per farla tornare alla JSP che t'interessa:
    In questo modo se volessi fare il lookup dell EJB all'interno di un altra JSP, es. 'nomejsp1.jsp', dovrei creare una nuova servlet molto simile alla tua in cui cambia solo il nome della JSP verso cui fare il forward:

    Codice PHP:

    request
    .getRequestDispatcher("nomejsp1.jsp").forward(requestresponse); 
    a meno che non passi come parametro tale nome. In ogni caso mi sembra una soluzione poco corretta.

    Comunque pupys87 nella JSP postata da te all'inizio non c' è traccia di tag HTML per cui io ti consigliere di usare, a meno che non sia un esercizio didattico il tuo, la servlet. Considera che ogni JSP viene trasformata, in fase di deploy o di prima invocazione (a seconda della configurazione del server), in una servlet. Per esempio:

    Codice PHP:

    <html>
    <
    head>
    ....
    </
    head>
    <
    body>
    <
    h1><%="Hello World!"%></h1>
    ....
    </
    body>
    </
    html
    diventa:

    Codice PHP:
    ...
    out.println("<html>");
    out.println("<head>");
    ....
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>");
    out.println("Hello World!");
    out.println("</h1>");
    ...
    out.println("</body>");
    out.println("</html>");
    ... 
    diciamo che la JSP viene usata per evitare di scrivere ogni volta out.println(..);
    Ti consiglio di studiare il paradigma MVC per capire come e quando usare JSP o Servlet.

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.