Avatar billede dannv Nybegynder
11. maj 2003 - 22:42 Der er 8 kommentarer og
1 løsning

Redirection i jsp

Hvordan får jeg fat i oplysninger om hvilken side min bruger har requestet...?

Jeg skal bruge det i forbindelse med at jeg har en login side, og når der ikke er logget ind benytter jeg følgende:

response.sendRedirect("Login.jsp");

Så ville jeg gerne have at hvis det går godt skulle der så stå noget som dette:

response.sendRedirect("Her skal så stå den side som brugeren har requestet...");

Hvorledes gøres dette??
Avatar billede disky Nybegynder
11. maj 2003 - 22:47 #1
Hvis hvad går godt ?

Selve din login ?
Avatar billede arne_v Ekspert
11. maj 2003 - 22:51 #2
2 løsninger:

1)

Do it yourself.

Du bruger:

response.sendRedirect("Login.jsp?from=xxxx.jsp");

så Login.jsp kab lave:

response.sendRedirect("xxxx.jsp");

2)

Brug form-based deklarativ security, så sørger JSP/servlet container
selv for at redirecte dig tilbage til den rigtige side.
Avatar billede dannv Nybegynder
11. maj 2003 - 22:54 #3
Jeg har følgende:
   
if (check == true)
    {
      response.sendRedirect("Welcome.html");
    }
    if (check == false)
    {
      response.sendRedirect("Login.jsp?errorcode1=yes");
    }

Altså hvis det check jeg foretager på brugerens forsøg på at logge ind godkendes skal han sendes et eller andet sted hen. Inden han / hun kommer så langt har vedkommende trykket på et link. Her har jeg opfanget at vedkommende ikke er logget ind og redirected ham til Login side. Efterfølgende foretages et check af et loginforsøg, og her ville jeg gerne sende brugeren videre til den side som oprindeligt blev requested, hvis altså loginforsøget var en succes..... Er det bedre?
Avatar billede arne_v Ekspert
11. maj 2003 - 22:54 #4
Ja altså ikke hardcoded:

response.sendRedirect("xxxx.jsp");

men naturligvis:

response.sendRedirect(request.getParameter("from"));
Avatar billede arne_v Ekspert
11. maj 2003 - 22:56 #5
Din kode kan meget nemt modificeres til at bruge mit forslag #1.

Bare tilføj lidt til:
  response.sendRedirect("Login.jsp?errorcode1=yes");
og til Login.jsp !
Avatar billede dannv Nybegynder
12. maj 2003 - 13:05 #6
Jeg tror ikke helt jeg forstår.

I min app. er der kun en Login.jså! På alle sider bliver der først tjekket om man er logget ind. Og ellers bliver man sendt til Login.jsp. dvs request kan komme fra mange forskellige sider. (Dette gøres ved at der øverst på min jsp(vha. <@include>) side er en kontrol af en boolean fra en bønne).

Skal jeg så i min login have en 'response.sendRedirect("Login.jsp?from=xxxx.jsp");' til hver side, eller ?

-----------------------
Kan jeg ikke på en måde fange hvor requesten kommer fra via noget med Http header eller lignende?
Avatar billede arne_v Ekspert
12. maj 2003 - 13:13 #7
Hvis du selv vil lave checket bliver du nødt til at udføre en:

response.sendRedirect("Login.jsp?from=xxxx.jsp");

i hver side (du kan formentlig include koden så den kun behøver
stå et sted).

og request.getParameter("from") sendes så fra Login.jsp til den side der
validerer (kan f.eks. også være Login.jsp?from=).

Den laver så:

response.sendRedirect(request.getParameter("from"));
Avatar billede arne_v Ekspert
12. maj 2003 - 13:14 #8
Alternativt kan du vælge løsning #2. Så skal der ikke sættes
noget ind på dine sider. Og du skal ikke engang lave validerings
koden.
Avatar billede dannv Nybegynder
20. maj 2003 - 11:31 #9
Hej arne_v

Tak for din hjælp, og undskyld den lange svar tid. Jeg har efter at have gransket fundet ud af at man kan få fat i request objektet og derefter kalde rquestURI : request.RequestURI() dette giver den url som brugeren har requestet... og kan så bare puttes i en streng eller noget andet

Dann
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