我需要更改 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/