2016-02-25 43 views
1

我需要根据url中的用户名重定向url。根据Java中的用户名称进行Url重定向

让说,网址是

形式得到http://192.168.2.0/user1/app/node-id/info

然后,

应该这个URL重定向到不同的服务器一样,

得到http://192.168.2.1/app/node-id/info

的客户端应该不知道这个事实,它正在被重定向。 他/她应该看到相同的url,但响应应该来自Json或html格式的重定向url。

我们可以通过请求转发执行。

每一处我都能看到解决方案的servlet方式。 做春天的最佳方式是什么?

回答

0

Java servlet具有重定向和转发方法。它们之间的区别在here上进行了说明,您可以按如下方式使用它们;重定向改变了url,但转发处理请求内部。

如果你想将用户重定向到一个远程URL检查this Q&A,也许在不改变浏览器的地址重定向,最简单的方法是用url阅读它并把它写进响应上的servlet

private void redirect(ResponsePage aDestinationPage, HttpServletResponse aResponse) throws IOException { 
    String urlWithSessionID = aResponse.encodeRedirectURL(aDestinationPage.toString()); 
    aResponse.sendRedirect(urlWithSessionID); 
} 

private void forward(ResponsePage aResponsePage, HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletException, IOException { 
    RequestDispatcher dispatcher = aRequest.getRequestDispatcher(aResponsePage.toString()); 
    dispatcher.forward(aRequest, aResponse); 
} 

另外的用户名在url地址上,您可以使用filters并将其重定向为您的愿望。如需使用带滤波器的弹簧,请检查herehere

+0

有没有特殊的弹簧方式来转发请求? –

+0

我认为过滤器可以解决您的问题。有关使用弹簧与过滤器请检查http://learningviacode.blogspot.com.tr/2013/07/filters-and-spring.html和http://www.mkyong.com/spring-mvc/how-to-寄存器-A-servlet的过滤器在弹簧-MVC / –