2011-07-26 21 views
0

我使用的HttpServlet以生成HTML圖像依賴於多個ID這樣的:使用HttpServlet生成html-img源圖像 - >如何通過POST請求?

<img src="./someServlet?ids=123,124,125,126[...]" alt=""/> 

someServletjavax.servlet.http.HttpServlet延伸覆蓋doGet()doPost()方法。它將響應內容類型設置爲img/png,並使用響應輸出流將生成的圖像提交給視圖。

servlet映射在web.xml完成:

<servlet>   
    <servlet-name>SomeServlet</servlet-name> 
    <servlet-class>my.package.ImageServlet</servlet-class> 
</servlet> 
<servlet-mapping>   
    <servlet-name>SomeServlet</servlet-name> 
    <url-pattern>/someServlet</url-pattern> 
</servlet-mapping> 

我的問題:我如何通過POST而不是GET發送上述請求?我試圖用<form>標記設置方法爲POST,但如預期的那樣,它不起作用。

編輯:我需要這個,因爲我的要求(5-10的UUID)超過GET請求

+0

爲什麼要通過POST請求圖像? – BalusC

+0

我想使用POST,因爲get參數的長度是有限的。我提交了5-10個UUI作爲參數,超過了GET請求的長度。 – mosk

回答

3

您不能更改<img>元素髮送POST請求,而不是GET的極限。這沒有意義。

按照有關問題的評論的查詢字符串長度的限制似乎是主要原因:

我想使用POST,因爲GET參數的長度是有限的。我提交了5-10個UUI作爲參數,超過了GET請求的長度。

只需將其作爲URL的一部分傳遞給路徑信息即可。所以,與其

<img src="someServlet?id1=123&id2=234&id3=345&id4=456&id5=567" alt=""/> 

使用

<img src="someServlet/123/234/345/456/567" alt=""/> 

你只需要你的servlet的URL模式更改爲

<url-pattern>/someServlet/*</url-pattern> 

,改變獲取ID的方法如下

String[] ids = request.getPathInfo().substring(1).split("/"); 
// ... 
+0

謝謝BalusC。如果我正確理解你的想法是保存字節。但即時通訊已經這樣做了。我應該在我的開始帖子中提到,對不起。我的電話看起來像這樣:' mosk

+1

你不理解我。問題是查詢字符串的最大長度。部分位於URL的'?'後面我提出了一個解決方案,它完全擺脫了查詢字符串,並純粹通過URL路徑信息,只需要更改servlet代碼以獲取它作爲路徑信息而不是請求參數。再次重新閱讀答案。 – BalusC

+0

明白了,大的thx,它工作正常! – mosk

相關問題