You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

根据点击按钮实现JSP向Servlet传递参数的方法

区分JSP表单中两个提交按钮的操作类型

嘿,这问题很常见!你现在的表单里两个提交按钮没有唯一标识,所以Servlet没法判断用户触发的是更新还是删除操作。这里有两种简单可靠的解决方式:

方法1:给按钮设置相同的name,不同的value

这是最常用的方式,给两个提交按钮加上同一个name属性,用它们的value来区分操作:

修改你的JSP表单代码:

<form method="GET" action="${pageContext.request.contextPath}/CurrencyController">
    Currency code: <input type="text" name="currencyCode" id="currencyCode" value="${currency.currencyCode}" /> <br/>
    <input type="submit" name="action" value="Update" >
    <input type="submit" name="action" value="Delete"/>
</form>

然后在CurrencyController Servlet里,通过获取action参数的值来判断操作:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String action = request.getParameter("action");
    String currencyCode = request.getParameter("currencyCode");

    if ("Update".equals(action)) {
        // 执行更新逻辑,比如调用服务层更新货币信息
        System.out.println("更新货币:" + currencyCode);
    } else if ("Delete".equals(action)) {
        // 执行删除逻辑
        System.out.println("删除货币:" + currencyCode);
    }

    // 后续处理,比如重定向回列表页
    response.sendRedirect(request.getContextPath() + "/currencyList.jsp");
}

方法2:给按钮设置不同的name属性

另一种方式是给每个按钮独有的name,然后在Servlet里判断哪个参数存在(因为只有被点击的按钮才会被提交到服务器):

修改JSP表单:

<form method="GET" action="${pageContext.request.contextPath}/CurrencyController">
    Currency code: <input type="text" name="currencyCode" id="currencyCode" value="${currency.currencyCode}" /> <br/>
    <input type="submit" name="updateBtn" value="Update" >
    <input type="submit" name="deleteBtn" value="Delete"/>
</form>

Servlet中的处理逻辑:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String currencyCode = request.getParameter("currencyCode");

    if (request.getParameter("updateBtn") != null) {
        // 执行更新操作
        System.out.println("更新货币:" + currencyCode);
    } else if (request.getParameter("deleteBtn") != null) {
        // 执行删除操作
        System.out.println("删除货币:" + currencyCode);
    }

    // 后续重定向或转发操作
    response.sendRedirect(request.getContextPath() + "/currencyList.jsp");
}

小提示

如果是删除这类写操作,建议把表单的method改成POST,避免浏览器缓存或者误触发GET请求的问题,同时更符合HTTP规范哦!

内容的提问来源于stack exchange,提问作者farahm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:44:11