powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Редирект из сервлета
12 сообщений из 12, страница 1 из 1
Редирект из сервлета
    #39280815
Joysi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь освоить Servlet-ы. Не могу организовать вызов GET TaskServlet-а через Post TaskListServlet-а (чтобы по клику на конкретном задании странице списка заданий перешел на детализированное его описание на другой странице).

Браузер не отображает нужный jsp при редиректе из другого сервлета.
Есть сервлет TaskServlet:
Код: java
1.
2.
3.
4.
5.
6.
7.
public class TaskServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            RequestDispatcher rd = req.getRequestDispatcher("/task.jsp");
            rd.forward(req, resp);
    }
}



Описан в web.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
    <servlet>
        <servlet-name>task</servlet-name>
        <servlet-class>com.joysi.servlet.TaskServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>task</servlet-name>
        <url-pattern>/task</url-pattern>
    </servlet-mapping>
...



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

Но если в другом сервлете при обработке Post попытаться на него перенаправить
Код: java
1.
2.
3.
4.
5.
6.
public class TaskListServlet  extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.sendRedirect("/task");
    }
...




, то не переправляет на страницу task.jsp в браузере, хотя и попадает в TaskServlet.doGet() через вызов resp.sendRedirect("/task") в методе doPost() - проверял при отладке.
Не подскажете, пожалуйста,чего я пропустил?
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39280879
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JoysiНе подскажете, пожалуйста,чего я пропустил?
Пропустил почитать логи и посмотреть HTTP статус. Если в doGet таки попадает, значит что-то не так с форвардом?
http://theopentutorials.com/tutorials/java/design-patterns/post-redirect-get-prg-pattern-in-servlet-jsp/
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39280939
Joysi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ!
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, но через редирект не меняет страницу в браузере)? Где увидеть?
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39280947
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joysi,

Вы пользуетесь инструментами разработки в браузере?
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39281111
Joysi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Посмотрел в инструментах разработчика,
после редиректа новая страница в браузере не отображается (показывается старая, с которой и был послан post ), хотя события проходят:

Network:
tasklist:GET (показывается форма в браузере) Status = 200
tasklist:POST(по клику отправили POST который должен перенаправить на другую страницу) Status=302
task:GET (сервлет отправил страницу) Status = 200, ее можно даже посмотреть в Network -> Preview. Но она не отображается (не сменили страницу tasklist). Не знаю как на стороне браузера ее принудительно отобразить (сменить страницу с которой был послан Post), что добавить в request в метод doGet() перед forward ?
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39281118
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joysitasklist:POST(по клику отправили POST который должен перенаправить на другую страницу) Status=302
может адрес неверный?
- должен быть не статус 200 и урл должен в браузере смениться
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39281123
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joysi,
пиши константой прямо:
response.sendRedirect("/myservlet")
- myservlet должен быть. Или на index.html направь.
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39281132
Joysi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, спасибо

может адрес неверный?
- должен быть не статус 200 и урл должен в браузере смениться

Если в браузере напрямую (без Post-а) открыть - отрабатывает и отображает. Если через Post из другой формы - видно по событиям что получает, но не хочет отображать в браузере и сменить адрес с /tasklist на /task

пиши константой прямо:response.sendRedirect("/myservlet")
Так и было написано в doPost() resp.sendRedirect("/task");

task описан в web.xml
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39281165
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joysitasklist:POST(по клику отправили POST который должен перенаправить на другую страницу) Status=302
клик это сабмит?
авторАдрес, по которому клиенту следует произвести запрос, сервер указывает в заголовке Location
?
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39281167
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39281424
Joysi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо.
Ошибка была у меня в jsp - разобрался (исправил - сразу заработало).
Прошу прощение за потраченное вами время.
...
Рейтинг: 0 / 0
Редирект из сервлета
    #39281492
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joysi...
В примере по ссылке делается аналогично: EmployeeServlet в методе doPost выставляет атрибуты req и перенаправляет response.sendRedirect("displayEmployee.do?s=" + success) в DisplayEmployeeServlet.doGet() внутри которого также аналогично
request.getRequestDispatcher().forward(req, resp);
На данном этапе я просто статичные данные отображаю, потому и не выставляю атрибуты.

Что еще можно посмотреть в методе TaskServlet.doGet() ? В чем отличие одиночного вызова через браузер и через редирект из doPost() другого сервлета (статус в обоих случаях 200, но через редирект не меняет страницу в браузере)? Где увидеть?

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


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