Servlet 获得checkbox中的值

本文介绍如何在Servlet中通过POST请求获取JSP页面中多个Checkbox的状态,并将其整合成字符串进行后续处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet 获得checkbox中的值

在做一个权限的时候:如下

jsp代码:

<form id="form1" name="form1" method="post" action="powerconfig.do">
<p>&nbsp;</p>
<table width="608" height="332" border="1" align="center">
    <tr>
      <td height="97" colspan="2" align="center" bgcolor="#FFFFCC"><span class="STYLE4">权限设置</span></td>
    </tr>
    <tr>
      <td colspan="2"><label>
        <input type="checkbox" name="checkbox1" value="1"/>
      权限一
      <input type="checkbox" name="checkbox2" value="1" />
      权限二
      <input type="checkbox" name="checkbox3" value="1" />
      权限三
      <input type="checkbox" name="checkbox4" value="1" />
      权限四</label></td>
    </tr>
    <tr>
      <td colspan="2"><label>
        <input type="checkbox" name="checkbox5" value="1" />
      权限五</label>
        <label>
        <input type="checkbox" name="checkbox6" value="1" />
      权限六</label>
        <label>
        <input type="checkbox" name="checkbox7" value="1" />
      权限七</label>
        <label>
        <input type="checkbox" name="checkbox8" value="1" />
      权限八</label></td>
    </tr>
    <tr>
      <td colspan="2"><label>
        <input type="checkbox" name="checkbox9" value="1" />
      权限九</label>
        <label>
        <input type="checkbox" name="checkbox10" value="1" />
      权限十</label>
        <label>
        <input type="checkbox" name="checkbox11" value="1" />
      权限十一</label>
      <label>提交</label></td>
    </tr>
    <tr>
      <td width="205" align="center"><input type="submit" name="Submit" value="提交" /></td>
      <td width="387" align="center"><label>
        <input name="reset" type="submit" id="reset" value="重置" />
      </label></td>
    </tr>
</table>
</form>

//在powerconfigAction中代码:

String power="";
   String ini="0";  
   for (int i = 0; i < 11; i++) {
    ini=request.getParameter("checkbox"+(i+1)); //当没有选中时ini=null;
    if(ini==null){
     ini="0";        //没有选中也就是权限为空即为0;
    }
    power+=ini;
   }
   System.out.println(power);
   request.setAttribute("power", power);
   return mapping.findForward("show");

//当选权限一,权限三时power="10100000000";

---------------------------//网上搜一下太都是下面:用数组的

上面jsp中checkbox中的name属性统一为name="checkbox" value="1" 如下:

<input type="checkbox" name="checkbox" value="1"/>
      权限一
      <input type="checkbox" name="checkbox" value="1" />
      权限二
      <input type="checkbox" name="checkbox" value="1" />
      权限三

这种有Action中是用数组取值:如下:


   String[] power=request.getParameterValues("checkbox");
   String power_str="";
   for (int i = 0; i < power.length; i++) {
    power_str+=power[i];
   }
   System.out.println(power_str);
   request.setAttribute("power", power_str);
   return mapping.findForward("show");

当选权限一,权限三时power="11"; //将没有0出现这种只是用于正常取值

### 处理复选框并实现求和功能 在 Java Servlet 中处理复选框可以通过 `request.getParameterValues()` 方法来获取多个相同名称的参数。这些通常是由 HTML 表单中的复选框提交的。以下是具体实现方式: #### 获取复选框 当表单提交时,`getParameterValues(String name)` 方法会返回一个字符串数组,其中包含了所有具有指定名称的复选框。如果没有任何复选框被勾选,则该方法将返回 `null`。 #### 计算总和 一旦获得复选框,就可以将其转换为数类型(如整数),并对它们进行累加操作以得到最终的结果。 下面是一个完整的示例代码展示如何在 Servlet 中实现这一功能: ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/sum") public class SumServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置字符编码 request.setCharacterEncoding("UTF-8"); // 使用 getParameterValues 来复选框的数据 String[] values = request.getParameterValues("checkbox"); int sum = 0; // 初始化总和变量 if (values != null && values.length > 0) { // 判断是否有数据传入 for (String value : values) { // 遍历每个复选框 try { sum += Integer.parseInt(value); // 将字符串转成整型并相加 } catch (NumberFormatException e) { // 如果解析失败则忽略此条目 } } } // 输出结果到页面 response.setContentType("text/html;charset=UTF-8"); response.getWriter().println("<h1>您所选择项的总和为:" + sum + "</h1>"); } } ``` 上述代码展示了如何在一个名为 `/sum` 的路径下创建一个简单的 Servlet[^1]。这个 Servlet 收来自前端的一个或多于一个复选框输入,并计算其总和然后显示出来。 #### 前端部分 为了配合上面的 Servlet 工作,这里提供了一个基本的 HTML 页面用于测试目的: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Checkbox Sum</title> </head> <body> <form action="/sum" method="post"> <input type="checkbox" name="checkbox" value="1">1<br/> <input type="checkbox" name="checkbox" value="2">2<br/> <input type="checkbox" name="checkbox" value="3">3<br/> <input type="submit" value="Submit"/> </form> </body> </html> ``` 在这个例子中,所有的复选框都共享同一个名字 `"checkbox"`,这使得服务器能够轻易地区分哪些是属于同一组的选择项。 #### 注意事项 - 确保客户端发送过来的是有效的数字字符串;如果不是有效数字,在尝试转换的时候可能会抛出异常。 - 对于更复杂的业务逻辑或者错误处理机制可以根据实际需求进一步扩展和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值