java - Jetty 重定向和上下文路径

标签 java servlets jetty

我有一个在嵌入式 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/

相关文章:

java - Spring RestController : reject request with unknown fields

tomcat - 客户端将文件从 Web 服务器传输到另一台机器

java - tomcat/servlet 中的并发

java - 出生报告文件路径

java - 根据 application.yml 中的属性使用 Spring Boot 进行注入(inject)

java - 使用 "B map(A a1,A a2)"将 Stream<A> 转换为 Stream<B>

java - 为什么我的事务在 MySQL 中死锁?

java - 无法通过 Servlet 连接到 SQL Server,但可以在本地连接到它

spring-mvc - Spring4 MVC无法识别JSPS

java - 尝试在 Jetty 下运行的 Web 服务中启动 RMI 服务器时抛出 ClassNotFoundException