Avatar billede it-dyret Nybegynder
03. oktober 2003 - 15:25 Der er 10 kommentarer og
1 løsning

Deaktivering af "back"-funktion

Jeg har et problem i forbindelse med opbygningen af et site, hvor jeg har brug for, at man ikke kan kalde back-funktionen i browseren (eller noget lignende, der gør det samme).

Problemet er, at en servlet requestes med det samme request, når der trykkes på back. Denne servlet indsætter i en database - og det giver dubletter! Dette må ikke kunne lade sig gøre.

Hvordan forhindrer jeg det?

Jeg har en ide om, at der skal sættes nogle headere på requestet, men hvordan sætter man f.eks. "If-modified-since". Og er dette en rigtig tanke, altså løser det problemet...
Avatar billede dawin_dk Nybegynder
03. oktober 2003 - 15:27 #1
istedet for at du bruger alm links kan du bruge onclick="document.location.replace('url.jsp')" ... så skifter man side uden at det gemmes som ny entry i history ..
Avatar billede arne_v Ekspert
03. oktober 2003 - 15:29 #2
Det lyder ikke som JSP - prøv at flyt spørgsmålet til korrekt kategori.
Avatar billede it-dyret Nybegynder
03. oktober 2003 - 15:50 #3
Jeg tænker på hvordan jeg på SERVLETen kan lave en test af om request'et er det samme som sidst. Der må gerne være oplysninger i basen som er ens, men bruger skal bare være klar over at det ham som har oprettet dem. Og det er han ikke hvis der oprettes en dublet når han trykker på back.

Arne v jeg skal nok flytte den del der om taler "back" til javascript.

Og det med onclick, ved jeg ikke. For det er en form som get'ter en servlet.
Avatar billede arne_v Ekspert
03. oktober 2003 - 15:54 #4
Du kan gemme information om en processet request i sessionenen og så
checke i sessionen inden du udfører og ikke udføre hvis den alleerede er udført.
Avatar billede it-dyret Nybegynder
03. oktober 2003 - 15:57 #5
Vil du bare gemme hele request på session. og hvis ja hvordan vil du så equals dem?. For det bliver vel et nyt request
Avatar billede arne_v Ekspert
03. oktober 2003 - 16:00 #6
Noget a la:

browser requester form.jsp
form.jsp laver et hidden field med time stamp
browser submitter til servlet
servelet checker om timestamp er det samme som i session
ja => abort
nej => process og gem timestamp i session
Avatar billede webster Nybegynder
03. oktober 2003 - 16:02 #7
i det request der sendes i servletten kunne du fx havde et felt med tidspunkt for at requestet er "oprettet". Så fx hvis du har en side med en form der kalder servletten så lave et usynligt felt der sættes til System.currentTimeMillis();

i session info kan du så havde et felt der hedder lastRequest og så bed servletten om at ignorere requested hvis det har samme id/timestamp som det sidst udførte.
Avatar billede webster Nybegynder
03. oktober 2003 - 16:04 #8
hehe.. arne få så smidt et svar =)
Avatar billede arne_v Ekspert
03. oktober 2003 - 16:07 #9
ok
Avatar billede it-dyret Nybegynder
03. oktober 2003 - 16:09 #10
Tak arne v. hvis du vil have point skal ligge et svar inden i morgen lørdag, ellers tyv-stjæler webster dem :).
Avatar billede it-dyret Nybegynder
03. oktober 2003 - 16:10 #11
Værsgo arne v.
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