我有一個變量,來自支付網關的返回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 *嗎? –