我在攔截和更改請求url以將其鏈接到正確的URL時遇到問題。 我正在使用條紋框架,並希望將用戶重定向到正確的子域。 例如。如果用戶屬於abc.sitename.com並且請求來自xyz.sitename.com,那麼他應該被重定向到包含所有請求帖子的abc.sitename.com。 對於getparameter,我通過在生命週期解析執行之前簡單地獲取請求url和請求查詢並從定製攔截類重定向用戶來完成此操作。但是所有的post參數都會刷新,因爲它是重定向的。 另一種解決方案是正向解析,但它可以框架內採取用戶,我需要重寫它:攔截和更改請求url使用Stripes框架
resolution = new OnwardResolution<ForwardResolution>(reponseUrl) {
@Override
public void execute(HttpServletRequest request,
HttpServletResponse response) throws Exception {
request = ctx.getRequest();
response = ctx.getResponse();
String path = reponseUrl; //getUrl(request.getLocale());
// Set event name as a request attribute
String oldEvent = (String) request.getAttribute(StripesConstants.REQ_ATTR_EVENT_NAME);
//request.setAttribute(StripesConstants.REQ_ATTR_EVENT_NAME, event);
log.info("check: {}", path);
// Revert event name to its original value
request.setAttribute(StripesConstants.REQ_ATTR_EVENT_NAME, oldEvent);
// Figure out if we're inside an include, and use an include instead of a forward
RequestDispatcher dispatcher = request.getRequestDispatcher(path);
//request.getRequestDispatcher(path).forward(request, response);
dispatcher.forward(request, response);
}
};
但它調用應用程序上下文路徑,而應該稱之爲完整的URL。 另一個解決方案,如果我使用重定向解析並設置includerequest參數true將執行該作業,但是將所有請求參數放入url中,這使得它不可接受。
請求url應該在解析executuion之前更改,因爲在它之後它將無用,我試過了。有什麼方法可以在HTTPServeletRequest中設置請求URL。
我也試圖在ActionBeanResolution期間攔截,這是做這種活動的最佳場所。我的主要問題是POST參數。我無法重定向(因爲它們被刷新,或者如果使用包括請求參數,它們在URL中可見)。在前後關係的前提下解決。如果有辦法將其轉發到新的URL,它將完成這項工作。
在此先感謝。
好的..但我們可以轉發請求與帖子。我只是無法在Stripes框架中正確使用RequestDispatcher轉發方法。當我設置「http://xyz.sitename.com」時,它會在製作「/http:/xyz.sitename.com」時附加「/」。你有沒有遇到這樣的問題..並感謝您的回覆.. –
轉發只能轉發到同一個應用程序的資源,在同一臺服務器上。這是一個內部應用的事情。對於瀏覽器來說它是完全透明的,它將保持在同一個URL中。它與重定向無關。 –
有沒有什麼辦法可以在HTTPServletRequest中設置請求URL ..我弄清楚了..如果這可能會解決這個問題.. –