我有一个变量,来自支付网关的返回URL。在监听器中访问HttpServletRequest对象
private static String response_url = "http://1.1.1.1:8001/abc/xyz.html";
// private static String response_url = "http://www.something.com/xyz.html";
第一个变量是本地服务器,第二个是生产环境,我评论和取消注释,根据环境取消注释变量。
<action name="viewResponseFile" class="controller.RAction" method="viewResponseFile">
<result name="success">somepage.jsp</result>
</action>
控制器映射上xyz.html
,它是从payment gateway
返回URL。现在我想说它是通用的。
我打算做的是在现有的Listener类上设置该变量。
<listener>
<listener-class>in.com.Initializer</listener-class>
</listener>
我试着用ServletRequestAware
让RequestURI
创建HttpServletRequest
,但没有成功。
public class Initializer implements ServletContextListener
{
ServletContext context;
public Initializer()
{
}
public void contextInitialized(ServletContextEvent contextEvent)
{
// set-up code
}
public void contextDestroyed(ServletContextEvent contextEvent)
{
}
}
那么如何才能实现这些要求呢?
在环境变量的情况下,我将不得不在'N'个服务器上设置环境。如果使用数据库方法创建单个URL的表是不可行的。没有办法在Listener类中选择'localhost:8080 \ project_name \'(动态主机名)? – piechuckerr
通常,一个web应用程序在dev和prod环境之间有很多不同的设置,或者甚至在环境之间是相等的,但是将来可能会改变,并且因此它们被参数化为表或env变量。 。顺便说一句,对于单个URL的情况,你不能从相对请求头中读取* referer *吗? –