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

原文 标签 java spring grails

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

最佳答案

最正确的做法可能是设置一个巧妙的过滤器或重定向,在您的 servlet 参与之前“修复”您的请求 URL。我对如何做到这一点一无所知;你应该问 serverfault.com如果你想这样做。

在java中,你可以通过创建自己的HttpServletRequestWrapper的子类来伪造它。提供setServerName()并覆盖 getServerName()同时将所有其他方法委托(delegate)给父类(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 - EditText在RecyclerView中失去了对Scroll的关注

java - 是否有可能将内部连接选择结果转换为嵌套列表 JSON?

java - 可以在运行时更改spring注入(inject)的实现类吗?

java - 如何自定义Spring Web服务的PayloadValidatingInterceptor响应消息?

java - 将元信息存储为简​​单的枚举或数据库?

java - Spring Controller 注册了两次

java - 如何配置 Spring 以从 jar 外部加载 application.properties?

grails - Grails验证密码

grails - 在域类中添加 getter 方法后出错

grails - 多选多选