我需要根据url中的用户名重定向url。
假设 url 的形式为
获取http://192.168.2.0/user1/app/node-id/info
那么,
它应该将此网址重定向到不同的服务器,例如,
获取http://192.168.2.1/app/node-id/info
客户端应该不知道它正在被重定向。 他/她应该看到相同的 url,但响应应该来自 Json 或 html 格式的重定向 url。
我们可以通过请求转发来执行此操作。
每个地方我都能看到servlet方式的解决方案。 Spring 的最佳方法是什么?
最佳答案
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并按照您的意愿重定向它们。如需使用带过滤器的 Spring ,请检查here和 here
关于java - Java根据用户名进行url重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35629836/