java - 以编程方式更改 ServletRequest 服务器名称

标签 java spring grails

我需要在我的 Grails Controller 中更改 ServletRequest 对象的服务器名称。由于 serverName 是只读属性,我无法弄清楚如何执行此操作。

最佳答案

最正确的做法可能是设置一个聪明的过滤器或重定向,在您的 servlet 参与之前“修复”您的请求 URL。我不知道该怎么做;你应该问serverfault.com如果你想这样做。

在 java 中,您可以通过创建自己的 HttpServletRequestWrapper 子类来伪造它,它提供 setServerName() 并在委托(delegate)时覆盖 getServerName()父类(super class)的所有其他方法。然后,您可以提供一个过滤器,该过滤器创建您的请求实例并将该实例发送到链中。

public void doFilter(ServletRequest request, ServletResponse response,
             FilterChain chain) 
             throws IOException, ServletException {
  YourHttpServletRequest yourRequest =
              new YourHttpServletRequest(request, newServerName);
  chain.doFilter(yourRequest, response);
}

关于java - 以编程方式更改 ServletRequest 服务器名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23772932/

相关文章:

java - 扫描仪对象一直等待输入

java - 如何在 if 语句之外保存变量

java - 如何使用 Spring data jdbc 插入带有自定义 id 的记录?

grails - 在应用程序内使用本地托管的DNS

spring - 在 Grails 中动态设置消息 i18n

Java Applet 网络 URL 连接用户名和密码在 Java 控制台中可见

Java 图形绘图未显示在绘图面板上

java - rowspan 的 Thymeleaf 表问题(1 个订单,N 篇文章)

java - 如何在 IDEA Intellij 上使用 Spring-boot 进行自动重新加载

url - 如何从 Grails 应用程序的 URL 中删除应用程序名称?