View Full Version : [JAVA & JSP] Qualche info basilare
Premetto che ho tutto funzionante (eclipse, callisto, struts, hibernate, etc), solo che devo raccapezzarmi un attimo
ho un progetto con già il sistema di login funzionante (si appoggia ad un database hibernate), ora vorrei che nella pagina di welcome, ci fosse un link che mi porta ad una pagina giocatori.jsp con tutto l'elenco della tabella tb_utenti
la classe java chiamata dal link è ListaGiocatori.java e la pagina si chiama giocatori.jsp
nel mapping di struts va tutto bene (se clicco sul link mi porta alla pagina giocatori.jsp) ma noto che la classe java non esegue praticamente nessuna parte di codice... qualcuno mi puo scrivere una classe generica di riferimento? una classe che esegua 2 istruzioni banali
grazie
Adesso fraintendo:
package test;
public class Esempio {
private String stringa = "ciao";
public void cambiaStringa() {
stringa = "mondo";
}
public String getStringa() {
return stringa;
}
}
Fa due cose, banali. E' questo che intendevi?
non proprio :)
ho un mapping di questo tipo:
http://i15.tinypic.com/35ch5q9.png
la classe ListaGiocatori.java esegue una query su un database HSQL, restituendo una lista di utenti
ora vorrei passare pari pari l'arraylist creato alla pagina .jsp in modo da poterla scorrere con il c:forEach (o altri metodi se ce ne dovessero essere)
Lo sospettato ma, sai, uno non è mai certo finchè non si sbilancia.
Hai provato a passare la lista come attributo di sessione?
Lo sospettato ma, sai, uno non è mai certo finchè non si sbilancia.
Hai provato a passare la lista come attributo di sessione?
premetto che sto iniziando solo "ora" a capire come macina sto coso...
ublic class ListaGiocatori extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
Session session = HibernateHelper.getInstance().getSession();
Transaction transaction = null;
ArrayList listaGiocatori = null;
Object ob;
try {
transaction = session.getTransaction();
transaction.begin();
ob = session.createQuery("from data.Utente");
/*listaGiocatori = (ArrayList)ob;
for(int i=0; i<listaGiocatori.size(); i++)
System.out.println(listaGiocatori.get(i).toString());*/
transaction.commit();
} catch(HibernateException e) {
transaction.rollback();
throw e;
} finally {
//session.close();
}
session.save(ob);
return mapping.findForward("forward1");
}
}
quindi, session, transaction non mi sono ancora molto chiari... lapidatemi pure, ma come dovrei fare x passare il risultato di quella semplice query? :stordita:
Per sessione intendevo la sessione della servlet. Realizzo tuttavia solo ora che stai usando struts. Ho il privilegio di non aver mai avuto a che fare con quell'immondizia. Aspettiamo e vediamo se qualcuno più sfortunato può risolvere il dubbio.
è sempre bello sapere che i primi approcci sono quelli che utilizzano sempre le cose peggiori :doh:
x il passaggio dell'oggetto dalla java alla jsp ho risolto
HttpSession session1 = request.getSession();
listaUtentiDaQuery = session.createQuery("from data.Utente").list();
for(int i=0; i<listaUtentiDaQuery.size(); i++){
System.out.println(listaUtentiDaQuery.get(i).toString());
utente = (Utente)listaUtentiDaQuery.get(i);
listaGiocatori.add(utente);
}
session1.setAttribute("listaGiocatori", listaGiocatori);
infatti da jsp con:
<c:forEach var="item" items="${listaGiocatori}" varStatus="status">
<p><c:out value="${listaGiocatori}"></c:out></p>
</c:forEach>
mi visualizza TUTTI i risultati x il numero di entry che ci sono nel db
se provo a fare listaGiocatori.id mi dice che il "." non è un operatore supportato etc etc...
Struts è usatissimo per lo sviluppo di applicazioni web Java. Se vuoi lavorare in una software house che sviluppa applicazioni web J2EE struts devi conoscerlo. Fa schifo perchè...diavolo, si vede che fa schifo. E' un catafalco ributtante che ti costringe a scrivere cinque volte più codice del buon vecchio Java. Ma si usa.
Hibernate non è messo meglio. Se per il piacere di scrivere @Entity poi devo ammazzarmi di XML tanto vale che butti tutto nel cesso e mi scriva un dao.
Comunque, a parte queste mie feroci opinioni personali, il ".": sicuro di non dover usare "item" in quel foeach? Teoricamente il foreach fa una scansione di listaGiocatori e per ogni passaggio piazza il risultato in item.
premesso che non avevo "collegato mentalmente" che il termine var, fosse il tipo di classe a cui forzava la lettura x ogni ciclo
ho cosi cambiato in var="Utente" e ora funziona tutto :)
ti ringrazio degli aiuti, e probabilmente finche non finirò il progetto, continuerò a usare questo 3d x cose che generalmente saranno banali :stordita:
altro quesito:
da una pagina JSP ho un link costruito dinamicamente che è piu o meno: Classe.do?id=1
dove Classe.java è la classe che dovrebbe prendere l'id 1 passato da url, fare la ricerca sul DataBase ed estrarre il record relativo
ora, come si scrive la classe Classe.java in modo che legga il parametro id passato da url?
Quei valori arrivano come attributi della richiesta (HttpRequest). Dovresti riuscire a recuperarli per nome, una cosa tipo:
request.getAttribute(nome);
Quei valori arrivano come attributi della richiesta (HttpRequest). Dovresti riuscire a recuperarli per nome, una cosa tipo:
request.getAttribute(nome);
è quello che pensavo io
la classe processa cosi:
System.out.println((String)request.getAttribute("ID"));
e il link a cui si arriva è: GestioneIscritti.do?ID=1
edit: era request.getParameters ;)
ma la stampa porta a null quindi non legge il parametro
hibernate mi sta iniziando a far ribrezzo...
dovrei joinare una tabella AssorbimentoProdotto che contiene nel campo Prodotto l'id del prodotto relativo, con la tabella Prodotto e il relativo campo id
in sql:
select * from AssorbimentoProdotto a , Prodotto p
where a.prodotto = p.id
in hibernate come cavolo si scrive che qua mi sta esplodendo tutto
Premetto che con createSQLQuery puoi fare una query in SQL "normale".
In HQL io vedo questo esempio qui:
List mothers = session.createQuery(
"select mother from Cat as cat join cat.mother as mother where cat.name = ?")
.setString(0, name)
.list();
Ti suggerisce qualcosa? Se no ne ho altri :D.
Premetto che con createSQLQuery puoi fare una query in SQL "normale".
In HQL io vedo questo esempio qui:
List mothers = session.createQuery(
"select mother from Cat as cat join cat.mother as mother where cat.name = ?")
.setString(0, name)
.list();
Ti suggerisce qualcosa? Se no ne ho altri :D.
uha hai googlato pure te? :asd:
ho lo stesso esempio qua su un txt :asd:
cmq piano piano sto realizzando qual'è il problema:
sto lavorando su un database hsql che viene creato, istanziato e riempito da sorgente java. Tutto è stato fatto dal mio docente di corso, il problema che si pone è che non c'è un riscontro univoco (1:1) tra classe java e tabella hsql
la classe MacroArea.java contiene al suo interno un Set di oggetti di tipo AssorbimentoProdotto.java
AssorbimentoProdotto.java ha come variabile l'oggetto Prodotto.java
in HSQL non ci sono le 3 tabelle, ma le 2 (macroarea e prodotto) + quella delle foreign key
il mio scopo è: avere le informazioni, per ogni MacroArea, dei vari assorbimentiProdotti e relativo nome del prodotto (che è contenuto SOLO nella classe Prodotto.java)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.