[RESOLVIDO]problema envolvendo checkBox(JSP) e servlet

pessoal, tenho uma aplicação com servlet e jsp(que contem uma lista com um checkBox)
meu problema é o seguinte,
se o usuario fizer alguma requisição que for invalida, ele eh redirecionado novamente a servlet aonde automaticamente manda novamente para a jsp, mantendo os campos de datas com as mesmas ja selecionados anteriormente pelo usuario, porem os campos de checkBox inicialmente selecionados simplesmente sao desmarcado. Como devo fazer para manter o checkBox marcado??

Metodo da servlet que recebe os dados

	private HistoricoMonitoramentoVo controladorInterativoJSP(HttpServletRequest request) throws ObjetoObrigatorioException 
	{
		HistoricoMonitoramentoVo historicoMonitoramentoVo = (HistoricoMonitoramentoVo) getBuffer(request).getAttribute( HISTORICO_MONITORAMENTO_VO );
		if (historicoMonitoramentoVo == null)
		{
			historicoMonitoramentoVo = new HistoricoMonitoramentoVo();
		}

		Validador.validaObjeto(historicoMonitoramentoVo);
		historicoMonitoramentoVo.setDataInicio( StringUtil.toUtilData(request.getParameter(CAMPO_DATA_INICIO)) );
		historicoMonitoramentoVo.setDataFim( StringUtil.toUtilData(request.getParameter(CAMPO_DATA_FIM)) );
		String []array = request.getParameterValues(CAMPO_CHECKBOX_CODIGO_SERVICO);
		if( Validador.isArrayValido( array ))
		{			
			for( String codigoServico : array )
			{
				historicoMonitoramentoVo.getCollServico().add( new ServicoVo(StringUtil.toInteger( codigoServico )) );
			}
		}
		return historicoMonitoramentoVo;
	}

parte aonde insiro os checkBox na JSP

		<table width="95%" cellpadding="0" cellspacing="1" align="center" >
			<tr class="textoTitulo">
				<td width="5%" align="center"><input id="todos" name="todos" type="checkbox"  onclick="javascript:selecionaTodos();" /></td>
				<td align="center"  width="95%">*Servi&ccedil;os/Sistemas ativos</td>
			</tr>					
			<c:forEach var="servicoAtualVo" items="${historicoMonitoramentoVo.servicoVo.collVO}" varStatus="indice">
				<c:if test="${indice.index mod 2 != 0}">
					<tr class="linhaImpar">
				</c:if>
				<c:if test="${indice.index mod 2 == 0}">
					<tr class="linhaPar">
				</c:if>
					<td width="5%" align="center">
							<input  name="<%=Form.CAMPO_CHECKBOX_CODIGO_SERVICO%>"
											type="checkbox"
											value="${servicoAtualVo.codigo}"
											id="<%=Form.CAMPO_CHECKBOX_CODIGO_SERVICO%>"/>
					</td>
					<td width="95%" align="left"><c:out value="${servicoAtualVo.nomeServico}"/></td>
				</tr>
			</c:forEach>
		</table>

Quem tiver uma ideia que possa ajudar eu agradeço mto

Olá,

Qual o tipo da variável do seu VO? se for um boolean vc pode fazer assim:

<input  name="<%=Form.CAMPO_CHECKBOX_CODIGO_SERVICO%>"  
                                    type="checkbox" 
                                    <%if(Form.isCAMPO_CODIGO_SERVICO()){%> //aqui seria o método get do VO para esse atributo.
                                    checked = "checked" 
                                   <%}%>
                                    value="${servicoAtualVo.codigo}"  
                                    id="<%=Form.CAMPO_CHECKBOX_CODIGO_SERVICO%>" />

A idéia é verificar se o campo foi marcado anteriormente e o objeto contém o valor correspondente a checkbox marcada, caso afirmativo, coloque a propriedade checked=“checked”

cara, o tipo da minha variavel Codigo é long.

e como funciona, quais os valores que são passados quando o campo está vazio ou checado?

checado = 1, vazio = 0 ?

Ele na verdade retorna pra servlet o codigo do serviço, e não se o mesmo eh checkced ou nao.

aki ele pega o codigo a ser mandado para a servlet

<input ... ... id="<%=Form.CAMPO_CHECKBOX_CODIGO_SERVICO%>"/>

e na servlet, é aki que ela cria o array de String’s com os campos selecionado

 String []array = request.getParameterValues(CAMPO_CHECKBOX_CODIGO_SERVICO);  

valeu sephil pela cooperaçao.
mas aki no serviço a renata me ajudeu e resolvi o meu problema
segue abaixo a solução
com a jsp e a servlet
JSP

		<table width="95%" cellpadding="0" cellspacing="1" align="center" >
			<tr class="textoTitulo">
				<td width="5%" align="center"><input id="todos" name="todos" type="checkbox"  onclick="javascript:selecionaTodos();" /></td>
				<td align="center"  width="95%">*Servi&ccedil;os/Sistemas ativos</td>
			</tr>					
				<c:forEach var="servicoAtualVo" items="${historicoMonitoramentoVo.servicoVo.collVO}" varStatus="indice">
					<c:forEach var="lista" items="${historicoMonitoramentoVo.listaCodigo}">
						<c:if test="${lista == servicoAtualVo.codigo}">
							<c:set value="1" scope="request" var="valor" />
						</c:if>
					</c:forEach>
				<c:if test="${indice.index mod 2 != 0}">
					<tr class="linhaImpar">
				</c:if>
				<c:if test="${indice.index mod 2 == 0}">
					<tr class="linhaPar">
				</c:if>
					<td width="5%" align="center">
								<input  name="<%=Form.CAMPO_CHECKBOX_CODIGO_SERVICO%>"
											type="checkbox"
											value="${servicoAtualVo.codigo}"
											id="<%=Form.CAMPO_CHECKBOX_CODIGO_SERVICO%>"
											<c:if test="${valor != null}">checked="checked"</c:if>
											/>
					</td>						 
					<td width="95%" align="left"><c:out value="${servicoAtualVo.nomeServico}"/></td>
				</tr>
				<c:remove var="valor" scope="request"/>
			</c:forEach>
		</table>

e a SERVLET

	private HistoricoMonitoramentoVo controladorInterativoJSP(HttpServletRequest request) throws ObjetoObrigatorioException 
	{
		HistoricoMonitoramentoVo historicoMonitoramentoVo = (HistoricoMonitoramentoVo) getBuffer(request).getAttribute( HISTORICO_MONITORAMENTO_VO );
		historicoMonitoramentoVo.getCollServico().clear();
		if (historicoMonitoramentoVo == null)
		{
			historicoMonitoramentoVo = new HistoricoMonitoramentoVo();
		}

		Validador.validaObjeto(historicoMonitoramentoVo);
		historicoMonitoramentoVo.setDataInicio( StringUtil.toUtilData(request.getParameter(CAMPO_DATA_INICIO)) );
		historicoMonitoramentoVo.setDataFim( StringUtil.toUtilData(request.getParameter(CAMPO_DATA_FIM)) );
		String []array = request.getParameterValues(CAMPO_CHECKBOX_CODIGO_SERVICO);
		historicoMonitoramentoVo.setListaCodigo(array);
		if( Validador.isArrayValido( array ))
		{			
			for( String codigoServico : array )
			{
				historicoMonitoramentoVo.getCollServico().add( new ServicoVo(StringUtil.toInteger( codigoServico )) );
			}
		}
		return historicoMonitoramentoVo;
	}