1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Bug jsp + servlet

Olá, estou com um sério problema em minha jsp, após eu submitar a página e enviar os dados para o banco eu dei um (dispacher) para uma jsp que gera um array list dos dados que envia só que quando eu aperto (f5) ela envia novamente os dados que acabei de inserir.

CLASSE POSTAGEM

package model;

public class Postagem {

private int id_postagem;
private String descricao;

public void setId_postagem(int id_postagem) {
    this.id_postagem = id_postagem;
}
public int getId_postagem() {
    return id_postagem;
}

public void setDescricao(String descricao) {
    this.descricao = descricao;
}
public String getDescricao() {
    return descricao;
}
}

CLASSE BANCO

 package model;
 import java.sql.*;
 import java.util.ArrayList;
public class Banco {
public Connection con;
public void conecta () throws ClassNotFoundException,SQLException{
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            this.con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;" + "databaseName=AJAX;user=sa;password=12345678;");
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }catch (SQLException e){
            e.printStackTrace();
        }
        System.out.println("Conectado");
    }

//NUMERADOR AUTOMATICO DO (ID)

private int NumId(String Tabela, String Id) throws SQLException, ClassNotFoundException{
        this.conecta();
        PreparedStatement stmt =  this.con.prepareStatement("select * from " + Tabela + " order by " + Id + " desc");
        ResultSet rs = stmt.executeQuery();
        while (rs.next()){
            return rs.getInt(Id)+1;
        }
        return 1;
    }    

    //INSERÇÃO DE DADOS NA TABELA (POSTAGEM)
    public void inserePostagem(Postagem nova) throws SQLException, ClassNotFoundException{
        this.conecta();
        PreparedStatement stmt = this.con.prepareStatement("insert into postagem values (?,?)"); //insere dados na tabela
        stmt.setInt(1, this.NumId("postagem", "id_postagem"));
        stmt.setString(2, nova.getDescricao());
        stmt.execute();
    }        
    //ARRAY LIST BANCO DE DADOS
    public ArrayList <Postagem> ConsultaPostagem() throws ClassNotFoundException, SQLException{
        this.conecta();
        PreparedStatement stmt = this.con.prepareStatement(" select * from postagem");
        //Array LIST
        ResultSet Rs = stmt.executeQuery();
        ArrayList <Postagem> listaPostagens = new ArrayList <Postagem>();
        if (Rs != null){
        while (Rs.next()){
            Postagem post = new Postagem();
            post.setId_postagem(Rs.getInt("id_postagem"));
            post.setDescricao(Rs.getString("descricao"));
            listaPostagens.add(post);
        }
        Rs.close();
        stmt.close();
    }
        return listaPostagens;
    }        
}

SERVLET

package controller; 
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.*;

public class Servlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
}
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String metodo = request.getParameter("metodo");
    if(metodo.equalsIgnoreCase("Postagem")){
        this.Postagem(request, response);
    }
}        
   protected void Postagem (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

        Banco bd = new Banco();
        Postagem nova = new Postagem();

        nova.setDescricao(request.getParameter("descricao"));
        try {
            bd.inserePostagem(nova);
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        ArrayList <Postagem> Lista = new ArrayList <Postagem> ();
        try {
            Lista = bd.ConsultaPostagem();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        request.setAttribute("Lista", Lista);
        request.getRequestDispatcher("array.jsp").forward(request, response);
    }

}    

INSERE.HTML

<!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>Insert title here</title>
</head>
<body>
<form method="post" action="/postAjax/Servlet?metodo=Postagem">
<input type="text" placeholder="insira uma descrição" name="descricao">
<input type="submit">
</form>
</body>
</html>

ARRAY.JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@page import="model.*"%>
<%@page import="java.util.ArrayList"%>
<!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>Insert title here</title>
</head>
<body>
<% ArrayList <Postagem> arrayrec =      (ArrayList<Postagem>)request.getAttribute("Lista"); %>
</br>
 <% for(int i = 0; i <arrayrec.size(); i++){%>
<a href="index.html"><%=arrayrec.get(i).getId_postagem()%></a>
<%=arrayrec.get(i).getDescricao() %>
  <%}%>

</body>
</html>

SQL

CREATE DATABASE AJAX
CREATE TABLE POSTAGEM(
  ID_POSTAGEM INT PRIMARY KEY,
  DESCRICAO VARCHAR(100)
)
  • Poste o código que vc fez, para tentarmos identificar o problema.

    lucastody   19 de mai de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsp servlets ou faça a sua própria pergunta.