我在domainX上的Google App Engine上运行了一个应用。这允许用户输入数据,存储数据并显示它。
我也希望这个应用程序在DomainY上运行。我想使用2个应用程序的域名为DataStoreService生成密钥,以便不在2个域名之间共享数据。
如何获取域名?我知道我可以使用HttpServletRequest获取我的一个servlet的DoPost方法的url,但是如何获取域?我还需要在RemoteServiceServlet上获取域,该域没有HttpServletRequest来获取URL。
由于
答案 0 :(得分:3)
您可以引入一个映射到/*
的特殊过滤器,它将从HTTP请求中获取当前域,并将其存储到请求存储中以便以后重用。
我建议使用getServerName()
(Host
标题),而不是网址。
例如:
class RememberDomain implements Filter {
doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
DomainHolder.getInstance().setDomain(request.getServerName());
chain.doFilter(request, response);
}
... init and destroy
}
class DomainHolder {
//store domain here
pricate ThreadLocal<String> domain = new ThreadLocal<String>();
DomainHolder getInstance() { ... sigleton ... }
... get/set domain name
}