我正在使用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();
答案 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并加载您的内容。