Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Community > Forum De Bell Tolls
 
[java]JSP + Bean
Clicca QUI per vedere il messaggio nel forum
0m4r
mi date una mano qui?

Paul
credo che le specifiche JavaBean
si aspettino un getter e un setter
che restituisca e imposti un valore dello stesso tipo
del campo relativo.
Siccome start è int, viene chiamato
il metodo setStart(int).. che non esiste nel tuo bean;
in pratica risolvi aggiungendo:

public void setStart(int s){
this.start=s;
}

0m4r
fantastico...funziona!!!!!

0m4r
avrei bisogno di una mano anche per questo...grazie

(fate finta che il mio inglese sia comprensibile dai...)

Juventina
(si scrive need non nedd) :d

0m4r
Originally posted by Juventina
(si scrive need non nedd) :d


Off-Topic:
questa non è ignoranza è il porting della dislessia per la digitazione ;PPP

0m4r
dai raga, non abbandonatemi cosi!

Paul
..se ho capito bene.
Ho semplificato prendendo il valore da una costante invece che da file (ma l'interfacciamento a file non dovrebbe essere un problema).


allora due jsp:

index.jsp
code:
<%@page import="my.mine.*" %> <% Counter counter=Counter.getReference(); %> <html> <head> <title>Counter</title> </head> <body> <center><a href="click.jsp">counter<%counter.getValue()%> </a> </center> </body> </html>




click.jsp
code:
<%@page import="my.mine.*" %> <% Counter counter=Counter.getReference(); counter.dec(); response.sendRedirect("index.jsp"); %>




e due classi java (in unico file chiamato Counter.java)
code:
package my.mine; public class Counter { private final static int INIT_VALUE = 100; private int count = INIT_VALUE; private static Counter counter = null; private Counter() { new Cleaner(this).start(); } public static Counter getReference() { if (counter == null) { Counter.counter = new Counter(); } return counter; } synchronized public void dec() { this.count--; } synchronized public int getValue() { return count; } synchronized void clean() { this.count = INIT_VALUE; } } class Cleaner extends Thread { private final static int TIMEOUT = 1000000; //in millisecondi Counter counter; Cleaner(Counter counter) { this.counter = counter; } public void run() { try { while (true) { synchronized (this) { wait(TIMEOUT); } counter.clean(); } } catch (InterruptedException e) { } } }



note:

Le due classe opportunamente compilate vanno infilate
come al solito sotto WEB-INF/classes.
La classe Counter realizza il pattern Singleton.
Dovrebbe Funzionare(non ho fatto grossi test)
:)

0m4r
ti ringrazie della risposta, ti faro sapere entro fine settimana se funziona.

P.S.
anche te hai avuto alcuni problemi collegandoti al sito di java in questi giorni?

Paul
Mi sono accorto di un errore di copia e incolla
la riga:
<a href="click.jsp">counter<%counter.getValue()%>
va corretta con:
<a href="click.jsp">counter<%=counter.getValue()%>

senno' il numero che decrementa non si vede.

si ieri java.sun.com non andava, oggi sembra tutto ok

0m4r
riguardando meglio il tuo codice mi sono accorto che forse non è proprio quello che cercavo io.
Nel senso che quello di cui necessito è di avere un meccanismo che ogni giorno a mezzanotte resetti il contatore ad un valore che io stabilisco a propri, mentre, se ben ho capito quello che fa la classe che mi hai scritto, tu li ti occupi di decrementare il contatore gestendo la sincronizzazione di questa operazione. Io questo lo faccio gia, quello che mi manca è quanto detto precedentemente...

Dato questo chiarimento, hai suggerimenti?

Paul
quello che fa la mia classe e' resettare a un valore predefinito
ogni tot secondi il contatore.
Se hai bisogno che cio' avvenga a mezzanote (o a un orario qualsiasi di ogni giorno), puoi modificare la classe in questo modo:

while (true) {
synchronized (this) {
wait(TIMEOUT);
}
if (isMezzanotte()){
counter.clean();
}
}


il metodo isMezzanotte() ovviamente e' da implementare (deve ritornare true se l'orario corrente è mezzanotte o quello che vuoi tu).
A questo punto il campo TIMEOUT diventa i millisecondo ogni
quando si controllo che l'orario sia mezzanotte...

(non sarebbe carino togliere il wait() o mettere a 0 TIMEOUT, in quanto la CPU sarebbe al 100% o quasi a controllare ogni istante che sia mezzanotte)

ultima nota, probabilmente i synchronized sono inutili dal punto di vista pratico.

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate