如何在JSP中的特定按钮的单击/提交事件上调用特定的Java方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JSP中的特定按钮的单击/提交事件上调用特定的Java方法?相关的知识,希望对你有一定的参考价值。
我的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
,依此类推。
我怎样才能做到这一点?
只需为各个按钮元素指定一个唯一名称即可。按下时,按钮的名称可用作请求参数,与输入元素一样。
您只需要确保按钮输入具有type="submit"
和<input type="submit">
中的<button type="submit">
而不是type="button"
,它仅仅为onclick
所有内容呈现“死”按钮。
EG
<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>
的值不会被用作标签,您可以将自己指定为孩子。
EG
<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);
}
}
See also:
- Servlet returns "HTTP Status 404 The requested resource (/servlet) is not available"
- How do I pass current item to Java method by clicking a hyperlink or button in JSP page?
<form method="post" action="servletName">
<input type="submit" id="btn1" name="btn1"/>
<input type="submit" id="btn2" name="btn2"/>
</form>
按下它请求将转到servlet页面上的servlet检查按下了哪个按钮然后相应地调用所需的方法as objectName.method
您可以尝试在每个按钮上添加action =“#{yourBean.function1}”(当然更改方法function2,function3或您需要的任何内容)。如果这不起作用,您可以尝试使用onclick事件。
无论如何,如果你告诉我们你想要使用什么样的按钮,a4j:commandButton或者你正在使用的任何东西,它会更容易帮助你。
如果你有web.xml那么
HTML / JSP
<form action="${pageContext.request.contextPath}/myservlet" method="post">
<input type="submit" name="button1" value="Button 1" />
</form>
veb.hml
<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");
}
以上是关于如何在JSP中的特定按钮的单击/提交事件上调用特定的Java方法?的主要内容,如果未能解决你的问题,请参考以下文章