Jersey:如何在地址栏中重定向/转发没有URL更改

时间:2014-09-03 00:38:09

标签: java rest redirect jersey jax-rs

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

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

返回Response.temporaryRedirect(uri),

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

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

3 个答案:

答案 0 :(得分:0)

这本身并不像泽西岛问题。泽西岛正在尽其所能接收请求,进行一些处理,并返回您期望的响应。

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

可以(而且应该)构建Restful服务而不关心模板/ JSP /使用者。看看像RestAssured这样的库,为你的工作编写一些测试,你会看到它按预期运行。

不要渲染到JSP,而是考虑使用rest客户端针对您的服务发出直接的http请求。

如果您希望url保持不变,请考虑使用AJAX库(JQuery或其他基于Javascript的解决方案)进行http调用。

我希望有所帮助!

答案 1 :(得分:0)

RESTful资源由URL标识。因此,如果您使用其他网址重定向到其他资源,则地址栏中的网址应更改。那很好,因为你可以这样做,例如为此URL添加书签或按电子邮件发送。

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

答案 2 :(得分:0)

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

http://www.w3schools.com/tags/tag_iframe.asp