我有一个在嵌入式 jetty 服务器上运行的应用程序。我已经定义了上下文路径:
ServletContextHandler context =...
context.setContextPath("/dev");
我可以正确访问我的应用 http://application.com:8080/dev
当我像这样使用 HttpServletResponse 的 sendRedirect 函数时:
resp.sendRedirect("/login");
形成的 URL 没有使用应用程序上下文。它正在返回 http://application.com:8080/login
insetad of http://application.com:8080/dev/login
如何配置这条路径?
最佳答案
当您使用具有前导“/”的位置调用 sendRedirect()
时,它总是相对于服务器根目录,不是应用程序上下文。为了实现你想要的,你必须自己附加上下文路径,例如:
response.sendRedirect(request.getContextPath() + "/login");
为了让它在所有情况下都能工作,最好对其进行编码:
response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + "/login"));
关于java - Jetty 重定向和上下文路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070639/