Avatar billede kkaen Nybegynder
06. maj 2010 - 11:10 Der er 11 kommentarer og
1 løsning

Tilgang til session i servlet

Jeg har lavet et større system i jsp-sider. Inde i scriplets tilgår jeg sessionen, hvori jeg har gemt data, som skal bruges til generering af siden.

Nu er jeg ved at flytte scriplet-koden ud i desiderede servletter. Så derfor vil jeg gerne tilgå sessionen i servletten. Dette er sådan set også meget godt. Problemet består i, at jeg tilgår filer på serveren. Dette virkede fint nok som scriplet-kode. Men i servletter er der vist ikke helt samme tilgang til File-klassen (selvom jsp og servletter jo er det samme?).

Fejlen kommer formentlig i:
File file = new File(request.getSession().getServletContext().getRealPath("/") + newFileName);

Jeg har naturligvis en try-catch i servletten. Heri bliver der udskrevet:
java.lang.IllegalStateException: ServletConfig has not been initialized

Hvorfor bliver servletConfig ikke initialiseret ved en servlet, men bliver derimod initialiseret i en jsp-side? Og hvordan løser jeg problemet?
Avatar billede kkaen Nybegynder
06. maj 2010 - 12:17 #1
Nærmere betegnet kommer fejlen i denne sætning:

String serverPath = getServletContext().getContextPath() + "/UploadedFiles/" + fileToFind;
Avatar billede kkaen Nybegynder
06. maj 2010 - 12:19 #2
Hmm, kan det passe, at jeg blot skulle sætte "request.getSession()." ind foran? Jeg får i hvert fald ikke fejlen længere...
Avatar billede kkaen Nybegynder
06. maj 2010 - 12:33 #3
Yep, nu virker udskriften ogsp :-)
Avatar billede arne_v Ekspert
07. maj 2010 - 04:06 #4
Når du på et tidspunkt skal videre indenfor Java web apps, så skal du til at designe så du slet ikke har brug for scriptlets.
Avatar billede kkaen Nybegynder
07. maj 2010 - 08:13 #5
Ja, jeg er ved at flytte alle scriptlets over i servletter, som så leverer koden. Jeg er ikke klar over, om dette kan sidestilles med at flytte koden ud i tags, men det opdeler da også koden fra designet...?
Avatar billede arne_v Ekspert
08. maj 2010 - 00:58 #6
Servlets er OK til controllers og f.eks. streaming af data, men normalt vil main ike bruge dem til mere end dette.
Avatar billede kkaen Nybegynder
10. maj 2010 - 08:08 #7
Det er også sådan, jeg har taget brug af dem. Men jeg var noget i tvivl, om jeg skulle generere hele jsp-siden i dem, da de jo giver mulighed for det. Og da view-jsp-siden jo også i bund og grund er en servlet. Men jeg valgte dog at opdele, så der er en servlet til view-delen og en til controller-delen.
Avatar billede arne_v Ekspert
10. maj 2010 - 15:56 #8
Det normale er at lade request gaa til en servlet controller som saa forwarder til et JSP view.

(medmindre man bruger en anden teknologi end JSP til view)
Avatar billede kkaen Nybegynder
10. maj 2010 - 16:57 #9
Okay - jeg skulle bare lige være sikker, da det jo godt kunne være, at man hellere ville benytte tags. Tak for opklaringen!
Avatar billede arne_v Ekspert
10. maj 2010 - 17:18 #10
Du boer kun bruge dine egne tags til view formaal.

Du kan lave tags som kan displaye diverse custom klasser paa en bestemt maade etc..

Eller tags som kan outputte AJAX JavaScript.
Avatar billede kkaen Nybegynder
12. maj 2010 - 08:22 #11
Jeg har også en del javascript, som jeg skal have ryddet op i. Men de skal vel ikke refereres gennem tags? Skal det ikke bare flyttes ud i en js-fil, og så kaldes direkte?
Avatar billede arne_v Ekspert
12. maj 2010 - 15:41 #12
En måde at bruge JavaScript (til AJAX) er at have den i eksterne .js filer og kalde den JavaScript kode.

En anden måde er at bruge tags som outputter JavaScript og på den måde ikke skrive en eneste linie JavaScript hverken i .jsp eller .js !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester