根据点击按钮实现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
相关产品推荐
相关产品推荐

