2011-07-26 4 views
0

私はこのような複数のIDに応じてHTMLイメージを生成するためのHttpServletを使用:HttpServletを使用してhtml-imgソースイメージを生成する - > POST経由でリクエストする方法?

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

someServletdoGet()doPost()方法を上書きjavax.servlet.http.HttpServletから延びています。応答コンテンツタイプをimg/pngに設定し、応答出力ストリームを使用して、生成された画像をビューにコミットします。

サーブレットマッピングは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に設定してみましたが、期待通りに動作しませんでした。

EDITは:(5-10のUUIDと)私の要求はあなたがGETの代わりにPOSTリクエストを送信するために<img>要素を変更することはできません

+0

なぜ画像をPOSTでリクエストしたいのですか? – BalusC

+0

getパラメータの長さが限られているので、私はPOSTを使いたいです。私はGETリクエストの長さを超えるパラメータとして5〜10 UUIdsをコミットします。 – mosk

答えて

3

GETリクエストの制限を超えたので、私はこれを必要とします。これは意味がありません。

質問にコメントを1として、クエリ文字列の長さの制限が主な理由のようです:GETパラメータの長さが限られているので、私は、POSTを使用したい

。私はGETリクエストの長さを超えるパラメータとして5〜10 UUIdsをコミットします。

代わりに、パス情報としてURLの一部として渡します。だから、代わりに

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

使用

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

のあなただけの

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

にサーブレットのURLパターンを変更し、

String[] ids = request.getPathInfo().substring(1).split("/"); 
// ... 
を次のようにIDを取得する方法を変更する必要があります
+0

ありがとうBalusC。あなたが正しくあなたの考えを理解したら、バイトをセーブすることです。しかし、私はすでにこれをやっています。私は、私の最初のポストでは、申し訳ありませんが言及すべきでした。私の呼び出しは実際には次のようになります: ' mosk

+1

あなたは私を理解していません。 URLの '?'の後ろにある部分です。私は、クエリー文字列を完全に取り除き、純粋にURLパス情報を調べるソリューションを提案しました。リクエストパラメータの代わりにパス情報として取得するためにサーブレットコードを変更するだけです。答えをもう一度読み返してください。 – BalusC

+0

それを入手しました。 – mosk

関連する問題