powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Обновления или F5 в веб странице
30 сообщений из 30, показаны все 2 страниц
Обновления или F5 в веб странице
    #38907223
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем Здравствуйте!
ребята помогите разобраться. имеется простой web проект в составе которого 3 сервлета и 2 html страницы:
сервлет 1 это start приложения:
Код: java
1.
2.
3.
4.
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
                                                                                         IOException {
        request.getRequestDispatcher("authcheck").forward(request, response);
    }


сервлет 2:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Authcheck extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
                                                                                         IOException {
        HttpSession sess = request.getSession(true);
        System.out.println("------AutchCheck-----");
        if (sess.getAttribute("l")!=null) {
            request.getRequestDispatcher("info.html").forward(request, response);
        } else {
            request.getRequestDispatcher("login.html").forward(request, response);
        }
    }
}



сервлет 3:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class LoginCheck extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String login = "";
        try {
            login = request.getParameter("login");
        } catch (Exception e) {
            e.printStackTrace();
        }        
        System.out.println("------LoginCheck-----");
        if (login!=null) {
            request.getSession().setAttribute("l", login);
            login = null;
            request.getRequestDispatcher("start").forward(request, response);
        }
    }
}



соответственно хтмл страницы
это логин.хтмл
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
        <title>login</title>
    </head>
    <body>
        <form action="logincheck" method="get">
            <input type="text" name="login" value="login"/>
            <input type="submit" value="OK"/>
        </form>
    </body>
</html>



и инфо.хтмл
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
        <title>info</title>
    </head>
    <body>
        info
    </body>
</html>


для начала как бы все проходит правильно,
т.е. сначала старт ----> AuthChech -->> lohin.html -->> LoginCheck -->> AuthCheck -->> info.html
а вот когда нажимаю на F5 или просто обновить то проходить примерно вот так LoginCheck -->> AuthCheck -->> info.html
а когда сессия заканчивается по таймауту то на сколько я знаю то должен попасть в страницу login.html а у меня опять (LoginCheck -->> AuthCheck -->> info.html)
что делать что бы при обновлении страницы сначала попал на AuthCheck а не LoginCheck ?
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38907391
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только факты

Есть redirect, а есть forward. Это разные вещи.

Forward это передача обработки другому сервлету внутри сервера (при это никакого уведомления клиент/браузер не получает). Когда выполняете

request.getRequestDispatcher("info.html").forward(request, response);

то сервер (Tomcat) ищет чем обработать url "info.html" и обрабатывает его тем чем настроен был обрабатывать такой url, и отдает его браузеру, при этом url в браузере не изменяется. т.е если AuthCheck сервлет настроен на обработку url /authcheck то судя по коду
у вас login.html и info.html будут доступны только по адресу url /authcheck.

в то время как при редирект томкат отправит бразеру со специальном Http статусом ответ, где в header "location" будет другой Url который браузер тут же запросит.



При обновлении страницы браузер попадает именно туда куда указывает адресная строка. Томкат, сервлеты тут ни при чем. Точнее томкат вызовает то обработчик который настроен на url в адресной строке.
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38907437
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Authcheck - лучше заменить на Filter -

http://tutorials.jenkov.com/java-servlets/servlet-filters.html

будет один фильтр и два сервлета и две страницы
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38907440
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38907488
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingПри обновлении страницы браузер попадает именно туда куда указывает адресная строка .
прошу прошения, но где эту строку найти? чета не въехал... :(

Atum1 http://www.journaldev.com/1933/java-servlet-filter-example-tutorial
полезная ссылка.
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38907493
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МузаффарllemingПри обновлении страницы браузер попадает именно туда куда указывает адресная строка .
прошу прошения, но где эту строку найти? чета не въехал... :(


ну как, в браузере полосочка с http// или www
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38907508
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174ну как, в браузере полосочка с http// или www

да уж...
ну путь урл http://127.0.0.1:7101/Application1-Client-context-root/ logincheck?login=login
у меня апп сервер weblogic.
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38907510
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по идее после таймаута переходить по пути start -> AuthCheck --> login.html а сейчас никак не попасть на страницу логин.хтмл ... без фильтров можно реализовать?
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38907898
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффара по идее после таймаута переходить по пути start -> AuthCheck --> login.html а сейчас никак не попасть на страницу логин.хтмл ... без фильтров можно реализовать?

Путаница в голове от не понимания процессов ... на стороне сервера , и клиента . что куда ходит что такое jsessionid итд ...

к сожалению сходу найти понятный пример по java ee стеку на сервлетах очень сложно ...

но если вам хочется разобраться то посмотрите spring -security-hello-world

http://www.seostella.com/ru/article/2012/06/27/vvedenie-v-spring-security-hello-world.html

https://ru.wikibooks.org/wiki/Spring_Security/Технический_обзор_Spring_Security

http://www.mkyong.com/tutorials/spring-security-tutorials/

поймите основную идею ,а дальше попробуйте ее реализовать своими силами в своих сервлетах.

Если совсем туго будет - используйте basic authentication Ваш веб сервер должен его поддерживать ! реализовывайте этот подход , далее разберитесь с login.jsp итд
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38907951
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1используйте basic authentication
+1
действительно. Зачем вам логин форму рисовать во втором тысячилетии?
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38908047
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот пример который вы сможете скачать вместе с ide , как раз servlet .

https://netbeans.org/kb/docs/javaee/ecommerce/security.html
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38909277
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

Спасибо за ссылки!

на счет basic authentication может Вы и правы, плюс к этому ненадо изобретать велосипед и с этим согласень, но чтоб понять суть механизма наверное надо попробовать в стадии изучения, чтоб дальше было легче... вот по этому была создана такая тема :)
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38909432
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Какой web server используете ?

Думаю у них на сайте есть примеры с авторизацией :
1) basic
2) через login.jsp
3) https ssl cert

для вас в будущем идеально подойдет : basic логин + https ssl cert (чтобы логин и пароль не украли :) )
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38909438
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увидел :

weblogic

http://docs.oracle.com/cd/E11035_01/wls100/security/thin_client.html

достаточно подробно все расписано :)

1)basic
2)login.jsp FORM Authentication

3) ваш вариант - свой модуль - если вы когда нибудь свалите с weblogic

как правило любой web server сейчас имеет поддержу авторизации .
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38909526
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1как правило любой web server сейчас имеет поддержу авторизации .
ну да с этим согласен :)
можно ещё использовать JAAS...
просто не совсем понял каким образом при обновлении отправляется именно к LoginCheck'у а не другому сервлету?...
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38909725
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дайте маппинг url на ваши сервелеты , тогда можно будет сказать
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38909807
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingдайте маппинг url на ваши сервелеты , тогда можно будет сказать
имеете ввиду web.xml ?
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38909836
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
особо ничего тут...
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<?xml version = '1.0' encoding = 'UTF-8'?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">
  <listener>
    <listener-class>d.d.util.Listener1</listener-class>
  </listener>
  <servlet>
    <servlet-name>Start</servlet-name>
    <servlet-class>d.d.Start</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>Authcheck</servlet-name>
    <servlet-class>d.d.Authcheck</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>LoginCheck</servlet-name>
    <servlet-class>d.d.LoginCheck</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Start</servlet-name>
    <url-pattern>/start</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Authcheck</servlet-name>
    <url-pattern>/authcheck</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>LoginCheck</servlet-name>
    <url-pattern>/logincheck</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>1</session-timeout>
  </session-config>
</web-app>
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38910099
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
. сначала старт ----> AuthChech -->> lohin.html -->> LoginCheck -->> AuthCheck -->> info.html

Более подробно

1. Пишем в урл браузера /start и жмем Enter, (браузер запрашивает с сервера адрес "/start")
2. сервер находит по урл "/start" сервлет отвественный за обработку этого урл и передает управление этому сервлету Start
3. сервлет Start сразу же делает форвард, по сути означает передает управление серверу со словами вот тебе request вот тебе response вот тебе урл "/authcheck" а я умываю руки
4. сервер которому все это передали ищет по урл того кто же должен обрабатывать урл /authcheck, и находит сервлет AuthCheck и всучивает ему многстрадальный response и request и говорит - давай обрабатывай.
5. сервлет AuthCheck проверяет если в сессии параметр "l". Поскольку это в первый раз то естесно в сессии пусто. Поэтому он делает форвард, что опять по сути означает передает управление серверу со словами вот тебе request вот тебе response вот тебе урл "login.jsp" а я закончил.
6. сервер ищет кто же обрабатывает login.jsp (jsp это тот же сервлет скопилированный jasperom) говорит этому скомпилированному сервлету вот тебе request вот тебе response работай.
7. login.jsp точнее скомпилированный сервлет берет response и пишет в него свое содержимое(то что написано в самом jsp) login.jsp
8. этот response получает и рисует браузер

т.е. в браузере вы открыли урл /start а получили туда содержимое сервлета login.jsp ( в браузере в адресной строке все также /start)

тут вы забивате логин и пароль наживаете отправить, и браузер отправляет запрос на урл /login и все начинается по новой
1.сервер ищет кто обрабатывает урл /login, находит Logincheck сервлет и ему передает управление, тот достает параметр "login" и заносит в сессию атрибут "l" со значенеи "login", затем возвращает управление серверу предаварительно всучив ему request, response и урл /start
2. сервер ищет кто обрабатывает url /start и находит Start сервлет и передает ему управление вместе с request и response
3. сервлет Start тут же возвращает управление серверу со словами передай дальше вот тебе request, вот тебе response вот тебе урл /autchchek
4. сервер ищет кто обрабатывает /authcheck и находит Authccheck сервлет и всучивает ему request и response со словами "на работай"
5. сервлет Authcheck проверяет сессию находит там атрибут "l" и передает управление (форвардит) серверу c request, response и урл info.jsp
6. сервер ищет кто должен обработать урл info.jsp и находит этот скомпилированный сервлет(обычно в контейнере есть место куда он компилирует Jps что то вроде info_jsp.java и info_jsp.class) который должен обработать этот урл и говорит ему вот тебе request, response, работай
7. этот скопилированный сервлет берет response и пишет туда свое содержимое
8. браузер получает это response и рисует содержимое.

т.е в браузере у вас стоит урл /login а получаете вы содержимое info.jsp (в браузере в адресно строке все также /login



Теперь когда сессия протухнет (30мин в томкате по умолчанию) в урл браузера все еще написано /login и если вы нажмете F5 То запрос уйдет на /login
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38910158
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F5 это по сути повторить последний запрос, а последний запрос был запрос на урл /login с параметром "login".

вот у вас по новой идет запрос на урл /login, сервер передает управление сервлету Logincheck тот устанавливает атрибут сессии "l", затем передает управление серверу, с новым урл /start, который сервер тут же передает сервлету Start, который тут же возвращает управление серверу с новым /authcheck, сервер отдате обработку этого запроса на сервлет Authcheck, который естесно (поскольку Logincheck сервлет проставил уже атрибут "l") передает управление серверу и новый адрес info.jsp, и сервер тут же находит обработчик урл info.jsp и отдает ему управление и он возвращает содержимое info.jsp.
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38910345
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming....
F5 это по сути повторить последний запрос, а последний запрос был запрос на урл /login с параметром "login".

вот у вас по новой идет запрос на урл /login, сервер передает управление сервлету Logincheck тот устанавливает атрибут сессии "l", затем передает управление серверу, с новым урл /start, который сервер тут же передает сервлету Start, который тут же возвращает управление серверу с новым /authcheck, сервер отдате обработку этого запроса на сервлет Authcheck, который естесно (поскольку Logincheck сервлет проставил уже атрибут "l") передает управление серверу и новый адрес info.jsp, и сервер тут же находит обработчик урл info.jsp и отдает ему управление и он возвращает содержимое info.jsp.

с Вами полностью согласен, и естественно появляется вопрос как быть в таких случаях?
т.к. Вы уже сказали что при нажатие F5 запрос поступает с начала в LoginCheck который тут же прикрепляет в сессию атрибут...
З.Ы. в таком случае толк от таймаута?
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38910691
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
imho логика серфинга по страницам, не должна перемешиваться с проверкой входа\логина\пароля.
Иначе вы такую лапшу наделаете, что потом не разберётесь в переходах.
Т.е. придумайте другой пример без аутентификации, либо разбейте на 2 уровня по слоям (возьмите готовое).
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38910712
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Музаффар,
imho логика серфинга по страницам, не должна перемешиваться с проверкой входа\логина\пароля.
Иначе вы такую лапшу наделаете, что потом не разберётесь в переходах.
Т.е. придумайте другой пример без аутентификации, либо разбейте на 2 уровня по слоям (возьмите готовое).

Просто после успешно логина нужно поменять ссылку в адресной строке браузера. Это можно сделать только вернув на http запрос с кодом 302 и установленным новым урл в хидере location который браузер тут же запросит у сервера без перерисовки контента
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38910724
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
ну дак логика входа ещё должна болтаться по всем страничкам.
Т.е. при входе с ярлыка рабочего стола на страничку N будет проверка сессии, новая сессия и переход именно на эту страничку.
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38911174
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123lleming,
ну дак логика входа ещё должна болтаться по всем страничкам.
Т.е. при входе с ярлыка рабочего стола на страничку N будет проверка сессии, новая сессия и переход именно на эту страничку.

Все верно.
Проще повесить фильтр с url-pattern "*" который будет проверять есть ли в сесии идентификатор валидности сессии или нет, и фильтр будет редиректирть если вдруг невалидная сессия.
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38911230
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
+1
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38911556
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

не смог ответить сразу, за это прошу прошения.

да, в конечном итоге остановлюсь в фильтрах... но как то не получается у меня или недопонимаю к сожалению
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38911558
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

если есть возможность можете маленький примерчик показать?

З.Ы. исходя из моих примеров если можно.
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38911761
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
дак тебе давали ссылку.
Начинать код советую тебе, а не ждать от мемберов.
Вопрос то тривиален для 2х страниц.
...
Рейтинг: 0 / 0
Обновления или F5 в веб странице
    #38911842
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

да я понимаю, к сожалению со временем ни как не получается сесть и писать... по этому попросил маленький пример...
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Обновления или F5 в веб странице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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