servlet获取复选框内容

本文介绍了一种在Servlet中处理HTML表单复选框数据的方法,通过使用getParameterValues方法获取复选框数组,并遍历输出。示例代码展示了如何在Servlet和HTML中实现这一过程。

         先通过String[] hobbys=request.getParameterValues("hobby");获取复选框的内容,并将其放入数组中,然后遍历数组输出就可以了。

servlet代码:

package com.neusoft.servlet;

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;

/**
 * Servlet implementation class IpServlet
 */
@WebServlet("/InfoServlet")
public class InfoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public InfoServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		int age=Integer.valueOf(request.getParameter("age"));
		response.getWriter().print(age);
		//复选框接受一个数组
		String[] hobbys=request.getParameterValues("hobby");
		for(String s:hobbys){
			response.getWriter().print(s);
		}
	}

}

html代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="InfoServlet" method="post">
	age=<input type="text" name="age"><br>
	hobby=<input type="checkbox" name="hobby" value="a">aa
	<input type="checkbox" name="hobby" value="b">bb
	<input type="checkbox" name="hobby" value="c">cc<br>
	<input type="submit" value="submit">
	</form>
</body>
</html>

 

### 处理复选框并实现求和功能 在 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、付费专栏及课程。

余额充值