Erro em validação de campos em formulário JSP

Olá pessoal, estou com um problema na hora da validação de um formulário. Este formulário tem a função de trocar a senha do usuário. Quando não coloco valor nenhum ele dá erro 500 disparando a excessão IllegalStateException. Quando coloco as senhas iguais ele também dá o mesmo erro. Quando coloco os valores das senhas de forma correta o sistema me dá uma mensagem de usuário ou senhas inválidos, ou seja, o erro 2 e nem mesmo chega a executar a query. Se vcs puderem me ajudar eu agradeço!!!

este é o form da página TrocaSenha.jsp

form method=“post” action=“TrocaSenhaServlet”>Entre com seu login e senha:





















Login:
Senha:
Nova senha:
Confirme a nova senha:


<%if(request.getParameter(“erro”) != null){
String erro = request.getParameter(“erro”);
if(erro.equals(“1”))
out.println(“Favor preencher todos os campos!”);
else if(erro.equals(“2”))
out.println(“Login ou senha inválidos”);
else
out.println(“A confirmação da nova senha difere da senha nova.”);
}
if(request.getParameter(“confirmacao”) != null){
out.println(“Senha atualizada com sucesso!”);
}
%>

esta é a servlet que recebe os valores do form:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.dao.;
import br.com.dominio.
;
import java.sql.*;

/**

  • Servlet implementation class for Servlet: TrocaSenha

*/
public class TrocaSenhaServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;

public TrocaSenhaServlet() {
	super();
}   	


public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	doPost(request,response);
}  	

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	if((request.getParameter("login") == null) || (request.getParameter("senha") == null) || (request.getParameter("senhaNova")== null) || (request.getParameter("senhaNova2") == null)){
		response.sendRedirect("TrocaSenha.jsp?erro=1");// lembrar de colocar a flag. campo vazio.
	}
	String login = request.getParameter("login");
	String senha = request.getParameter("senha");
	String senhaNova = request.getParameter("senhaNova");
	String senhaNova2 = request.getParameter("senhaNova2");
	System.out.println(login + " " + senha + " " + senhaNova + " " + senhaNova2);
	if(login.equals("") || senha.equals("") || senhaNova.equals("") || senhaNova2.equals("")){
		System.out.println("asçklfdlddod.llldododpodf=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
		response.sendRedirect("TrocaSenha.jsp?erro=1");// lembrar de colocar a flag. campo vazio.
	}
	if(!senhaNova.equals(senhaNova2)){
		response.sendRedirect("TrocaSenha.jsp?erro=3"); // novassenhas inválidas.
	}
	PessoaDAO pdao = new PessoaDAO();
	int i = pdao.trocaSenha(login,senha,senhaNova);
	if(i>0){
		response.sendRedirect("TrocaSenha.jsp?confirmacao=1");
	}else
		response.sendRedirect("TrocaSenha.jsp?erro=2"); // senha atual ou login inválidos.



}   	  	    

}

este é o método da classe PessoaDAO que faz a conexão com o banco

public int trocaSenha(String login, String senha, String novaSenha){
String query = “update userlogin set senha md5(’” + novaSenha + “’) where login = '” + login + “’ and senha = md5 (’” + senha + “’);”;
int i = 0;
try {
st = con.createStatement();
i = st.executeUpdate(query);
System.out.println(query);
// if(i>0){
// setStatus(“Senha atualizada com sucesso.”);
// }else
// setStatus(“Usuário ou senha inválido. A atualização da senha não pôde ser feita.”);
} catch (SQLException sql) {
setStatus("Um erro ocorreu. Favor relatar a seguinte mensagem ao administrador da página: "+ sql.getMessage());
}catch (Exception ex){
setStatus(ex.getMessage());
}
return i;
}

OBRIGADOO!!!

Me ajudem ae, please!!

up!!!