我正在尝试创建一个显示带有复选框的简单表单的servlet,当用户选择他想要的复选框数并点击"确认"我的servlet中的POST请求检查已检查了哪些框并基于数据库查询。
我不确定如何在Java中执行此操作,因为用户可以选择1个或更多复选框。如果有人可以通过一个小例子来解释这一点,那就太好了。
我对编程非常陌生,如果我知道怎么做,我会提供一个代码片段。
答案 0 :(得分:8)
<%@ page language="java"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>JSP Multiple Checkbox</title>
</head>
<body>
<form name="form1" onsubmit="checkBoxValidation()">
<h3>Select your favorite Fruits</h3>
<p><input type="checkbox" name="fruit" value="Mango"/>Mango</p>
<p><input type="checkbox" name="fruit" value="Apple"/>Apple</p>
<p><input type="checkbox" name="fruit" value="Grapes"/>Grapes</p>
<p><input type="checkbox" name="fruit" value="Papaya"/>Papaya</p>
<p><input type="checkbox" name="fruit" value="Lychee"/>Lychee</p>
<p><input type="checkbox" name="fruit" value="Pineapple"/>Pineapple</p>
<p><input type="submit" value="submit"/>
</form>
<%String fruits[]= request.getParameterValues("fruit");
if(fruits != null){%>
<h4>I likes fruit/s mostly</h4>
<ul><%for(int i=0; i<fruits.length; i++){%>
<li><%=fruits[i]%></li><%}%>
</ul><%}%>
</body>
</html>
在您的Web容器上运行此示例jsp,以获得有关其工作原理的基本概念。您需要将此页面上的显示逻辑移动到表单提交时的servlet代码中。此示例可以从here找到。希望这会有所帮助。
答案 1 :(得分:7)
这实际上是HTML表单行为问题。当您使用一个&#34; name&#34;检查几个复选框时属性和不同的&#34;值&#34;属性并按下提交按钮,您的浏览器将向已发送复选框值的服务器发送请求。因此,您可以从此url参数中获取值名称。
例如:
<form name="input" action="html_form_action.asp" method="get">
<input type="checkbox" name="vehicle" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle" value="Car">I have a car
<br><br>
<input type="submit" value="Submit">
</form>
如果您同时选中这两个复选框,您的服务器将收到如下所示的参数:
http://example.com/your_page.jsp?vehicle=Bike&vehicle=Car
之后你可以得到这样的值:
String checkboxValues = request.getParameter("vehicle");
checkboxValues获取以逗号分隔的所有值。
答案 2 :(得分:5)
在你的servlet中你可以像这样使用getParameter():
request.getParameter( "id_of_checkbox" )
如果未选中该框,则该函数返回null。所以你可以这样做:
boolean myCheckBox = request.getParameter( "id_of_checkbox" ) != null;
现在myCheckBox如果选中则为true,如果未选中则为false。
答案 3 :(得分:0)
如果您只想要输出,那么这个可能更整洁。假设您正在使用jstl库,我更喜欢它,因为它使您的页面更清洁:
<c:forEach var='fruitValue' items='${paramValues.fruit}'>
${fruitValue} <br>
</c:forEach>