-2

に問題がありますservlet。フォームを送信するときに 2 つの数値の合計に対して get メソッドを呼び出す HTML ページがあり、エラーが発生しました。しかし、私はすでにservletクラスで get メソッドを宣言しています。

タイプ:近況報告

メッセージ: HTTP メソッド POST は、この URL ではサポートされていません

説明request-line で受信したメソッドは、オリジン サーバーによって認識されていますが、ターゲット リソースではサポートされていません。

サーブレット コード:

public class AddServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        int a=Integer.parseInt(req.getParameter("num1"));
        int b=Integer.parseInt(req.getParameter("num2"));
        int sum=a+b;
        resp.getWriter().println(sum+ " doGet method");
    }
}

html コード:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Servlet</title>
  </head>
  <body>
    <form action="add" method="get" >
      Enter 1st number<input type="text" name="num1">
      Enter 2st number<input type="text" name="num2">
      <input type="submit">
    </form>
  </body>
</html>

デプロイメント記述子コード: web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>ServletPractice1</display-name>
  <servlet>
    <servlet-name>AddServlet</servlet-name>
    <servlet-class>com.meet.servlet.AddServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>AddServlet</servlet-name>
    <url-pattern>/add</url-pattern>
  </servlet-mapping>
</web-app>
4

2 に答える 2

1

有効な doGet() メソッドがありません。サーブレットのパスをアドレス バーに直接入力すると、Tomcat などの Web コンテナーが doGet() メソッドを呼び出そうとします。

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException{
    ....        
}

または、次のようにサービス メソッドをオーバーライドします。

protected void service(HttpServletRequest リクエスト、HttpServletResponse レスポンス) throws ServletException、IOException { doPost(リクエスト、レスポンス); }

于 2019-10-19T05:59:05.883 に答える