[Dúvida] - Inserir/Update via SERVLET

2 respostas
controlewebjspservletjava
W

Bom dia pessoal, Estou tendo dificuldades para realizar o CRUD em um app de teste…

Fiz ele com o padrão (quase) MVC, o problema é que ao clicar no form de “Novo Produto” e preencher os campos ele não faz a inserção, somente me direciona a uma tela com o nome do Controller na url (ficando: http://localhost:8080/Teste/ProdutoController)

Esse é o cód do meu form:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>ADD novo Produto</title>
    </head>
    <body>
        <form method="POST" action='ProdutoController' name="formAddProduto">
            <input type="hidden" name="action" value="insert" />

            <table>

                <tr>
                    <td>Codigo de Barras</td>
                    <td><input type="text" name="codBarras" />        
                </tr>

                <tr>
                    <td>Nome do produto</td>
                    <td><input type="text" name="Nome_Produto" />        
                </tr>

                <tr>
                    <td>Valor</td>
                    <td><input type="text" name="Valor_Produto" />        
                </tr>

                <tr>
                    <td></td>
                    <td><input type="submit" value="submit" /></td>
                </tr>          
            </table>
        </form>
        <p><a href="ProdutoController?action=listProduto"> Todos os Produtos </a></p>
    </body>
</html>

Este é o trecho da Controller que pertence ao INSERT:

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

    String redirect="";
    String codBarras = request.getParameter("codBarras");        
    String action = request.getParameter("action");

    if(!((codBarras) == null) && action.equalsIgnoreCase("insert"))
    {
        int cb = Integer.parseInt("codBarras");

        Produto p = new Produto();
        p.setCodBarras(cb);
        p.setNmProduto(request.getParameter("Nome_Produto"));
        p.setValorProduto(Float.parseFloat(request.getParameter("Valor_Produto")));

        dao.addProduto(p);

        redirect = ListaProduto;

        request.setAttribute("produtos", dao.getProdutos());  

        System.out.println("Produto adicionado com sucesso");
    }

Estou tendo esse mesmo problema com o formulário de Update… ocorre a mesma coisa já os demais (listar Produto e Deletar Produto) estão normais.

Código do form de atualizar Produto:

<html>
<head>      
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Editar Produto</title>
</head>
<body>
    <% Produto p = new Produto(); %>
    <% ProdutoDAO dao = new ProdutoDAO(); %>

    <form method="POST" action='ProdutoController' name="formEditaProduto">
        <input type="hidden" name="action" value="edit" />
        <% String cb = request.getParameter("codBarras");
        if (!((cb) == null )){
            int cb2 = Integer.parseInt(cb);
            p = dao.getCodBarras(cb2);
         %>

        <table>
             <tr>
                <td>Codigo de Barras</td>
                <td><input type="text" name="codBarras" readonly="readonly" value="<%=p.getCodBarras()%>"> </td>        
            </tr>

            <tr>
                <td>Nome do produto</td>
                <td><input type="text" name="Nome_Produto" value="<%=p.getNmProduto()%>"/>        
            </tr>

            <tr>
                <td>Valor</td>
                <td><input type="text" name="Valor_Produto" value="<%=p.getValorProduto()%>"/>        
            </tr>

            <tr>
                <td></td>
                <td><input type="submit" value="Update" /></td>
            </tr>          
        </table>
                <% } else{ 
                        out.println("ID Not found");
                } %>

    </form>
</body>

E o código da Controller referente ao edit:

else if (action.equalsIgnoreCase("edit")){

        String codBarras2 = request.getParameter("codBarras");

        int cb = Integer.parseInt(codBarras2);            
        Produto p = new Produto();
        p.setCodBarras(cb);
        p.setNmProduto(request.getParameter("Nome_Produto"));
        p.setValorProduto(Float.parseFloat(request.getParameter("Valor_Produto")));

        dao.uptProduto(p);

        request.setAttribute("produto", p);
        redirect = ListaProduto;
        System.out.println("Record updated Successfully");

Já refiz o código umas 30 vezes e sempre da a mesma =/

2 Respostas

R

Você está fazendo um form do tipo POST.
e seu controller recebe uma requisição do tipo GET.
tente alterar o código altere o metodo para GET ou seu método no controller para doPost.
Assim ele vai

W

@Edit
Cara MUITO OBRIGADO funcionou (era só um campo no banco que estava errado por isso não atualizava)!

Vlw mesmo

Criado 13 de maio de 2017
Ultima resposta 14 de mai. de 2017
Respostas 2
Participantes 2