java - Java根据用户名进行url重定向

标签 java spring-mvc redirect forward

我需要根据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 ,请检查herehere

关于java - Java根据用户名进行url重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35629836/

相关文章:

spring - 如何将动态值设置为@PropertySource?

java - 如果自动提交为真,@Transactional 注释是否有效?

java - Spring Data REST 存储库中的枚举翻译

java - xpath 和使用日期函数的查询

java - 一定时间后销毁java中的对象

java - 如何将 "listener"添加到 JList

java - java中的地理位置和系统时间的本地时间

apache - 将 301 从目录重定向到单个文件

python - Google App Engine - Python 中的裸域路径重定向

html - 域方向问题