Não funciona o UPDATE - [Resolvido]

NÂO CONSIGO FAZER UPDATE - :!: :!: :!: :!:

trecho da servlet

                        else if(cmd.equalsIgnoreCase("atualizar")){
				dao.atualizar(titulo);
				rd = request.getRequestDispatcher("LocadoraServlet?cmd=listar");
			}

método q faz inserção

public void atualizar(Titulo titulo){
		PreparedStatement ps = null;
		Connection conn = null;
		
		if(titulo == null)
			System.out.println("O valor passado não pode ser nulo");
		try{
			String SQL = "UPDATE titulos SET nome=? WHERE isbn=?";
			
			conn = this.conn;			
			
			ps   = conn.prepareStatement(SQL);			
			
			ps.setString(1, titulo.getNome());
			ps.setString(2, titulo.getIsbn());		
			ps.executeUpdate();			
			
		}catch(SQLException sqle){
			System.out.println("Erro ao atualizar dados "+ sqle);
		}finally{
			ConnectionLocadoraFactory.closeConnection(conn, ps);
		}		
	}

página que mostra os registros do banco

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"
    import="java.util.*, meupacote.Titulo"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Locadora</title>
</head>
<body>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
	<th>ID</th>
	<th>Nome</th>
	<th>Alteração</th>
	
</tr>
<%
List titulosList = (List)request.getAttribute("titulosList");

for(Iterator i=titulosList.iterator(); i.hasNext();){
	Titulo t = (Titulo)i.next();
%>
	<tr>
		<td>
		<a >
			&lt;%=t.getIsbn()%&gt;
		</a>
		&lt;/td&gt;
		&lt;td&gt;&lt;%=t.getNome()%&gt; &lt;/td&gt;
		&lt;td&gt;
			<a >Excluir</a>
		&lt;/td&gt;
	&lt;/tr&gt;
&lt;%
}
%&gt;
&lt;/table&gt;
<br />
<a >Adicionar um novo título</a>
<br />
<a >Página Principal</a>
&lt;/body&gt;
&lt;/html&gt;

[code]

Erro do servidor tomcat

Erro ao atualizar dados com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Column 'nome' cannot be null

[quote=felipealves.gnu]

Erro ao atualizar dados com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Column 'nome' cannot be null [/quote]

Como o Erro diz: “Column ‘nome’ cannot be null”.
O atributo nome do seu Objeto Titulo provavelmente está nulo. Como você está instanciando o objeto Titulo e atribuindo um valor ao atributo nome deste objeto? Poste o código, pois nele provavelmente está o problema.

[quote=thiagotn][quote=felipealves.gnu]

Erro ao atualizar dados com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Column 'nome' cannot be null [/quote]

Como o Erro diz: “Column ‘nome’ cannot be null”.
O atributo nome do seu Objeto Titulo provavelmente está nulo. Como você está instanciando o objeto Titulo e atribuindo um valor ao atributo nome deste objeto? Poste o código, pois nele provavelmente está o problema.

[/quote]

Segue o trecho da Servlet onde está sendo instanciado o objeto titulo.

public LocadoraServlet() {
        super();      
    }

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String cmd  = request.getParameter("cmd");
		
		if(cmd == null){
			cmd = "principal";		
		}
		
		LocadoraDAO dao;
		
		Titulo titulo = new Titulo();
		
		if(cmd != null || !cmd.equalsIgnoreCase("principal")){
			
			titulo.setNome(request.getParameter("nome"));			
			
			String tipo = request.getParameter("tipo");	
			
			if(tipo != null){
				titulo.setTipo(Integer.parseInt(tipo));
			}
			
			String isbn = request.getParameter("isbn");
			if(isbn == null){
				isbn="1";			
				titulo.setIsbn(isbn);
			}
			
			titulo.setIsbn(request.getParameter("isbn"));
			titulo.setGenero(request.getParameter("genero")); 			
		}
		
		try{
			dao = new LocadoraDAO();			
			RequestDispatcher rd = null;
			
			if(cmd.equalsIgnoreCase("listar")){
				List titulosList = dao.todosTitulos();
				request.setAttribute("titulosList", titulosList);
				rd = request.getRequestDispatcher("/mostrarTitulosCads.jsp");				
			}
			else if(cmd.equalsIgnoreCase("addtit")){
				dao.salvar(titulo);
				rd = request.getRequestDispatcher("LocadoraServlet?cmd=listar");
			}
			else if(cmd.equalsIgnoreCase("exc")){
				dao.excluir(titulo);
				rd = request.getRequestDispatcher("LocadoraServlet?cmd=listar");
			}
			else if(cmd.equalsIgnoreCase("atu")){
				titulo = dao.procurarTitulo(titulo.getIsbn());
				HttpSession session = request.getSession(true);
				session.setAttribute("titulo", titulo);
				rd = request.getRequestDispatcher("/formAtuTitulo.jsp");
			}
			else if(cmd.equalsIgnoreCase("atualizar")){
				dao.atualizar(titulo);
				rd = request.getRequestDispatcher("LocadoraServlet?cmd=listar");
			}
			else if(cmd.equalsIgnoreCase("principal")){
				rd = request.getRequestDispatcher("/index.jsp");
			}
				rd.forward(request, response);
		}catch (Exception e) {
			e.printStackTrace();
			throw new ServletException(e);
		}		
	}

Coloque também o código do seu formulário de inserção de Título.

segue abaixo

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Inserir Títulos</title>
</head>
<body>
<form action="LocadoraServlet?cmd=addtit" method="post">
<table>
	<tr>
		<td>ISBN</td><td><input type="text" name="isbn" /> </td>
	</tr>
	<tr>
		<td>Título</td><td><input type="text" name="nome" /> </td>
	</tr>
	<tr>
		<td>Gênero</td><td><input type="text" name="genero" /> </td>
	</tr>

	<tr>
		<td>Tipo</td>
		<td><select name="tipo" >
				<option value="1">Livro</option>
				<option value="2">DVD</option>
				<option value="3">CD</option>
			</select>
		</td>
	</tr>
	<tr>		
		<td><input type="submit" name="btCadastrar" value="Enviar" /></td>
	</tr>
</table>
</form>
</body>
</html>

o método de salvar segue abaixo, (este método funciona perfeitamente), agora o método de ATUALIZAR é que não funciona

	public void salvar(Titulo titulo){
		PreparedStatement ps = null;
		Connection conn = null;
		if(titulo == null)
			System.out.println("O valor passado não pode ser nulo");
		try{
			String SQL = "INSERT INTO titulos (isbn, nome, genero, tipo)" + "VALUES (?, ?, ?, ?)";
			conn = this.conn;
			ps = conn.prepareStatement(SQL);
			ps.setString(1, titulo.getIsbn());
			ps.setString(2, titulo.getNome());
			ps.setString(3, titulo.getGenero());
			ps.setInt(4, titulo.getTipo());
			ps.executeUpdate();
		}catch(SQLException sqle){
			System.out.println("Erro ao inserir dados "+ sqle);
		}finally{
			ConnectionLocadoraFactory.closeConnection(conn, ps);
		}
	}

Aparentemente não vi problemas.
Coloca algo como:

 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  

          System.out.println(request.getParameter("nome"));      
          ...

e vê no console se o nome é impresso no console.

[quote=thiagotn]Aparentemente não vi problemas.
Coloca algo como:

 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  

          System.out.println(request.getParameter("nome"));      
          ...

e vê no console se o nome é impresso no console.
[/quote]
Thiago obrigado pela paciência e atenção,
o erro estava no caminho do href q era <a href="LocadoraServlet?cmd=atu&isbn=<%=t.getIsbn()%>"> e não <a href="LocadoraServlet?cmd=atualizar&isbn=<%=t.getIsbn()%>">
fazendo com que a servlet se perdesse.

Valeu Thigo, Abração