Java Jersey:如何在地址栏中重定向/转发而不更改URL

Java Jersey:如何在地址栏中重定向/转发而不更改URL,java,rest,redirect,jersey,jax-rs,Java,Rest,Redirect,Jersey,Jax Rs,我正在使用Jerysey的JAX-RS实现来编写RESTAPI。我处理get请求的POJO最终将其转发给JSP。一切正常,问题是转发导致浏览器地址栏中的URL更改为请求转发到的URL。如何在地址栏中不更改此URL的情况下执行重定向?目前,我尝试了4种不同的方法: 返回Response.seeOther(uri).build() 返回响应。临时重定向(uri) //引发的异常: 抛出新的WebApplicationException(响应) 返回Response.status(303.locati

我正在使用Jerysey的JAX-RS实现来编写RESTAPI。我处理get请求的POJO最终将其转发给JSP。一切正常,问题是转发导致浏览器地址栏中的URL更改为请求转发到的URL。如何在地址栏中不更改此URL的情况下执行重定向?目前,我尝试了4种不同的方法:

返回Response.seeOther(uri).build()

返回响应。临时重定向(uri)

//引发的异常: 抛出新的WebApplicationException(响应)


返回Response.status(303.location(uri.build())

这听起来不像是一件球衣的问题。Jersey正在尽其所能接收请求,进行一些处理,并返回您期望的响应

这听起来更像是一个servlet容器问题。为什么不想在浏览器中更改url

Restful服务可以(也应该)在构建时不考虑模板/JSP/使用者。看一看像restasured这样的库,为您的工作编写一些测试,您将看到它正按预期运行

<>而不是呈现给JSP,考虑使用REST客户端对您的服务进行直接HTTP请求。

如果您希望URL保持不变,请考虑使用Ajax库(jQuery或其他基于JavaScript的解决方案)进行HTTP调用。


我希望这有帮助

RESTful资源由URL标识。因此,如果您使用另一个URL重定向到另一个资源,地址栏中的URL应该会更改。这很好,因为您可以将此URL添加到书签或通过电子邮件发送


这里的问题是,您是真的重定向到另一个资源,还是只想返回不同的表示(HTML而不是JSON)。如果是后者,则不应重定向。让您的资源类通过使用直接返回
text/html

您可以在iFrame中创建整个网站,并将新网站加载到该框架中。它将维护页面URL并加载您的内容