为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2019-10-19 16:46:05
我的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,依此类推。我该如何实现?
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

只需给各个按钮元素一个唯一的名称即可。按下按钮后,按钮的名称可用作请求参数,就像输入元素一样。


您只需要确保按钮输入的type="submit"in <input type="submit">和<button type="submit">and not一样 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>


@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);

    }


}

另外,也可以使用<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>


@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);

    }


}


查看完整回答
反对 回复 2019-10-19
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

<form method="post" action="servletName">   

     <input type="submit" id="btn1" name="btn1"/>

     <input type="submit" id="btn2" name="btn2"/>

</form>  

在按下它时,请求将转到servlet页面上的servlet,检查按下了哪个按钮,然后相应地将所需的方法作为objectName.method调用


查看完整回答
反对 回复 2019-10-19
?
潇湘沐

TA贡献1816条经验 获得超6个赞

如果您有web.xml,那么


HTML / JSP


<form action="${pageContext.request.contextPath}/myservlet" method="post">

    <input type="submit" name="button1" value="Button 1" />

</form>

web.xml


<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>

Java SomeController.java


public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("Write your code below");

}


查看完整回答
反对 回复 2019-10-19
  • 3 回答
  • 0 关注
  • 1319 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信