2012-01-01 14 views
2

呼び出します:HTMLフォームのメソッドのPOSTは、私がこのようなHTMLフォームを持っているJavaサーブレットのdoGetメソッド

form.html:

post2.class:

<html> 
<body> 

your name is :<br><br> 

<form ACTION="../post2" METHOD="POST"> 
<input name="name" type="text" id="name"/> 
<input name="send" type="submit" value="send"/> 
</form> 

</body> 
<html> 

この要求にサービスを提供するサーブレット:

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.http.*; 

    public class post2 extends HttpServlet 
    { 

protected void doDo(HttpServletRequest request,HttpServletResponse response) 
throws IOException{ 

String name = request.getParameter("name"); 

response.setContentType("text/html"); 
PrintWriter out = response.getWriter(); 

out.println("<HTML><BODY>"); 
out.println("<H2>hello "+name+"</H2>"); 
out.println("<BR><BR>"); 
out.println("info:"); 
out.println("<BR><BR>"); 
out.println("<H2>metoda GET</H2>"); 
out.println("<BR><BR>"); 
out.println("SERVER_NAME="+request.getServerName()+"<BR>"); 
out.println("REQUEST_METHOD="+request.getMethod()+"<BR>"); 
out.println("QUERY_STRING="+request.getQueryString()+"<BR>"); 
out.println("REMOTE_HOST="+request.getRemoteHost()+"<BR>"); 
out.println("REMOTE_ADDR="+request.getRemoteAddr()); 
out.println("</BODY></HTML>"); 
} 


@Override 
public void doGet(HttpServletRequest request,HttpServletResponse response) 
throws IOException {  
doDo(request,response); 
} 

@Override 
public void doPost(HttpServletRequest request,HttpServletResponse response) 
throws IOException { 
doDo(request,response); 
} 

} 

と結果は次のとおりです。

hello null 


info: 

SERVER_NAME=localhost 
REQUEST_METHOD=GET 
QUERY_STRING=null 
REMOTE_HOST=127.0.0.1 
REMOTE_ADDR=127.0.0.1 

何が間違っていますか?私にとっては、サーブレットはフォームのpostメソッドを見ないようです。 (

648 126.229267 87.105.184.89 192.168.1.100 HTTP 557 POST/POST2 HTTP/1.1:...イムはcompletlyそれが正常に動作していない理由はわかりません、

のwiresharkからの結果を助けてくださいアプリケーション/ x-www-form-urlencodedで)

953 379.456916 192.168.1.100 87.105.184.89 HTTP 239 HTTP/1.1 302移動 一時

955 379.462518 192.168.1.100 87.105.184.89 HTTP 470 GET/POST2/ HT TP/1.1

957 379.463979 192.168.1.100 87.105.184.89 HTTP 431 HTTP/1.1 200 OK (テキスト/ HTML)

ルーティングロジック:

tomcat\webapps\ROOT\form.html - >\tomcat\webapps\post2\WEB-INF\classes\post2.class

+1

は、 ''タグを忘れてしまいました。 –

+2

Wiresharkなどを使用して実際にPOSTを取得していることを確認します。 –

+0

実際にフォームを送信していますか? 'name'がnullの場合、フィールドは送信できません。入力要素に値がない場合は空の文字列になります。 –

答えて

2

リダイレクトが原因である可能性がありますか? "/ post2"が "/ post2 /"にリダイレクトされた場合、POSTリクエストはGETに変換され、すべての投稿データが失われます。

ブラウザで「/ post2」に直接アクセスしてみてください。

+0

同じ..私は思う - REQUEST_METHOD = GET – mynameismarcin

+1

あなたの質問を編集し、ロジック、フレームワークが特定のURLをdoDoビューにルーティングする方法 –

+0

あなたが正しいと思うのは、私が/ post2から/ post2/postへのリダイレクトをうまく動作させたときです。ありがとうございました:) – mynameismarcin

0

入力タグにvalue属性を追加する必要があります。

<input name="name" type="text" id="name" value=""/> 

そこに値を入力する(入力することによって) - デフォルトでは、空欄は送信されません。簡単にするために

、これを試してみてください、事前に設定した値:サーバーにフォームを提出されていないため、

<input name="name" type="text" id="name" value="john"/> 
+0

私はあなたが言ったように値を追加しますが、これは助けになりません..私はフォームでGETメソッドサーブレットが正しく表示されるときにBTWを使用してください – mynameismarcin

0

null問題が発生します。

-1

これはあなたの問題を解決:スタートのために

String name = request.getParameter("name").toString(); 
+0

あなたはどのように/それが問題を解決するのかを詳しく教えてください。答えだけではなく、洞察力を提供する方がよいでしょう。 –

関連する問題