|
|
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Всем Здравствуйте! ребята помогите разобраться. имеется простой web проект в составе которого 3 сервлета и 2 html страницы: сервлет 1 это start приложения: Код: java 1. 2. 3. 4. сервлет 2: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. сервлет 3: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. соответственно хтмл страницы это логин.хтмл Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. и инфо.хтмл Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. для начала как бы все проходит правильно, т.е. сначала старт ----> AuthChech -->> lohin.html -->> LoginCheck -->> AuthCheck -->> info.html а вот когда нажимаю на F5 или просто обновить то проходить примерно вот так LoginCheck -->> AuthCheck -->> info.html а когда сессия заканчивается по таймауту то на сколько я знаю то должен попасть в страницу login.html а у меня опять (LoginCheck -->> AuthCheck -->> info.html) что делать что бы при обновлении страницы сначала попал на AuthCheck а не LoginCheck ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 15:24 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
только факты Есть 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 в адресной строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 17:20 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Authcheck - лучше заменить на Filter - http://tutorials.jenkov.com/java-servlets/servlet-filters.html будет один фильтр и два сервлета и две страницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 18:01 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
llemingПри обновлении страницы браузер попадает именно туда куда указывает адресная строка . прошу прошения, но где эту строку найти? чета не въехал... :( Atum1 http://www.journaldev.com/1933/java-servlet-filter-example-tutorial полезная ссылка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 19:02 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
МузаффарllemingПри обновлении страницы браузер попадает именно туда куда указывает адресная строка . прошу прошения, но где эту строку найти? чета не въехал... :( ну как, в браузере полосочка с http// или www ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 19:09 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
rema174ну как, в браузере полосочка с http// или www да уж... ну путь урл http://127.0.0.1:7101/Application1-Client-context-root/ logincheck?login=login у меня апп сервер weblogic. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 19:32 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
а по идее после таймаута переходить по пути start -> AuthCheck --> login.html а сейчас никак не попасть на страницу логин.хтмл ... без фильтров можно реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 19:35 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Музаффара по идее после таймаута переходить по пути 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 итд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2015, 09:57 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Atum1используйте basic authentication +1 действительно. Зачем вам логин форму рисовать во втором тысячилетии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2015, 10:34 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
вот пример который вы сможете скачать вместе с ide , как раз servlet . https://netbeans.org/kb/docs/javaee/ecommerce/security.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2015, 11:28 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Atum1, Спасибо за ссылки! на счет basic authentication может Вы и правы, плюс к этому ненадо изобретать велосипед и с этим согласень, но чтоб понять суть механизма наверное надо попробовать в стадии изучения, чтоб дальше было легче... вот по этому была создана такая тема :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 07:25 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Музаффар, Какой web server используете ? Думаю у них на сайте есть примеры с авторизацией : 1) basic 2) через login.jsp 3) https ssl cert для вас в будущем идеально подойдет : basic логин + https ssl cert (чтобы логин и пароль не украли :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 10:20 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Увидел : weblogic http://docs.oracle.com/cd/E11035_01/wls100/security/thin_client.html достаточно подробно все расписано :) 1)basic 2)login.jsp FORM Authentication 3) ваш вариант - свой модуль - если вы когда нибудь свалите с weblogic как правило любой web server сейчас имеет поддержу авторизации . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 10:26 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Atum1как правило любой web server сейчас имеет поддержу авторизации . ну да с этим согласен :) можно ещё использовать JAAS... просто не совсем понял каким образом при обновлении отправляется именно к LoginCheck'у а не другому сервлету?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 11:15 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
дайте маппинг url на ваши сервелеты , тогда можно будет сказать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 12:56 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
llemingдайте маппинг url на ваши сервелеты , тогда можно будет сказать имеете ввиду web.xml ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 13:41 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 13:55 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
. сначала старт ----> 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 16:11 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
F5 это по сути повторить последний запрос, а последний запрос был запрос на урл /login с параметром "login". вот у вас по новой идет запрос на урл /login, сервер передает управление сервлету Logincheck тот устанавливает атрибут сессии "l", затем передает управление серверу, с новым урл /start, который сервер тут же передает сервлету Start, который тут же возвращает управление серверу с новым /authcheck, сервер отдате обработку этого запроса на сервлет Authcheck, который естесно (поскольку Logincheck сервлет проставил уже атрибут "l") передает управление серверу и новый адрес info.jsp, и сервер тут же находит обработчик урл info.jsp и отдает ему управление и он возвращает содержимое info.jsp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 16:31 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
lleming.... F5 это по сути повторить последний запрос, а последний запрос был запрос на урл /login с параметром "login". вот у вас по новой идет запрос на урл /login, сервер передает управление сервлету Logincheck тот устанавливает атрибут сессии "l", затем передает управление серверу, с новым урл /start, который сервер тут же передает сервлету Start, который тут же возвращает управление серверу с новым /authcheck, сервер отдате обработку этого запроса на сервлет Authcheck, который естесно (поскольку Logincheck сервлет проставил уже атрибут "l") передает управление серверу и новый адрес info.jsp, и сервер тут же находит обработчик урл info.jsp и отдает ему управление и он возвращает содержимое info.jsp. с Вами полностью согласен, и естественно появляется вопрос как быть в таких случаях? т.к. Вы уже сказали что при нажатие F5 запрос поступает с начала в LoginCheck который тут же прикрепляет в сессию атрибут... З.Ы. в таком случае толк от таймаута? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 18:26 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Музаффар, imho логика серфинга по страницам, не должна перемешиваться с проверкой входа\логина\пароля. Иначе вы такую лапшу наделаете, что потом не разберётесь в переходах. Т.е. придумайте другой пример без аутентификации, либо разбейте на 2 уровня по слоям (возьмите готовое). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 09:46 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Petro123Музаффар, imho логика серфинга по страницам, не должна перемешиваться с проверкой входа\логина\пароля. Иначе вы такую лапшу наделаете, что потом не разберётесь в переходах. Т.е. придумайте другой пример без аутентификации, либо разбейте на 2 уровня по слоям (возьмите готовое). Просто после успешно логина нужно поменять ссылку в адресной строке браузера. Это можно сделать только вернув на http запрос с кодом 302 и установленным новым урл в хидере location который браузер тут же запросит у сервера без перерисовки контента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 10:16 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
lleming, ну дак логика входа ещё должна болтаться по всем страничкам. Т.е. при входе с ярлыка рабочего стола на страничку N будет проверка сессии, новая сессия и переход именно на эту страничку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 10:30 |
|
||
|
Обновления или F5 в веб странице
|
|||
|---|---|---|---|
|
#18+
Petro123lleming, ну дак логика входа ещё должна болтаться по всем страничкам. Т.е. при входе с ярлыка рабочего стола на страничку N будет проверка сессии, новая сессия и переход именно на эту страничку. Все верно. Проще повесить фильтр с url-pattern "*" который будет проверять есть ли в сесии идентификатор валидности сессии или нет, и фильтр будет редиректирть если вдруг невалидная сессия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2015, 14:57 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38907493&tid=2125668]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 463ms |

| 0 / 0 |
