如何在JSP中的特定按钮的单击/提交事件上调用特定的Java方法?

Tus*_*rde 25 methods jsp servlets button

我的Java文件是:

public class MyClass {

    public void method1() {    
        // some code
    }

    public void method2() {
        //some code
    }

    public void method3() {
        //some code
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的JSP页面中,我有三个HTML按钮.

如果我点击button1,那么只会method1被调用,如果我点击,button2那么只会method2执行,如果button3,然后只有method3,依此类推.

我怎样才能做到这一点?

Bal*_*usC 43

只需为各个按钮元素指定一个唯一名称即可.按下时,按钮的名称可用作请求参数,与输入元素一样.

你只需要确保该按钮,输入有type="submit"作为<input type="submit"><button type="submit">没有 type="button",只呈现一个"死"按钮,纯粹是为了onclick东西和所有.

例如

<form action="${pageContext.request.contextPath}/myservlet" method="post">
    <input type="submit" name="button1" value="Button 1" />
    <input type="submit" name="button2" value="Button 2" />
    <input type="submit" name="button3" value="Button 3" />
</form>
Run Code Online (Sandbox Code Playgroud)

@WebServlet("/myservlet")
public class MyServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        MyClass myClass = new MyClass();

        if (request.getParameter("button1") != null) {
            myClass.method1();
        } else if (request.getParameter("button2") != null) {
            myClass.method2();
        } else if (request.getParameter("button3") != null) {
            myClass.method3();
        } else {
            // ???
        }

        request.getRequestDispatcher("/WEB-INF/some-result.jsp").forward(request, response);
    }

}
Run Code Online (Sandbox Code Playgroud)

或者,使用<button type="submit">而不是<input type="submit">,然后您可以给它们所有相同的名称,但一个唯一的值.<button>不会将该值用作标签,您可以将自己指定为子级.

例如

<form action="${pageContext.request.contextPath}/myservlet" method="post">
    <button type="submit" name="button" value="button1">Button 1</button>
    <button type="submit" name="button" value="button2">Button 2</button>
    <button type="submit" name="button" value="button3">Button 3</button>
</form>
Run Code Online (Sandbox Code Playgroud)

@WebServlet("/myservlet")
public class MyServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        MyClass myClass = new MyClass();
        String button = request.getParameter("button");

        if ("button1".equals(button)) {
            myClass.method1();
        } else if ("button2".equals(button)) {
            myClass.method2();
        } else if ("button3".equals(button)) {
            myClass.method3();
        } else {
            // ???
        }

        request.getRequestDispatcher("/WEB-INF/some-result.jsp").forward(request, response);
    }

}
Run Code Online (Sandbox Code Playgroud)

也可以看看: