- 締切済み
POSTを使って送信
PICNICServlet3にアクセスすると,名前とIPアドレスとポートのフォームが表示されて,入力してOKボタンをクリックするとPICNICへ送信されるというプログラムを作成しています. 一応作成してみたのですが,http://アドレス/POST.htmlとアドレスバーに打ち込み,フォームに入力してもエラーが出ます. 作成したプログラムです↓ (省略してあります.[;]など足りないときは移動ミスです) public void doGet(...){ DataString=...; String command=getParameterValue(request,"command"); putFileContents(filename,"request : "+request,true); putFileContents(filename,"command : "+command,true); try{ DatagramSocket datagram=new DatagramSocket(); //入力フォームからの名前を受け取り String s = request.getParameter("NAME"); byte[] a=s.getBytes(); 名前を入れる //入力フォームからIPアドレスを受け取り InetAddress add=InetAddress.getByName(request.getParameter("IPADDR")); //入力フォームからポートを受け取り int port=Integer.parseInt(request.getParameter("PORT")); pot,add,name送信 datagram.send(dpacket); datagram.close(); }エラー表示 携帯で見るための記述,送信したときの表示 } private String getParameterValue(HttpServletRequest request,String key){ String[] para=request.getParameterValues(key); if(para!=null&¶.length>=0) return para[0]; return""; } エラー表示など省略 } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- deadlock
- ベストアンサー率67% (59/87)
doGetに書いてあるようですが、フォームのメソッドはGETにしてあるのでしょうか?HTMLに <form method="POST" action="~~ と書いてあるのであれば、サーブレット側はdoPostが呼び出されます。 私はDatagramSocketを使ったことがないので、そちらは詳しい方のアドバイスを待ちましょう…。エラーメッセージや出てくる例外の種類、スタックトレースなどを書いてもらえると、ほかの方も回答しやすいでしょう。
お礼
回答ありがとうございました。 <form method="POST"となっていましたので変えてみましたが、まだ成功しませんでした。 /アドレス/POST.htmlで実行したとき、エラーは type Status report message /アドレス/PICNICServlet3 description The requested resource(アドレス/PICNICServlet3) is not available. というものです。アドレスバーには送信後、http://略/PICNICServlet3?UNAME=Kei&IPADDR=略&PORT=10となっていました。 /アドレス/PICNICServlet3で実行したときは <携帯で見るための記述,送信したときの表示>の部分に「OK! /PICNICServlet3 」と表示するようにしたので、それがブラウザに表示されていました。
補足
ちょっと勘違いしており、不明な点がまた出てきましたので、質問を改めさせていただきたいと思います。 1)http://アドレス/PICNICServlet3.javaと打ち、htmlのフォームを表示させたいのですが、それがわかりません。 2)また、htmlファイルから参照したいときは(htmlファイルは2つ上にある) request.getParameter("IPADDR")); このような表記でいいのでしょうか。