Avatar billede kfikser Nybegynder
16. april 2002 - 13:55 Der er 19 kommentarer og
1 løsning

Hvordan kalder jeg en servlet med et antal parametere

Hej
Jeg har problemer med at kalde en servlet med 2 parametere. Servletten kaldes ved hjælp af en submit.
Et eksempel på koden står neden for:

<form action = "KortTidspunktServlet?enhedID=GF 46001&tid=20011127072900" TARGET = "frame2">

<input type="submit" name="Submit">
Avatar billede nute Nybegynder
16. april 2002 - 14:09 #1
prøv å URL encode din parameterliste. servlet'en er ikke så glad for å motta parameter som inneholder fx mellomrom
Avatar billede kfikser Nybegynder
16. april 2002 - 14:15 #2
Hvordan gør man lige det(URL encode)??
Avatar billede disky Nybegynder
16. april 2002 - 14:23 #3
kfikser:

Den måde du gør det på er den korrekte måde at gøre det.

Den skal dog som nute nævner en tur igennem java.net.URLEncode() metoden, som meget praktisk er static, kig i API'en
Avatar billede disky Nybegynder
16. april 2002 - 14:24 #4
Men den nemme metode som mange bruger er at bytte ' ' ud med '+'

Så virker det også fint.
Avatar billede nute Nybegynder
16. april 2002 - 14:24 #5
fx:

<form action = "<%= java.net.URLEncoder.encode( "KortTidspunktServlet?enhedID=GF 46001&tid=20011127072900" ) %>" TARGET = "frame2">

/nute
Avatar billede kfikser Nybegynder
16. april 2002 - 14:35 #6
Det ser ud til at være en del mere rigtigt, men jeg får en classNotFoundException.

ClassNotFoundException: KortTidspunktServlet?enhedID=GF+46001&tid=20011127072900
Avatar billede nute Nybegynder
16. april 2002 - 15:02 #7
du skal ikke få den exception hvis du benytter mitt svar...
Avatar billede disky Nybegynder
16. april 2002 - 15:37 #8
nute:
Meget dum ide at bruge den udgave af URLEncode, læs i 1.4 API'en så ser du den er deprecated, pga problemmer imellem forskellige platforme !.

kfikser:
Hvornår opstår den exception ?
Avatar billede erikjacobsen Ekspert
16. april 2002 - 15:38 #9
Man skal nu kun encode parametre - ikke hele URLen. Det korrekte
eksempel må være:

<form action="KortTidspunktServlet?enhedID=<%= java.net.URLEncoder.encode("GF 46001")%>&tid=<%= java.net.URLEncoder.encode("20011127072900") %>" ....osv.....>
Avatar billede nute Nybegynder
16. april 2002 - 15:46 #10
disky >> nåja...men metoden har jo "kun" endret signatur, så *så* dum idé var det nå ikke.

erikjacobsen >> hmm...ja, det var jo egentlig dét jeg skulle poste, men det gikk litt for hurtig for meg :-|
Avatar billede disky Nybegynder
16. april 2002 - 16:24 #11
at anvende en deprecated metode er en dårlig ide, der er jo en god grund til den er deprecated, og måske findes den metode du nævner ikke i jdk1.5 når den kommer.

Som de skriver i API'en skyldes det forskellig encodning på forskellige OS'er
Avatar billede nute Nybegynder
16. april 2002 - 16:29 #12
jeg er ikke uenig i at det er en dårlig idé å anvende en deprecated metode, men som du selv skriver...det er en grunn til at den er deprecated, og derfor har endret signatur. Metodevalget er ikke en dårlig idé, men jeg har postet metoden med den gale signatur.
Avatar billede erikjacobsen Ekspert
16. april 2002 - 17:06 #13
Bruger man jdk1.3 eller tidligere er man jo nødt til at bruge den depricatede·
Avatar billede kfikser Nybegynder
17. april 2002 - 08:54 #14
Mange tak for jeres hjælp ind til videre... Men mit problem er ikke løst. Jeg har stadigvæk det samme problem som jeg havde da jeg postede mit indlæg.
Jeg prøver lige at uddybe det lidt:
Når jeg kalder min servlet med et antal parameter i IE:

http://localhost/servlet/KortTidspunktServlet?enhedID=GF 2046001&tid=20011127072900

Så virker min servlet, men når jeg kalder den med:

<form action = "KortTidspunktServlet?enhedID=GF 46001&tid=20011127072900" TARGET = "frame2">
eller et af de overstående svar, så for jeg en null pointer exception i min servlet, det vil sige at der ikke er nogen værdi i enhedID & tid!?
Avatar billede disky Nybegynder
17. april 2002 - 09:20 #15
hvis du får en nullPointerException skyldes det at du IKKE checker om de er null før du bruger dem.

Hvis intet af ovenstående virker, kunne det tænkes fejlen lå i din servlet, post lige din servlets sourcekode.
Avatar billede kfikser Nybegynder
17. april 2002 - 09:34 #16
Jeg har fået det til at virke ved at ændre i koden for jsp siden, her er et eksempel:

<form action="KortTidspunktServlet" TARGET = "frame2">

enhedID:<input type="text" name="enhedID"><br>
tid:<input type="text" name="tid"><br>

<input type="submit" name="Submit">
Avatar billede kfikser Nybegynder
17. april 2002 - 09:38 #17
Men nu må vi se om det kommer til at virke.
Avatar billede disky Nybegynder
17. april 2002 - 10:27 #18
Det er den måde jeg altid gør det, og det plejer at virke :)
Avatar billede erikjacobsen Ekspert
17. april 2002 - 12:12 #19
Har du også et problem hvis du

<form action = "KortTidspunktServlet?enhedID=GF+46001&tid=20011127072900"  TARGET = "frame2">

??
Avatar billede kfikser Nybegynder
17. april 2002 - 13:25 #20
Det tror jeg. Jeg mener at jeg prøvedet det, men nu er jeg gået helt væk fra det og bruger istedet den måde jeg selv kom frem til og den virker. Men tak for hjælpen.
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