2014-01-05 74 views
0

我爲我的HttpservletRequest設置路徑信息如下。HttpservletRequest路徑信息設置不正確

request.setAttribute("javax.servlet.include.path_info", pathInfo); 

在此聲明後,我試圖獲取pathinfo,但返回null。

String info = request.getPathInfo(); 

info is null here。

我是否正確設置路徑?

回答

2

它不工作的方式。除了屬性以外,HttpServletRequest對象是隻讀的。你可以做的事情是用一個返回你想要的路徑信息的包裝代替請求對象。通常你會在Filter中這樣做,並將請求包裝在HttpServletRequestWrapper中。

+0

謝謝肖恩..其實我想修改收到的請求的路徑信息。修改請求的路徑信息後,我必須調用actionservlet.post操作。是否有任何示例資源可用於修改請求路徑信息。 – user3147325

+0

@ user3147325這正是httpservlerwrapper的用例。覆蓋包裝器中的gatPathInfo方法以返回所需的路徑信息。 –

1

第二部分是錯誤的。如果您將屬性設置爲servlet請求,則只能通過getAttribute方法獲取它。

因此,如果您設置使用值:

request.setAttribute("javax.servlet.include.path_info", pathInfo);

的你會得到該值重新使用:

request.getAttribute("javax.servlet.include.path_info");

現在request.getPathInfo()給人的URI後附加路徑信息。你的情況這將是空的,因爲那裏將是URI後什麼:

EG - 如果你有一個url = http://someHost.com/servletName?id=1234&name=fred

request.getPathInfo()將返回ID = 1234 *名稱=弗雷德

+0

感謝您的回覆。實際上,我想修改現有的請求對象路徑信息和參數。修改後,我想用這個請求調用一個actionservlet的dopost。有任何修改請求對象的方法(好/壞)。我已經看到HttpServletRequestWrapper的例子,有點困惑。你能指出一個合適的例子,適合我的要求 – user3147325

+0

你爲什麼要這樣做?無論如何,你無法修改servlet的pathInfo。它是隻讀的。我將創建一個pathInfo作爲requestAttribute並將其傳遞給servlet。在這個servlet中,我會得到它並將其用於doPosting。那有意義嗎。如果不是,我不明白你的問題。 – avijendr