Problemas com JSP. Ajudem!

Olha só, tenho uma dúvida de predomina a dias.
tudo começa quando na JSP não mostra corretamente os itens que gostaria de ver na tela. vou ser mais específico.
Tudo começa quando em outro modulo (modulo cliente) o usuario vai na tela de devolução parcial e lá ele digita o numero da NOTA FISCAL e é mostrado para o usuario a descrição do que contem na nota, blz. Dentro da NOTA contem itens, onde o usuario pode selecionar os itens que quer devolver;

SUPONDO:
na NOTA contem 3 itens:

código do item: 016072
descrição: item A
quantidade: 30

código do item: 016073
descrição: item B
quantidade: 20

código do item: 016074
descrição: item C
quantidade: 10

o usuario escolhe somente os itens : Item B e Item C.
(pronto isso chama-se devolução parcial de uma NOTA FISCAL, até aí blz, num eh!)

CONTINUANDO…

No outro modulo, o usuario verifica todas as notas que cairam como devolvidas parcialmente e vê na tela todas as notas.
O usuario clica na nota desejada (supondo a NOTA q estamos devolvendo acima) e LÓGICO, tem q mostrar os itens devolvidos para esta nota como:

código do item: 016073
descrição: item B
quantidade: 20

código do item: 016074
descrição: item C
quantidade: 10

Só que o problema é que não mostra todos os itens. apenas mostra o ultimo item devolvido que no caso foi Item C.
Gostaria que alguém avaliasse o código que vou passar agora e diante mão agradecer a ajuda.

SEGUE o CÓDIGO DA PÁGINA ONDE VERIFICO A NOTA JÁ DEVOLVIDA, SÓ QUE NÃO MOSTRA CORRETAMENTE OS ITENS DESTA NOTA:

entradaParcialNFIN.jsp

[code]<%@ page errorPage=“ErrosPage.jsp”%>
<%@ page import=“sistema.negocio."%>
<%@ page import="sistema.negocio.entidades.
”%>
<%
if ((session.getAttribute(“nivel”)!= null)&&(session.getAttribute(“msgTipo”).equals(“IN”))){
%>

<% }
}else if(Integer.parseInt(request.getParameter(“op”))==3){
//NFCBC notaDev = (NFCBC) session.getAttribute(“notaDev”);
//notaDev.setUsuario_dfpc(session.getAttribute(“usuario”)+"");
//fachadaIN.cancelaEntradaNF(notaDev);

%>
<script type="text/javascript">window.alert('Cancelamento Aceito!');document.location='inicial.jsp';</script>
<%	}

}
%>

<%=session.getAttribute("principal")%>
<%}else response.sendRedirect("invalida.jsp"); %>[/code]

SEGUE o CÓDIGO DO REPOSITORIO ONDE TENHO OS METODOS ONDE EU VERIFICO NA NOTA OS ITENS E TUDO MAIS:

RepositorioIndustria

[code]package sistema.dados.repositorio;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import sistema.dados.excecoes.ExcecaoRepositorio;
import sistema.dados.util.GerenciadorConexaoBDR;
import sistema.negocio.entidades.ItemNF;
import sistema.negocio.entidades.NFCBC;

public class test {

private final GerenciadorConexaoBDR gerCon = GerenciadorConexaoBDR.getMyInstance();

public static final String PESQUISA_NF_DEV_PARCIAL = "SELECT DISTINCT NF.NUMERO_NF,NF.NUMERO_PEDIDO,NF.NUMERO_OM, "+
"NF.COD_CLIENTE,NF.CNPJ,NF.NUMERO_CR,NF.SITUACAO,NF.DT_NF,C.NOME,NF.USUARIO_DFPC "+ 
"FROM TB_NF_CBC NF, CLIENTES_SISTEMA C, TB_NF_DEVOLVIDA D "+
"WHERE D.SITUACAO = ? AND C.CNPJ=NF.CNPJ AND NF.NUMERO_NF=D.NUM_NF "+
"ORDER BY NUMERO_NF";

//	"SELECT DISTINCT NF.NUMERO_NF,NF.NUMERO_PEDIDO,NF.NUMERO_OM," +
//    "NF.COD_CLIENTE,NF.CNPJ,NF.NUMERO_CR,NF.SITUACAO,NF.DT_NF,C.NOME,NF.USUARIO_DFPC " +
//    "FROM TB_NF_CBC NF, CLIENTES_SISTEMA C WHERE SITUACAO = ? AND C.CNPJ=NF.CNPJ ORDER BY NUMERO_NF";


public static final String PESQUISA_ITENS_NF_DEV_PARCIAL = "SELECT SEQUENCIA, COD_ITEM, DESC_ITEM, QTD, UNIDADE FROM TB_NF_CBC " +
"WHERE NUMERO_NF=? ORDER BY SEQUENCIA";
@SuppressWarnings("null")
public NFCBC[] buscarTodasNFDevParcial(String status) throws ExcecaoRepositorio{
	ArrayList<NFCBC> arrayNFCBC = new ArrayList<NFCBC>();
	NFCBC[] vetNFCBC = null;
	NFCBC nf = null;
	ItemNF itNF = null;
	Connection con = gerCon.getConexao(false);
	PreparedStatement ps1 = null;
	PreparedStatement ps2 = null;
	ResultSet rs1 = null;
	ResultSet rs2 = null;
	try {
		ps1 = con.prepareStatement(PESQUISA_NF_DEV_PARCIAL);
		ps1.setString(1, status);
		rs1 = ps1.executeQuery();
		while(rs1.next()){
			long num_nf = rs1.getLong(1);
			int numPedido = rs1.getInt(2);
			int numOm = rs1.getInt(3);
			String codCliente = rs1.getString(4);
			String cnpj = rs1.getString(5);
			String numCr = rs1.getString(6);
			String situacao = rs1.getString(7);
			String data = rs1.getString(8);
			String razaoSocial = rs1.getString(9);
			String usuario_dfpc = rs1.getString(10);
			nf = new NFCBC(num_nf,numPedido,numOm,codCliente,cnpj,numCr,situacao,data,razaoSocial,usuario_dfpc);

			ps2 = con.prepareStatement(PESQUISA_ITENS_NF_DEV_PARCIAL);
			ps2.setLong(1, num_nf);
			rs2 = ps2.executeQuery();
			while(rs2.next()){
				int sequencia = rs2.getInt(1);
				String codItem = rs2.getString(2);
				String descItem = rs2.getString(3);
				int qtd = rs2.getInt(4);
				String unidade = rs2.getString(5);
				itNF = new ItemNF(sequencia, codItem, descItem, qtd, unidade);
				nf.setItNF(itNF);
			}
			arrayNFCBC.add(nf);
		}
		vetNFCBC = new NFCBC[arrayNFCBC.size()];
		for (int i = 0; i < arrayNFCBC.size(); i++) {
			vetNFCBC[i] = (NFCBC) arrayNFCBC.get(i);
		}
		return vetNFCBC;
	} catch (SQLException e) {
		throw new ExcecaoRepositorio("Erro de acesso ao Banco de Dados!");
	} finally {
		try {
			if(vetNFCBC.length>0){
				rs2.close();
			}
			rs1.close();
		} catch (Exception e) {
			throw new ExcecaoRepositorio("Erro ao fechar a conexão com o Banco de Dados!");
		}
		try {
			if(vetNFCBC.length>0){
				ps2.close();
			}
			ps1.close();
		} catch (Exception e) {
			throw new ExcecaoRepositorio("Erro ao fechar a conexão com o Banco de Dados!");
		}
		try {
			con.close();
		} catch (Exception e) {
			throw new ExcecaoRepositorio("Erro de acesso ao Banco de Dados!");
		}
	}
}

private static final String BUSCAR_NF_DEV_PARCIAL = "SELECT * FROM TB_NF_DEVOLVIDA WHERE NUM_NF=?";
public String[] buscarNFDevParcial(String x)throws ExcecaoRepositorio{
	Connection con = gerCon.getConexao(false);
	PreparedStatement ps = null;
	ResultSet rs = null;
	String[] notaDev = new String[8];
	String msg="";
	try {
		ps = con.prepareStatement(BUSCAR_NF_DEV_PARCIAL);
		ps.setString(1, x);
		rs = ps.executeQuery();
		while(rs.next()){				
			String cnpj = rs.getString(1);
			long num_nf = rs.getLong(2);
			String dt_nf = rs.getString(3);
			String dt_dev = rs.getString(4);
			String motivo = rs.getString(5);
			long num_nf_dev = rs.getLong(6);
			String dev_iten_qtd = rs.getString(7)+"@"+rs.getInt(10);
			int situacao = rs.getInt(8);
			msg= cnpj+"!"+num_nf+"!"+dt_nf+"!"+dt_dev+"!"+motivo+"!"+num_nf_dev+"!"+dev_iten_qtd+"!"+situacao;
		}
		notaDev = msg.split("!");
	} catch (SQLException e) {
		throw new ExcecaoRepositorio("Erro de acesso ao Banco de Dados!");
	} finally {
		try{
			rs.close(); 
		} catch (final SQLException e) { 
			throw new ExcecaoRepositorio("Erro ao fechar a conexão com o Banco de Dados!");
		}
		try {
			ps.close();
		}  catch (final SQLException e) { 
			throw new ExcecaoRepositorio("Erro ao fechar a conexão com o Banco de Dados!");
		}
		try {
			con.close();
		}  catch (final SQLException e) { 
			throw new ExcecaoRepositorio("Erro de acesso ao Banco de Dados!");
		}
	}
	return notaDev;
}

}
[/code]