-4

メインのサーブレットから別のサーブレットを呼び出しています。jsp を実装すれば簡単だったでしょうが、この実験の目的はサーブレットのみを使用することです。

4

1 に答える 1

2

クラス内でメソッドを複数回オーバーライドすることはできないため、doPost複数回オーバーライドすることはできません。

オーバーロードするつもりなら、それを行う正当な理由はありません。最終的に、これらのメソッドの 1 つだけがサーブレット コンテナによって呼び出されます。

1 つのサーブレットを使用して複数の種類のリクエストを処理する場合は、実行するアクションを示すパラメーターを送信できます。例えば:

@WebServlet("/person")
public class PersonCRUDServlet extends HttpServlet {

    private static final String ADD = "add";
    private static final String DELETE = "delete";

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        String action = request.getParameter("action");
        //using if assuming you work with Java SE 6
        if (ADD.equals(action)) {
            add(request, response);
        } else
        if (DELETE.equals(action)) {
            delete(request, response);
        } else {
            //submitted action can't be interpreted
            //or no action was submitted
            errorForward(request, response);
        }
    }

    private void add(HttpServletRequest request, HttpServletResponse response) {
        //handle logic for add operation...
    }

    private void delete(HttpServletRequest request, HttpServletResponse response) {
        //handle logic for delete operation...
    }

    private void errorForward(HttpServletRequest request, HttpServletResponse response) {
        //handle logic for delete operation...
    }
}

これを手動で処理するには多くの作業が必要であることに注意してください (これが、Java Web MVC フレームワークが存在する理由です)。参照することもできます

于 2013-04-10T17:35:29.910 に答える