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

如何在JSP中特定按钮的单击/提交事件上调用特定Java方法?,jsp,servlets,Jsp,Servlets,我的Java文件是: public class MyClass { public void method1() { // some code } public void method2() { //some code } public void method3() { //some code } } 在我的JSP页面中,我有三个HTML按钮 如果单击button1,则只调用method

我的Java文件是:

public class MyClass {

    public void method1() {    
        // some code
    }

    public void method2() {
        //some code
    }

    public void method3() {
        //some code
    }
}
在我的JSP页面中,我有三个HTML按钮

如果单击
button1
,则只调用
method1
;如果单击
button2
,则只执行
method2
;如果单击
button3
,则只调用
method3
,依此类推

我如何才能做到这一点?


<form method="post" action="servletName">   
     <input type="submit" id="btn1" name="btn1"/>
     <input type="submit" id="btn2" name="btn2"/>
</form>  
按下它时,请求将转到servlet页面上的servlet,检查按下了哪个按钮,然后相应地调用所需的方法作为objectName。method

您可以尝试在每个按钮上添加action=“#{yourBean.function1}”(当然可以更改方法function2、function3或您需要的任何内容)。 如果这不起作用,可以对onclick事件进行同样的尝试


无论如何,如果您告诉我们您想使用什么类型的按钮,a4j:commandButton或您正在使用的任何按钮,都会更容易为您提供帮助。

只需为各个按钮元素指定一个唯一的名称即可。按下按钮时,按钮的名称可用作请求参数,通常的方式与输入元素相同

您只需确保按钮输入有
type=“submit”
中的
type=“submit”
而不是
type=“button”
,这只会为
单击
内容和所有内容呈现一个“死”按钮

例如


或者,使用
而不是
,然后您可以为它们提供相同的名称,但具有唯一的值。
的值不会用作标签,您可以将自己指定为子项

例如


按钮1
按钮2
按钮3

另见:

如果您有web.xml,那么

HTML/JSP

<form action="${pageContext.request.contextPath}/myservlet" method="post">
    <input type="submit" name="button1" value="Button 1" />
</form>

您将请求提交到Servlet,并有条件地从Servlet调用所需函数。您不能直接这样做,因为JavaScript在客户端运行,JSP在服务器端运行,因此您需要将请求提交到Servlet,Servlet将进行处理并返回结果。您可以使用AJAX异步执行它。这是一项培训任务吗?您是否计划使用web框架?您是否可以仅从家用计算机上的internet页面进行此测试,而不必使用服务器。我可以在我的桌面上制作一个页面,然后用它来调用一个类中的一个方法,这个类将调用一个java方法吗?在过去的六个月里,我用了很多java,所以我对代码相当熟悉。然而,我没有开发任何使用java类调用按钮的页面。我可以用公共方法创建类,然后让我的网页用JQuery或其他中间语言调用每个方法吗?@DougHauf您可以使用servlet来实现这一点。javascript可以使用Servlet post和get方法。这篇文章将让你大致了解它的工作原理
@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);
    }

}
<form action="${pageContext.request.contextPath}/myservlet" method="post">
    <input type="submit" name="button1" value="Button 1" />
</form>
<servlet>
        <display-name>Servlet Name</display-name>
        <servlet-name>myservlet</servlet-name>
        <servlet-class>package.SomeController</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>/myservlet</url-pattern>
</servlet-mapping>
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Write your code below");
}