java-以编程方式更改ServletRequest服务器名称
作者:互联网
我需要在Grails控制器中更改ServletRequest对象的serverName.由于serverName是只读属性,因此我很难弄清楚该怎么做.
解决方法:
最正确的做法可能是设置一个聪明的过滤器或重定向,以便在您的servlet尚未介入之前就“修复”您的请求URL.我不知道该怎么做.您应该在serverfault.com上询问是否要这样做.
在Java中,可以通过创建自己的HttpServletRequestWrapper子类来伪造它,该子类提供setServerName()并覆盖getServerName(),同时将所有其他方法委托给超类.然后,您可以提供一个过滤器,该过滤器创建您的请求的一个实例并将其发送到链下.
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
YourHttpServletRequest yourRequest =
new YourHttpServletRequest(request, newServerName);
chain.doFilter(yourRequest, response);
}
标签:grails,spring,java 来源: https://codeday.me/bug/20191121/2053852.html