2

eclipse eeとtomcatを使用してHTMLからJavaサーブレットに投稿しようとしていますが、Eclipseを介してサーバーを起動しています。しかし、私は次のようになっています:HTTPステータス405-HTTPメソッドPOSTはこのURLではサポートされていません

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">

</script>
</head>
<body>
<form method="POST" action="AddHost">
Host name : <input name="hostname" type="text"><br>
Genre : <input name="genre" type="text" ><br>
<input type="submit" value="add host">
</form>
</body>

</html>

これはサーブレットです:

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
@WebServlet("/AddHost")
public class Addhost extends HttpServlet {

    public void doPost(HttpServletResponse res,HttpServletRequest req) throws IOException{
        String hostname = req.getParameter("hostname");
        String genre = req.getParameter("genre");


    }
    public void doGet(HttpServletResponse res,HttpServletRequest req) throws IOException{
        doPost(res,req);
    }
4

1 に答える 1

4

メソッドdoPostの不正な署名を使用していて、オーバーライドする代わりに、オーバーロードしています

javadocからHttpServletには以下が含まれます。

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

したがって、これを変更する必要があります。

public void doPost(HttpServletResponse res,HttpServletRequest req)

これに:

@Override
public void doPost(HttpServletRequest req, HttpServletResponse res)

@Overrideアノテーションは必要ありませんが、そのような間違いを避けるために強くお勧めします。

編集: mthが提案するようなオーバーライドアノテーションを追加しました

于 2011-09-30T19:26:59.140 に答える