Dúvida no uso servlet

8 respostas
FlavioA

Olá galera eu estou iniciando aqui em java web e estou com um mini projeto pra fazer onde tenho uma duas paginas.jsp
e tenho uma servlet chamada inserirJogador que utilizo um form jsp da classe novoJogador.jsp e passo para ela via método doPost dela para inserir um jogador no banco, e funciona
normalmente, em uma das minhas classes do meu pacote de persistencia eu implementei métodos para remover e atualizar um elemento
numa List de jogadores que fiz. Minha dúvida é a seguinte. Tenho que fazer outra servlet para remover o elemento? Lembrando que preciso
receber um nome como parametro e verificar se o mesmo já está cadastrado no bd. Postarei aqui os arquivos fontes. Desde já agradeço a colaboração
de todos.

class JDBCJogador

package DAO;

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

import model.Jogador;

public class JDBCJogadorDAO implements JogadorDAO {

	Connection conexao;

	public JDBCJogadorDAO(Connection conexao) {
		this.conexao = conexao;
	}

	public void InserirJogador(Jogador jogador) {
		String comando = "insert into jogadores" + "(nome, ataque, defesa, vida, nivel, experiencia)"
				+ "values(?,?,?,?,?,?)";

		PreparedStatement p;
		try {
			p = this.conexao.prepareStatement(comando);
			p.setString(1, jogador.getNome());
			p.setInt(2, jogador.getAtaque());
			p.setInt(3, jogador.getDefesa());
			p.setInt(4, jogador.getVida());
			p.setInt(5, jogador.getNivel());
			p.setInt(6, jogador.getExperiencia());

			p.execute();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void deletarJogador(Jogador j) {
		String comando = "delete jogadores where nome =?";
		PreparedStatement p;
		try {
			p = this.conexao.prepareStatement(comando);
			p.setString(1, j.getNome());
			p.execute();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public List<Jogador> listarTodos() {
		List<Jogador> jogadores = new ArrayList<Jogador>();

		String comando = "select * from jogadores";

		try {
			java.sql.Statement stmt = conexao.createStatement();
			ResultSet rs = stmt.executeQuery(comando);

			while (rs.next()) {
				Jogador jogador = new Jogador();
               
				String nome = rs.getString("nome");
				int ataque = rs.getInt("ataque");
				int defesa = rs.getInt("defesa");
				int vida = rs.getInt("vida");
				int nivel = rs.getInt("nivel");
				int experiencia = rs.getInt("experiencia");

				jogador.setNome(nome);
				jogador.setAtaque(ataque);
				jogador.setDefesa(defesa);
				jogador.setVida(vida);
				jogador.setNivel(nivel);
				jogador.setExperiencia(experiencia);

				jogadores.add(jogador);

			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return jogadores;
	}

	public void atualizar(Jogador j) {
		String comando = "update jogadores set nome=?,set ataque=?, set defesa=?, set vida=? set nivel=?, set experiencia=?";
		PreparedStatement p;
		try {
			p = this.conexao.prepareStatement(comando);
			p.executeUpdate();
        	
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

servlet inserirJogador. Obs: trabalhando bem

package action;

import java.io.IOException;
import java.sql.Connection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import DAO.FabricaConexao;
import DAO.JDBCJogadorDAO;

import model.Jogador;


public class inserirJogador extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
   
    public inserirJogador() {
        super();
        
    }

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

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    
	    String nome = request.getParameter("nome");
		
		String ataquest =  request.getParameter("ataque");
	    int valorAtaque = Integer.parseInt(ataquest);
	    
	    String defesast = request.getParameter("defesa");
	    int valorDefesa = Integer.parseInt(defesast);
	    
	    String vidast = request.getParameter("vida");
	    int valorVida = Integer.parseInt(vidast);
	    
	    String nivelst = request.getParameter("nivel");
	    int valorNivel = Integer.parseInt(nivelst);
	    
	    String experienciast = request.getParameter("experiencia");
	    int valorExperiencia = Integer.parseInt(experienciast);
	    
	    Jogador novoJogador = new Jogador();
	    novoJogador.setNome(nome);
		novoJogador.setAtaque(valorAtaque);
		novoJogador.setDefesa(valorDefesa);
		novoJogador.setVida(valorVida);
		novoJogador.setNivel(valorNivel);
		novoJogador.setExperiencia(valorExperiencia);
		
		FabricaConexao fabrica = new FabricaConexao();
		Connection conexao = fabrica.fazConexao();
		
		JDBCJogadorDAO dao = new JDBCJogadorDAO(conexao);
		dao.InserirJogador(novoJogador);
		
		fabrica.fecharConexao();
		

	}

}

novoJogador.jsp: formulario de inserção no bd

<%@page import="model.Jogador"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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>Cadastro de jogador</title>
</head>
<body>
<h1>Cadastro do Jogador</h1>
<h2>Coloque seus dados no formul&aacute;rio e clique em <b>cadastrar.</b></h2>

<form action="inserirJogador" method="post">
	 <table>
	   <tr>
	     <td>Nome:</td><td><input type="text" name="nome"></td>
	   </tr>
	   <tr>
	     <td>Ataque:</td><td><input type="text" name="ataque"></td>
	   </tr>
	   <tr>
	     <td>Defesa:</td><td><input type="text" name="defesa"></td>
	   </tr>
	   <tr>
	     <td>Vida:</td><td><input type="text" name="vida"></td>
	   </tr>
	   <tr>
	     <td>Nivel:</td><td><input type="text" name="nivel"></td>
	   </tr>
	   <tr>
	     <td>Experiencia:</td><td><input type="text" name="experiencia"></td>
	   </tr>
	   <tr>
	     <td colspan="2" align="center"><input type="submit" value="Cadastrar"></td>
	   </tr>
	   <tr>
	   <td colspan="2" align="center"><input type="reset" value="Limpar"></td>
	   </tr>
	 </table>
	</form>
	<a href="listarJogadores.jsp"><b>Clique aqui</b> para ver os jogadores Cadastrados.</a>

</body>
</html>

lembro gente que minha dúvida é se tenho que fazer outra servlet para remover jogadores da list
visto que preciso receber do usuário o nome do jogador que ele pretende excluir.

8 Respostas

fabiocortolan

Eu costumo utilizar um servlet para cada formulário, por exemplo, se tenho um cadastro de clientes e um de fornecedores, faço um único servlet para cadastrar, excluir, consultar, clientes e outro para os mesmos processos do fornecedor.
De qualquer forma, isso fica a seu critério, vc faz da forma como achar mais fácil d manter.

FlavioA

fabio você pode me mostrar como você faz pra fazer todas as oprações com uma servlet só
exlcuir inserir, atualizar, podes postar um exemplo?

fabiocortolan

Geralmente mando um parâmetro da operação q preciso e faço um if no post:

if (request.getParameter('operacao').equals('salvar')) {
    // código para salvar
}
FlavioA

cara entendi teu caso mas não rodou aqui no meu podes postar uma servlet implementada mostrando como você faz?

fabiocortolan

Desculpe pela última postagem, estava de saída e fiz na correria, primeiro vc envia a operação q quer realizar (esse código é da página):

url?operacao=salvar&... // Aqui passo a operação (salvar, excluir, etc + os dados do formulário como id, nome, etc)

depois disso vc trata a operação no seu servlet

public class TesteServlet {
	@Override
	protected synchronized void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			if (request.getParameter("operacao").equalsIgnoreCase("salvar")) {
				// código para salvar os dados
			} else if (request.getParameter("operacao").equalsIgnoreCase("excluir")) {
				// código para excluir os dados
			}
	}
}
FlavioA

tendi fabio, foi esclarecedor muito obrigado!!

fabiocortolan

Blz, não esqueça de colocar o tópico como [RESOLVIDO] :wink: !

Flw…

FlavioA

RESOLVIDO!!!

Criado 24 de abril de 2013
Ultima resposta 25 de abr. de 2013
Respostas 8
Participantes 2