powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно перенаправить на jsp
18 сообщений из 18, страница 1 из 1
Как правильно перенаправить на jsp
    #33931360
new_jabber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро всем участникам форума! Пишу веб приложение на Servlets + JSP. Решил не придумывать велосипед и использовать патерн (MVC). Стркутура приложения такова: LoginServlet-->ControllerServlet (который и пернаправляет запросы на JSP). При удачном логине и перходе от LoginServlet к ControllerServlet используется сессия, кусочки кода к Вашему вниманию:
LoginServlet:
Код: plaintext
1.
2.
3.
4.
5.
 if  (условие - неважно какое) {

       HttpSession session = request.getSession(true);
       session.setAttribute("loggedIn",  new  String("true"));
       response.sendRedirect("ControllerServlet");

ControllerServlet:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 public   void  doGet(HttpServletRequest request, HttpServletResponse response)
         throws  ServletException, IOException {
        HttpSession session = request.getSession();
         if (session ==  null )
           response.sendRedirect(loginUrl);
          else {
            String loggedIn = (String) session.getAttribute("loggedIn");
             if  (!loggedIn.equals("true"))
            response.sendRedirect(loginUrl);
        }
        doPost(request, response);
      }

далее из ControllerServlet пересылка на jsp:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 public   void  doPost(HttpServletRequest request, HttpServletResponse response)
         throws  ServletException, IOException{
        String base = "/jsp/";
        String url = base + "Default.jsp";
        String action = request.getParameter("action");
                 if  (action!= null ) {
                 if  (action.equals("showUserAccounts"))
                  url = base + "showUserAccounts.jsp";

                 else   if  (action.equals("createNewUserAccount"))
                   url = base + "createNewUserAccount.jsp";
                }

    RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher(url);
           requestDispatcher.forward(request, response);
         }

и все работает отлично, НО! тогда в систему можно и не логиниться - в браузере можно просто набрать, например: http://localhost:8080/app1/jsp/showUserAccounts.jsp - и все откроется.
ВОПРОС: Как правильно организовать пересылку запросов на JSP, чтобы открывались JSP только залогиненным юзерам, т.е. я так понимаю надо правильно организовать передачу сессии, а как?
Помотите начинаешему!
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33931399
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно обсуждалось. Почитайте про фильтры...
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33931446
Sherst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда вы набираете в адресной строке браузера URL, то автоматически запрашивается метод doGet().
Что вам мешает в данном методе вашей странички написать проверку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
HttpSession session = request.getSession(false);
 if  (session ==  null ) 
  response.sendRedirect(loginURL);
   else  {
    String loggedID = (String)session.getAttribute("LoggedID");
     if (!loggedID.equals("true"))
     response.sendRedirect(loginURL);
  }
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33931464
Фотография ZS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RequestDispatcher
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33931503
new_jabber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Sherst: дык у меня и так в ControllerServlet в методе doGet написано:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 public   void  doGet(HttpServletRequest request, HttpServletResponse response)
         throws  ServletException, IOException {
        HttpSession session = request.getSession();
         if (session ==  null )
           response.sendRedirect(loginUrl);
          else {
            String loggedIn = (String) session.getAttribute("loggedIn");
             if  (!loggedIn.equals("true"))
            response.sendRedirect(loginUrl);
        }

        doPost(request, response);

      }

Или я Вас не правильно понял?
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33932719
Шалун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ясен перец, если обратится сразу к jsp страничке, то она откроется, т.к. в ней нету никаких проверок.
Чтобы сделать так, как ты хочешь, нужно поставить проверку в самой jsp странице.
По-моему так.
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33932733
new_jabber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...Вот я и спрашиваю как на jsp странице реализовать проверку сессиии?
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33932746
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
new_jabber...Вот я и спрашиваю как на jsp странице реализовать проверку сессиии?
используй для этого фильтр
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33932776
OU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OU
Гость
использовать фильтр который будет все запросы направлять диспетчеру
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33933340
Шалун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В начале JSP страницы можно вставить вот что:

if(session == null)||(!((String)session.getAttribute("loggedIn")).equals("true"))
response.sendRedirect(loginUrl);

Может чего со скобками напутал, но идея в том, чтобы проверять на наличие сессии и определенного атрибута. Если чего-то нет, то переходим на начальную страницу.
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33933677
Sherst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шалун
В начале JSP страницы можно вставить вот что


Но будет ли это удовлетворять правилам Model2 (LoginServlet-->ControllerServlet ->JSP)?
Наверное автор это хотел уточнить...
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33933750
new_jabber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шалун, спасибо вам! помог ваш код (как Вы и говорили немного со скобками трабл был, но я поправил):
Код: plaintext
1.
2.
    if ((session ==  null )||(!((String)session.getAttribute("loggedIn")).equals("true")))
   response.sendRedirect(loginUrl);

только появилась новая проблема :) Например, чтобы протестить работу сессии, я не логинясь в браузере набираю:http://localhost:8080/app1/jsp/Menu.jsp - выдает сообщение об ошибке:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.NullPointerException
org.apache.jsp.jsp.Menu_jsp._jspService(org.apache.jsp.jsp.Menu_jsp:63)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.15 logs.

неужели надо писать в ControllerServlet:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 public   void  doGet(HttpServletRequest request, HttpServletResponse response)
         throws  ServletException, IOException {
       try {  
      HttpSession session = request.getSession();
         if (session ==  null )
           response.sendRedirect(loginUrl);
          else {
            String loggedIn = (String) session.getAttribute("loggedIn");
             if  (!loggedIn.equals("true"))
            response.sendRedirect(loginUrl);
        } catch (NullPointerException e){}
        }
        doPost(request, response);
      }

и на каждой jsp:
Код: plaintext
1.
2.
3.
4.
      try {
    if ((session ==  null )||(!((String)session.getAttribute("loggedIn")).equals("true")))
   response.sendRedirect(loginUrl);
    }  catch  (NullPointerException e){}

Наверно я зашел в тупик!
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33933758
Шалун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда, действительно, надо ставить фильтр, который будет отслеживать все обращения к jsp -страницам и проверять на наличие сессии.
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33933761
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, может я не в тему влез, но если вы решили не изобретать велосипед, то почему взялись его изобретать?

Почему не взяли готовый framework типа Struts и т.п., где подобные вопросы уже реализованы?
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33933848
new_jabber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видите ли, Артем1, я не давно самостоятельно прошел теоретический курс по JSP и Servlets + DB, и мне бы очень хотелось закрепить на практике полученые знания. Тут Deady кому-то на форуме советовал в качестве учебного проекта:

"есть БД по учету пользователей, необходимо разработать страницу по регистрации и аутентификации пользователей (то есть я могу зарегиться и войти в защищенную часть), а так же приложение для управления пользователями (то есть я вхожу в защищенную часть под суперпользователем, смотрю кто зарегился, кто онлайн, меняю данные, назначаю роли итп). причем вид защищенной части зависит от выделенных пользователю ролей."

вот этот топик - http://sql.ru/forum/actualthread.aspx?tid=325460

Вот и пытаюсь реализовать...

Многие пишут, что лучше бы еше подучить технологий (ejb) и потом взяться за эту задачу, но мне кажеться тяжеловато будет. хотелось бы сначала jsp + servlet потренировать. А вы как думаете?
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33933868
new_jabber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да вот еще один вопросик, многие советуют обратиться к фреймворкам, но мне кажеться к ним надо переходить, когда основы хорошо знаешь? Я не прав?
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33933928
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в случае варианта изучения технологии вы выбрали совершенно правильный подход. Я бы поступил аналогично.

ИМХО.
...
Рейтинг: 0 / 0
Как правильно перенаправить на jsp
    #33935322
new_jabber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, кто поделиться как и в правду написать фильтр для проверки наличия сессии?
Заранее большое спасибо.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно перенаправить на jsp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]