如下面的页面,我们如何将页面上的 爱好 复选框中的值添加到一个字段中呢??????
页面的代码片段:
<tr>
<td>爱好:</td>
<td>
<input type="checkbox" name = "hobby"value = "游泳">游泳
<input type="checkbox" name = "hobby"value = "篮球">篮球
<input type="checkbox" name = "hobby"value = "足球">足球
<input type="checkbox" name = "hobby"value = "看书">看书
<input type="checkbox" name = "hobby"value = "写字">写字
</td>
</tr>
如果使用平时我们使用的getParameter();只能获取第一个值, 篮球 ,后面的 看书 写字 是无法获取的
String hobby = request.getParameter("hobby");
要换另一个方法 getParameterValues("hobby");
String [] h = request.getParameterValues("hobby");
这个方法的返回值是数组,然后把这个数租进行转换成string类型
String hobby = Arrays.toString(h);
转换之后的结果是 [篮球,看书,写字]
存入数据库时,要把两边的中括号去掉 即: [篮球,看书,写字] --- >篮球,看书,写字 使用substring()完美解决中括号问题
hobby = hobby.substring(1, hobby.length()-1);
这时问题就完美解决了;附上完整的代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
try {
//1. 获取客户端提交上来的数据
String sname = request.getParameter("sname"); //sname:zhangsan
String gender = request.getParameter("gender");
String phone = request.getParameter("phone");
String birthday = request.getParameter("birthday"); // 1989-10-18
String info = request.getParameter("info");
//String hobby = request.getParameter("hobby");//hobby : 游泳,写字, 足球。
String [] h = request.getParameterValues("hobby");
// [篮球,足球,写字] --- 篮球,足球,写字
String hobby = Arrays.toString(h);
hobby = hobby.substring(1, hobby.length()-1);
//2. 添加到数据库
//string -- date
Date date= new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
Student student = new Student(sname, gender, phone, hobby, info, date);
StudentService service = new StudentServiceImpl();
service.insert(student);
//3. 跳转到列表页
//再查一次数据库,然后再装到作用域中 ,然后再跳转。
//这里是直接跳转到页面上, 那么这个页面会重新翻译一次,上面的那个request的请求存放的数据是没有了。
//request.getRequestDispatcher("list.jsp").forward(request, response);
//servlet除了能跳jsp之外。 还能跳servlet
request.getRequestDispatcher("StudentListServlet").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}