Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Ho mappato il capo username con @Column all'interno dell'Entity Bean Utente, se era questo che intendevi!!! Ma il problema persiste!!!

    codice:
    package my.streetsoccer;
    
    import java.io.Serializable;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Column;
    import javax.persistence.Table;
    import javax.persistence.NamedQuery;
    
    
    @Entity
    @Table(name = "UTENTE")
    public class Utente implements Serializable {
        
        private static final long serialVersionUID = 1L;
        private int id;
        private String nome;
        private String cognome;
        private String email;
        private String username;
        private String password;
        
        public Utente() {
            
        }
        
        public Utente(int id, String nome, String cognome, String email, String username,
                String password) {
            this.id = id;
            this.nome = nome;
            this.cognome = cognome;
            this.email = email;
            this.username = username;
            this.password = password;
        }
        
        @Id
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        
        public String getNome() {
            return nome;
        }
        public void setNome(String nome) {
            this.nome = nome;
        }
        
        public String getCognome() {
            return cognome;
        }
        public void setCognome(String cognome) {
            this.cognome = cognome;
        }
        
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        
        @Column(name = "username")
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (int) id;
            return hash;
        }
    
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Utente)) {
                return false;
            }
            Utente other = (Utente) object;
            if (this.id != other.id) {
                return false;
            }
            return true;
        }
    
        @Override
        public String toString() {
            return "my.streetsoccer.Utente[id=" + id + "]";
        }
    
    }
    Forse fa differenza tra maiuscole e minuscole nel nome delle colonne???
    Oppure ho sbagliato a mappare username???

  2. #12
    Devi stare attento alle maiuscole/minuscole e tenere conto che nelle query ejb-ql devi fare riferimento ai nomi degli entity e non a quello delle tabelle.

    ad esempio nella prima query nella clausola from fai riferimento a "utente" piuttosto che "Utente" (ques'ultimo è effettivamente il nome dell'entity)

  3. #13
    Grazie tante peppem!!! L'errore era proprio quello!
    Ho dovuto sistemare anche altre cose nel codice ma ora funziona!!!
    Mi hai aiutato tantissimo e non so come ringraziarti!
    Questo che sto facendo è per la tesi!!! Il punto è che io non studio ingegneria informatica ne informatica. Quindi queste cose sono del tutto nuove per me! Ho trovato un mucchio(tante) di difficoltà nell'andare avanti!
    Ma ora sento che la strada comincia ad essere in discesa.

    Grazie ancora!
    Ciao!

  4. #14
    Se hai bisogno di ulteriori chiarimenti.. non esitare a chiedere.

  5. #15
    Ciao peppem,
    avrei un'altra domanda da farti...
    Quando non usavo gli EJB, al'interno delle pagine JSP utilizzavo:
    codice:
    <jsp:useBean id="auto" scope="session" class="my.sitoauto.TuttoAuto" />
    per istanziarmi l'oggetto TuttoAuto. Successivamente passavo questa istanza dell'oggetto alla servlet, scrivendo all'interno della servlet:
    codice:
    HttpSession session = request.getSession();
    TuttoAuto auto = (TuttoAuto)session.getAttribute("auto");
    In questo modo pagina JSP e servlet utilizzavano lo stesso oggetto TuttoAuto.
    Inoltre potevo utilizzare i metodi dell'oggetto TuttoAuto appena istanziato all'interno della pagina JSP, esempio:
    codice:
            <table bgcolor="yellow" cellspacing="2" cellpadding="2" border="1">
                <tr bgcolor="lightblue">
                    <td>
                        <%
                        boolean loginEffettuato;
                        String nuVenditore = auto.getNUVenditore();
                        if(nuVenditore.equals("")) {
                            loginEffettuato = false;
                            %>
                            <font>Login non effettuato</font>
                            <%
                        }
                        else {
                            loginEffettuato = true;
                            %>
                            <font>Login effettuato:</font>
    
                            <font><%out.print(nuVenditore);%></font>
                            <%
                        }
                        %>
                    </td>
                </tr>
                .........
    Spero di essere stato chiaro...
    Ora che utilizzo gli EJB, all'interno della servlet ho scritto:
    codice:
    @EJB
    private StreetSoccerRemote streetSoccerBean;
    per istanziarmi l'oggetto streetSoccerRemote.
    Come posso passere l'oggetto streetSoccerRemote, istanziato nella servlet, alla mia pagina JSP???
    In modo da poter utilizzare i metodi di StreetSoccerRemote anche nella pagina JSP???

    Cerco di spiegarmi meglio...
    Ora che ho fatto la registrazione dell'Utente, voglio fare il login... e voglio che quando il mio utente ha fatto il login ci sia scritto da qualche parte sulla pagina internet
    "Login Effettuato: username"
    Dove 'username' è l'username con cui l'utente ha deciso di registrarsi.
    Voglio creare una variabile booleana 'loginEffettuato' all'interno della classe StreetSoccerBean, e aggiungere i metodi get e set sia in StreetSoccerBean che in StreetSoccerRemote. Richiamare il metodo 'getLoginEffettuato' nela Pagina JSP per verificare se il login è stato effettuato, e successivamente stampare a video che il login è stato o meno effettuato.

    P.S. é possibile fare una cosa del genere??? Oppure l'istanza del Session Bean StreetSoccerBean viene distrutto ad ogni richiesta??? In questo caso sarebbe inutile fare una cosa del genere.

  6. #16
    Riguardo lo stato del Session bean:

    Se il session bean StreetSoccer è di tipo Stateless, il suo stato non è persistente, quindi non lo puoi usare al fine di memorizzare la variabile boolean "logineffettuato". Per mantenere lo stato del bean devi dichiararlo @StateFul.

    Riguardo l'invocazione del bean all'interno della jsp:

    Non ho mai chiamato un session bean all'interno della jsp in quanto uso la jsp solo per la presentazione dei dati. Però, per rispondere alla tua domanda, credo tu possa chiamare il bean anche dalla JSP essendo a tutti gli effetti una servlet.

    Riguardo L'obiettivo che vuoi raggiungere:

    Io ti consiglio di realizzare un filtro, ad es. LoginFilter http://(<a href="http://java.sun.com...ters.html</a>)
    In questo filtro richiami il bean(stateless) che si occupa di effettuare il login.
    Tale bean ha solo il compito di comunicarti se la coppia (user, pwd) è valida.
    In tal caso memorizzi nella sessione la variabile boolean di cui parlavi e se vuoi anche l'entity che rappresenta l'utente.

    Il codice del filtro se effettui il mapping corretto verrà chiamato su tutti gli url(mappati), garantendoti la protezione di quelle pagine.

    All'interno del filtro se la variabile di sessione è impostata non ri-chiami il session bean e vai avanti con l'esecuzione.

    Per stampare a video il nome dello user puoi usare la variabile di sessione utente memorizzata nel filtro.

    Usa il pattern MVC

    Per un corretto design:

    il session bean per effettuare il check della coppia user e pwd sul db
    la servlet o il filtro come controller
    la jsp SOLO per la presentazione dei dati (NON dovrebbe chiamare direttamente il model(EJB))

    per passare i dati dalla servlet alla jsp usa il dispatcher inserendo i dati all'interno di request (request.setAttribute)..

    Dai un occhio a questo post:http://programmaremobile.blogspot.co...ttern-una.html

    E a questo esempio:http://programmaremobile.blogspot.co...are-ejb-e.html

  7. #17
    codice:
    Riguardo L'obiettivo che vuoi raggiungere:
    
    Io ti consiglio di realizzare un filtro, ad es. LoginFilter (http://java.sun.com/products/servlet/Filters.html)
    In questo filtro richiami il bean(stateless) che si occupa di effettuare il login.
    Tale bean ha solo il compito di comunicarti se la coppia (user, pwd) è valida.
    In tal caso memorizzi nella sessione la variabile boolean di cui parlavi e se vuoi anche l'entity che rappresenta l'utente.
    1 - Come richiamo il bean nel filtro?
    2 - Come faccio a memorizzare una variabile nella sessione? Posso farlo dal LoginFilter?
    codice:
    Il codice del filtro se effettui il mapping corretto verrà chiamato su tutti gli url(mappati), garantendoti la protezione di quelle pagine.
    
    All'interno del filtro se la variabile di sessione è impostata non ri-chiami il session bean e vai avanti con l'esecuzione.
    3 - Questo pezzo non lo ho proprio capito...

    codice:
    Per stampare a video il nome dello user puoi usare la variabile di sessione utente memorizzata nel filtro.
    4 - Come chiamo una variabile di sessione nella pagina JSP?

  8. #18
    Se usi netbeans, puoi avvalerti del wizard,
    tasto dx sul codice su cui inserire, Enterprise Resource, Call enterprise bean
    Genera lui il codice per effettuare il lookup.

    (nota, nel filtro non si usa la dependency injection ma il lookup jndi)

    ---------

    Con il fitro hai già tra i parametri locali ServletRequest e ServletResponse, attraverso il primo puoi ottenere la sessione

    session = request.getSession().

    per memorizzare all'interno un valore

    session.setAttribute("nomeAttributo",valore);
    -----------
    per usare tale valore (vale anche per la jsp)

    session.getAttribute("nomeAttributo")

    ovviamente dovrai fare il casting necessario perchè dentro la sessione vanno a finire solo Object.

    --------------

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.