Robię proste forum z serią Servlets
, z których każda reprezentuje stronę domową, temat, postit, login i listę użytkowników. Na niektórych z tych stron znajduje się odsyłacz, który pojawia się, gdy użytkownik nie jest zalogowany.Przekierowanie z powrotem do strony po zalogowaniu
Co chciałbym osiągnąć, to wywołać przekierowanie (używając funkcji forward() na RequestDispatcherze) po zalogowaniu, aby przeglądarka powraca do strony, na której był użytkownik przed kliknięciem linku logowania. W tym celu widzę dwa rozwiązania.
Pierwszym rozwiązaniem jest posiadanie kodu HTML Form
z przyciskiem logowania i niewidocznym polem, które będzie zawierało informację, która strona zostanie przekierowana jako Parameter
. Jest to możliwe, ale chciałbym spróbować czegoś innego.
Drugim rozwiązaniem jest dodanie Attribute
do session
, która w pewien sposób reprezentuje pierwszą "stronę". Może to zawierać String, ale nie różni się to od pierwszego podejścia. Innym skrętem byłoby dodanie odwołania do HttpServlet i użycie instanceof lub statycznej zmiennej String, która mogłaby zostać użyta do zidentyfikowania Servleta w jakiś sposób. Jednak wymagałoby to stworzenia wspólnej klasy przodków dla wszystkich Servlets
.
Być może istnieje jeszcze jedno proste rozwiązanie, które można uznać za dobry kompromis? A może jedno z powyższych rozwiązań jest całkowicie dopuszczalne?
Świetna odpowiedź, plus daje mi migawkę o tym, do czego należy dążyć po dodaniu DAO. –
Jeśli używasz zabezpieczeń zarządzanych przez kontener, wtedy wysłanie żądania do j_security_check nie pozwoli ci tego zrobić; zamiast tego użyj programowego logowania w Servlet 3: HttpServletRequest.login – Ryan
Dziękuję bardzo. –