Ajuda para retornar dados no Form

Pessoal, boa noite.

Conseguiriam me ajudar? A minha aplicação está rodando todos os formulários que salvam os cadastros com sucesso. Mais não estou conseguindo fazer retornar apenas um valor quando o filtro for preenchido no form ou mesmo apenas clicando em buscar para retornar todos os dados, segue abaixo o que foi criado para isso:

FORM

<h1>Consulta de Alunos</h1>

	<div class="grupo-filtro">

		<div class="grupo-entrada">
			<label>Matrícula:</label> 
			<input type="text" name="mat_aluno" class="campo" value=""><br>
		</div>

		<div class="grupo-entrada">
			<label>Disciplina Cursada:</label> 
			<input type="text" name="codigo_disciplina" class="campo">
		</div>
		
		<input type="submit" value="Buscar" class="botao">
	</div>

	<c:if test="${lista != null}">
		<h2>Resultado</h2>
		<table border="1" style="">
			<tr>
				<th id="matricula">Matricula</th>
				<th id="matricula">Nome</th>
				<th id="matricula">Disciplina</th>
			</tr>
			<c:forEach items="${lista}" var="aluno" varStatus="id">
				<tr bgcolor="#${id.count % 2 == 0 ? 'aaee88' : 'ffffff' }">
					<td>${aluno.matricula}</td>
					<td>${aluno.nome}</td>
					<td>${aluno.disciplina}</td>
				</tr>
			</c:forEach>
		</table>
	</c:if>
	
</form>

Conteúdo principal do Servlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
RequestDispatcher desp = request.getRequestDispatcher(“form_listar_aluno.jsp”);
desp.forward(request, response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	String matricula = request.getParameter("mat_aluno");
	String disciplina = request.getParameter("codigo_disciplina");
	List<Aluno> listaAluno = AlunoBO.getInstance().listar(matricula, disciplina);
	request.setAttribute("lista", listaAluno);
	doGet(request, response);
}

Classe Aluno
public class Aluno {

private String matricula;
private String nome;
private String disciplina;

public Aluno() {
}

public Aluno(String matricula, String nome, String disciplina) {
	super();
	this.matricula = matricula;
	this.nome = nome;
	this.disciplina = disciplina;
}

public String getMatricula() {
	return matricula;
}

public void setMatricula(String matricula) {
	this.matricula = matricula;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getDisciplina() {
	return disciplina;
}

public void setDisciplina(String disciplina) {
	this.disciplina = disciplina;
}

}

Classe de Business
public class AlunoBO {

private static AlunoBO alunoBO;

public AlunoBO() {
}

public static AlunoBO getInstance() {
	if(alunoBO == null) {
		alunoBO = new AlunoBO();
	}
	
	return alunoBO;
}


public void salvar(Aluno aluno) {
	AlunoDAO alunoDAO = AlunoDAO.getInstance();
	alunoDAO.salvar(aluno);
}

public List<Aluno> listar(String matricula, String disciplina) {
	return AlunoDAO.getInstance().listar(matricula, disciplina);
	//return AlunoDAO.getInstance().listarMoke(matricula, disciplina);
}

Método DAO
public class AlunoDAO {

private static AlunoDAO alunoDAO;

public AlunoDAO() {
}

public static AlunoDAO getInstance() {
	if (alunoDAO == null) {
		alunoDAO = new AlunoDAO();
	}

	return alunoDAO;
}

private Connection conexao;

public List<Aluno> listar(String matricula, String disciplina) {
	List<Aluno> alunos = new ArrayList<>();
	try {

		this.conexao = new Conecta().getConnection();
		StringBuilder sql = new StringBuilder();

		sql.append("SELECT * FROM ALUNO");
		sql.append("WHERE 1=1 ");

		if (matricula != null && !"".equals(matricula)) {
			sql.append("AND mat_aluno = ?");
		}

		if (disciplina != null && !"".equals(disciplina)) {
			sql.append("AND codigo_disciplina = ?");
		}

		PreparedStatement pstmt = this.conexao.prepareStatement(sql.toString());
		if (matricula != null && !"".equals(matricula)) {
			pstmt.setString(1, matricula);
		}
		if (disciplina != null && !"".equals(disciplina)) {
			pstmt.setString(2, disciplina);
		}

		ResultSet rs = pstmt.executeQuery();

		while (rs.next()) {
			Aluno aluno = new Aluno();
			aluno.setMatricula(rs.getString("mat_aluno"));
			aluno.setNome(rs.getString("aluno"));
			aluno.setDisciplina(rs.getString("codigo_disciplina"));
			alunos.add(aluno);
		}
		
		rs.close();
		pstmt.close();

	} catch (SQLException ErroSql) {
		JOptionPane.showMessageDialog(null, "Erro ao listar dados: " + ErroSql, "ERRO", JOptionPane.ERROR_MESSAGE);
	} finally {
		try {
			this.conexao.close();
		} catch (Exception e2) {
			e2.printStackTrace();
		}
	}

	return alunos;

}

}

Fala ai @fbfreire, teria como postar oque voce colocou na TAG form? o que tem no action? e no method?

Abraços
Max

Coloquei em anexo para facilitar.
Listar.rar (3,2 KB)

Quando eu fiz isso aqui, eu consegui trazer toda a lista, mas eu queria fazer o sistema entender quando eu passasse parâmetro, para ele buscar de acordo com o que eu preenchi e quando não preenchesse nada, ele tivesse o comportamento abaixo:

public List<Aluno> listar(String matricula, String disciplina) {
	List<Aluno> alunos = new ArrayList<>();
	try {

		this.conexao = new Conecta().getConnection();
		StringBuilder sql = new StringBuilder();

		sql.append("SELECT * FROM ALUNO");
		//sql.append("WHERE 1=1 ");

		//if (matricula != null && !"".equals(matricula)) {
		//	sql.append("AND mat_aluno = ?");
		//}

		//if (disciplina != null && !"".equals(disciplina)) {
		//	sql.append("AND codigo_disciplina = ?");
		//}

		PreparedStatement pstmt = this.conexao.prepareStatement(sql.toString());
		//if (matricula != null && !"".equals(matricula)) {
		//	pstmt.setString(1, matricula);
		//}
		//if (disciplina != null && !"".equals(disciplina)) {
		//	pstmt.setString(2, disciplina);
		//}

		ResultSet rs = pstmt.executeQuery();

		while (rs.next()) {
			Aluno aluno = new Aluno();
			aluno.setMatricula(rs.getString("mat_aluno"));
			aluno.setNome(rs.getString("aluno"));
			aluno.setDisciplina(rs.getString("codigo_disciplina"));
			alunos.add(aluno);
		}
		
		rs.close();
		pstmt.close();

Falai @fbfreire, cara vamos fazer um teste, acredito que o seu problema sao os condicionais que voce colocou para poder habilitar/desabilitar seu SQL. Te proponho que vc habilite o codigo SQL por inteiro e preencha o form com o codigo e o nome da disciplina e de um busca para ver se ele esta enviando os parametros corretamente. Se correr tudo bem podemos concluir que o problema sao os IFs e nao a passagem de parametro e ai podemos prosseguir com a solução. Dividir um grande problema em menores para podermos conquistar o todo.Segue o metodo listar com os itens comentados paravoce poder testar com sugeri:

	public List<Aluno> listar(String matricula, String disciplina) {
		List<Aluno> alunos = new ArrayList<>();
		try {

			this.conexao = new Conecta().getConnection();
			StringBuilder sql = new StringBuilder();

			sql.append("SELECT * FROM ALUNO");
			sql.append("WHERE 1=1 ");

			//if (matricula != null && !"".equals(matricula)) {
				sql.append("AND mat_aluno = ?");
			//}

			//if (disciplina != null && !"".equals(disciplina)) {
				sql.append("AND codigo_disciplina = ?");
			//}

			PreparedStatement pstmt = this.conexao.prepareStatement(sql.toString());
			//if (matricula != null && !"".equals(matricula)) {
				pstmt.setString(1, matricula);
			//}
			//if (disciplina != null && !"".equals(disciplina)) {
				pstmt.setString(2, disciplina);
			//}

			ResultSet rs = pstmt.executeQuery();

			while (rs.next()) {
				Aluno aluno = new Aluno();
				aluno.setMatricula(rs.getString("mat_aluno"));
				aluno.setNome(rs.getString("aluno"));
				aluno.setDisciplina(rs.getString("codigo_disciplina"));
				alunos.add(aluno);
			}
			
			rs.close();
			pstmt.close();

		} catch (SQLException ErroSql) {
			JOptionPane.showMessageDialog(null, "Erro ao listar dados: " + ErroSql, "ERRO", JOptionPane.ERROR_MESSAGE);
		} finally {
			try {
				this.conexao.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

		return alunos;

	}

Abraços
Max