|
|
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Пытаюсь освоить Servlet-ы. Не могу организовать вызов GET TaskServlet-а через Post TaskListServlet-а (чтобы по клику на конкретном задании странице списка заданий перешел на детализированное его описание на другой странице). Браузер не отображает нужный jsp при редиректе из другого сервлета. Есть сервлет TaskServlet: Код: java 1. 2. 3. 4. 5. 6. 7. Описан в web.xml: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Одиночно из браузера отрабатывает, по localhost/task отлично отображает статический (на данный момент) task.jsp Но если в другом сервлете при обработке Post попытаться на него перенаправить Код: java 1. 2. 3. 4. 5. 6. , то не переправляет на страницу task.jsp в браузере, хотя и попадает в TaskServlet.doGet() через вызов resp.sendRedirect("/task") в методе doPost() - проверял при отладке. Не подскажете, пожалуйста,чего я пропустил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 09:34 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
JoysiНе подскажете, пожалуйста,чего я пропустил? Пропустил почитать логи и посмотреть HTTP статус. Если в doGet таки попадает, значит что-то не так с форвардом? http://theopentutorials.com/tutorials/java/design-patterns/post-redirect-get-prg-pattern-in-servlet-jsp/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 10:38 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ! resp.getStatus() = 200 в обоих случаях (что при одиночном вызове из браузера localhost/task что при редиректке из TaskListServlet). В примере по ссылке делается аналогично: EmployeeServlet в методе doPost выставляет атрибуты req и перенаправляет response.sendRedirect("displayEmployee.do?s=" + success) в DisplayEmployeeServlet.doGet() внутри которого также аналогично request.getRequestDispatcher().forward(req, resp); На данном этапе я просто статичные данные отображаю, потому и не выставляю атрибуты. Что еще можно посмотреть в методе TaskServlet.doGet() ? В чем отличие одиночного вызова через браузер и через редирект из doPost() другого сервлета (статус в обоих случаях 200, но через редирект не меняет страницу в браузере)? Где увидеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 11:22 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Joysi, Вы пользуетесь инструментами разработки в браузере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 11:26 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Посмотрел в инструментах разработчика, после редиректа новая страница в браузере не отображается (показывается старая, с которой и был послан post ), хотя события проходят: Network: tasklist:GET (показывается форма в браузере) Status = 200 tasklist:POST(по клику отправили POST который должен перенаправить на другую страницу) Status=302 task:GET (сервлет отправил страницу) Status = 200, ее можно даже посмотреть в Network -> Preview. Но она не отображается (не сменили страницу tasklist). Не знаю как на стороне браузера ее принудительно отобразить (сменить страницу с которой был послан Post), что добавить в request в метод doGet() перед forward ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 12:57 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Joysitasklist:POST(по клику отправили POST который должен перенаправить на другую страницу) Status=302 может адрес неверный? - должен быть не статус 200 и урл должен в браузере смениться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 13:02 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Joysi, пиши константой прямо: response.sendRedirect("/myservlet") - myservlet должен быть. Или на index.html направь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 13:03 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Petro123, спасибо может адрес неверный? - должен быть не статус 200 и урл должен в браузере смениться Если в браузере напрямую (без Post-а) открыть - отрабатывает и отображает. Если через Post из другой формы - видно по событиям что получает, но не хочет отображать в браузере и сменить адрес с /tasklist на /task пиши константой прямо:response.sendRedirect("/myservlet") Так и было написано в doPost() resp.sendRedirect("/task"); task описан в web.xml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 13:10 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Joysitasklist:POST(по клику отправили POST который должен перенаправить на другую страницу) Status=302 клик это сабмит? авторАдрес, по которому клиенту следует произвести запрос, сервер указывает в заголовке Location ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 13:32 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. Ошибка была у меня в jsp - разобрался (исправил - сразу заработало). Прошу прощение за потраченное вами время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 17:17 |
|
||
|
Редирект из сервлета
|
|||
|---|---|---|---|
|
#18+
Joysi... В примере по ссылке делается аналогично: EmployeeServlet в методе doPost выставляет атрибуты req и перенаправляет response.sendRedirect("displayEmployee.do?s=" + success) в DisplayEmployeeServlet.doGet() внутри которого также аналогично request.getRequestDispatcher().forward(req, resp); На данном этапе я просто статичные данные отображаю, потому и не выставляю атрибуты. Что еще можно посмотреть в методе TaskServlet.doGet() ? В чем отличие одиночного вызова через браузер и через редирект из doPost() другого сервлета (статус в обоих случаях 200, но через редирект не меняет страницу в браузере)? Где увидеть? Нет не аналогично смотреть forward vs redirect ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 18:56 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39281165&tid=2123869]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 391ms |

| 0 / 0 |
