Есть фильтр который передает управление определенному сервлету таки образом:
req.getRequestDispatcher("all_proposes").forward(req, resp);
Есть сервлет которой привязан к данному url:
<servlet>
<servlet-name>AllProposes</servlet-name>
<servlet-class>ru.pravvich.servlet.ProposesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AllProposes</servlet-name>
<url-pattern>/all_proposes</url-pattern>
</servlet-mapping>
И возвращает jsp страницу таким образом:
public class ProposesServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.getRequestDispatcher("/WEB-INF/view/all_proposes.jsp")
.forward(req, resp);
}
}
Фильтр перенаправляет запросы из корня http://localhost:8080/, и я хотел чтобы после передачи управления, путь в браузере клиента выглядел http://localhost:8080/all_proposes, однако не смотря на то что страница в ответ приходит правильно, url на клиенте не меняется.
Можно ли как-то сделать что бы путь менялся без resp.sendRedirect(), так как лишних запросов тоже делать не хочется. И если это возможно то как?
Клиент в любом случае должен каким-то образом узнать о том, что сервер перенаправляет его, так, что без лишних "телодвижений" не обойтись.
Используйте redirect.
RequestDispatcher.forward() vs HttpServletResponse.sendRedirect()
Difference between JSP forward and redirect
Продвижение своими сайтами как стратегия роста и независимости