我的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,依此类推。
button1
method1
button2
method2
button3
method3
我该如何实现?
只需给各个按钮元素一个唯一的名称即可。按下按钮后,按钮的名称可用作请求参数,就像输入元素一样。
您只需要确保按钮输入的type="submit"in <input type="submit">和<buttontype="submit">and not一样 type="button",这仅呈现一个“死”按钮,仅用于onclick填充所有内容。
type="submit"
<input type="submit">
<buttontype="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>
与
@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>将不会用作标签,您只需将自己指定为孩子即可。
<button 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); } }