这是你的程序自己设置的呀,你写的就是最初状态未选中时,其值为0,选中时其值为1,这个值将不再改变,接受端只能判断有无数据传过来,所以如果你想实现选中后值为1,未选中值为0,有两种方法
1。在客户端用javascript实现,如下
<input type="checkbox" name="sec" value="<%=sec%>" <%if(sec.equals("1"))out.println("checked");%> οnclick="javascript:this.value=this.checked?1:0">
接收页面仍为
<%
String[] security={"0"};//这里初始化成你想要的数据
if(request.getParameterValues("sec")!=null)//不为null时才赋值
security=request.getParameterValues("sec");
out.println("<script>alert('"+security[0]+"');</script>");
%>
2。在接收端做处理
发送端不变,接受端根据是否为null再赋不同的值
<%
String[] security={"0"};//这里初始化成你想要的数据
if(request.getParameterValues("sec")!=null)//不为null时才赋值
security[0]="1";
out.println("<script>alert('"+security[0]+"');</script>");
%>
另外,你为什么要用数组呢,如果只有一个checkbox的话,用String request.getParameter()就行了.
当checkbox未被选中时,获得的值确实是null,即security为null,但这样并不会产生“空指针错误”,而产生错误的原因是你在security为null时,你引用了security[0],这样当然后产生空指针了,照下面这样改一下就行了
<%
String[] security={"0"};//这里初始化成你想要的数据
if(request.getParameterValues("sec")!=null)//不为null时才赋值
security=request.getParameterValues("sec");
out.println("<script>alert('"+security[0]+"');</script>");
%>
另外你的第一段代码也可改成
<input type="checkbox" name="sec" value="<%=sec%>" <%if(sec.equals("1"))out.println(" checked");%> >
空指针错误是因为你的sec为null的时候用了equals方法,在应用对象的某一个方法的时候要看这个对象是否已经正确的实例化了