Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Usare Sprini in webApp

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

Usare Sprini in webApp

Postdi Swalke » 23/02/08 13:38

Ciao a tutti.
Ho creato una semplce Web-app che utilizza solo servlet e jsp (niente framework MVC).
E' una semplce "hello world" fatta per esercitarmi a cui volevo porvare ad aggiungere l'Inversion Of Control (IOC) di Spring per capire come funziona.

Ho letto alcuni tutorial su web ma evidentemente mi manca un passaggio perchè l'IOC non mi funziona.
Non vengono generati erri, semplicemente l'injection dgli oggetti non avviene e me li ritrovo a null nella servlet che li deve utilizzare :(

Questo è quello che ho fatto:

- web.xml:
Ho inserito i seguenti tag:
Codice: Seleziona tutto
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>


- applicationContext.xml:

Ho inserito la configurazione per due classi (un semplice bean e una classe di servizio)
Codice: Seleziona tutto
<bean id="articolo" class="beans.Articolo" />

<bean id="articoloService" class="services.impl.ArticoloServiceImpl" />


- La mia servlet:
Ho creato due variabili:
Codice: Seleziona tutto
private Articolo articolo;
private ArticoloService articoloService;

e i relativi metodi di set e get:
Codice: Seleziona tutto
public Articolo getArticolo() {
return articolo;
}
public void setArticolo(Articolo articolo) {
this.articolo = articolo;
}
public ArticoloService getArticoloService() {
return articoloService;
}
public void setArticoloService(ArticoloService articoloService) {
this.articoloService = articoloService;
}


Questo è tutto ciò che ho fatto ma nella mia servlet "articolo" e "articoloService" restano a null.
Cosa ho dimenticato?
La classe "org.springframework.web.context.ContextLoaderListener" dichiarata nel web.xml dovrebbe occuparsi di iniettare gli oggetti dell'applicationContext.xml nelle classi che hanno le variabili corrispondenti no?

Aiuto!
Avatar utente
Swalke
Hardware Admin
 
Post: 820
Iscritto il: 26/10/01 01:00
Località: Milano

Sponsor
 

Re: Usare Sprini in webApp

Postdi pjfry » 25/02/08 12:05

se ho capito bene, ti manca di dire a spring quale classe deve valorizzare con l'IOC :-?
un qualcosa tipo questo:

Codice: Seleziona tutto
<bean id="servletDiSwalke" class="servlet.Swalke">
    <property name="articolo" ref="articolo"/>
</bean>
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Re: Usare Sprini in webApp

Postdi Swalke » 25/02/08 21:29

Si pj, ci hai preso in pieno.

Io pensavo che quando la servlet veniva instanziata le variabili venivano popolate aotomaticamente da spring.
Ora ho capito che non è così ma a questo punto ho un'altra domanda:

Se uso delle semplici servlet e jsp senza MVC.
Che vantaggio ho nel fare
Codice: Seleziona tutto
<bean id="servletDiSwalke" class="servlet.Swalke">
    <property name="articolo" ref="articolo"/>
</bean>

per ogni servlet che deve usare "articolo"

piuttosto che
Codice: Seleziona tutto
Articolo articolo = new Articolo();

in ogni servlet?
:eeh:
Avatar utente
Swalke
Hardware Admin
 
Post: 820
Iscritto il: 26/10/01 01:00
Località: Milano

Re: Usare Sprini in webApp

Postdi pjfry » 26/02/08 09:49

ma che domande usa MVC e basta no? :aaah :D

scherzi a parte, non ho mai lavorato come stai provando te, però credo che i vantaggi dell'IOC si potrebbero vedere anche solo con le servlet. Avevo letto un tutorial ma non mi ricordo gli esempi ^_^"
se non ricordo male l'idea generale è che nelle varie classi usi una interfaccia generica IArticolo, e poi tramite xml decidi se istanziare ArticoloDeterminativo o ArticoloIndeterminativo, insomma controlli tutto da un singolo file di configurazione senza dover mettere mano al codice quando vuoi cambiare...
un esempio più pratico è:
hai un bean DBService che produce dei dati collegandosi ad un DB, ma per i test vuoi sostituirlo con una classe che restituisce dati casuali senza database.

chiaro? :undecided: :neutral:
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Re: Usare Sprini in webApp

Postdi Swalke » 26/02/08 19:33

Chiarissimo!

Neanche io generalmente lavoro senza MVC.
La mia webapp era a scopo puramente didattico.
Siccome generalmente si lavora con tante tecnologie/framework in contemporanea, per chiarirmi le idee su alcune cose stavo provando a fare delle semplici applicazioni che sfruttassero un singolo frame per volta
(IOC, persistenza, MVC ecc...)
...per poi creare un applicazione che li utilizzasse tutti contemporaneamente.

Comunque grazie mille sei stato chiarissimo!
Avatar utente
Swalke
Hardware Admin
 
Post: 820
Iscritto il: 26/10/01 01:00
Località: Milano


Torna a Programmazione


Topic correlati a "Usare Sprini in webApp":


Chi c’è in linea

Visitano il forum: salatony e 6 ospiti