How to do a CRUD in the same FORM JSP-SERVLET

0

I have created a JSP page called TelaAreaCurso where it is composed of two grids, the one on the left is a form with the form and the one on the right a table that lists all the areas of the course registered.

Below is the page described:

<%-- IMPORTS DO SISTENA --%>
<%@page import="java.util.ArrayList" %>
<%@page import="java.util.List" %>
<%@page import="thoth.modelo.bean.AreaCurso" %>
<%@page import="thoth.modelo.dao.AreaCursoDao" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!doctype html>
<html>
    <head>

        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE-edge">
        <title>Gerenciador de &Aacute;reas do Curso</title>

        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
        <link href="bootstrap/css/estilo.css" rel="stylesheet">
        <link href="bootstrap/js/javascript.js" rel="stylesheet">
        <link href="bootstrap/imagem/imagem_thoth.jpeg" rel="icon">

        <style>
            /* PÕE A BARRA DE ROLAGEM VERTICAL NA TABELA LOCAL */
            .table-overflow {
                max-height:400px;
                overflow-y:auto;
            }
        </style>

        <!-- SCRIPT RESPONSÁVEL POR APAGAR OS CAMPOS -->
        <script id="apaga_campos">
            document.getElementById('cx_codigo').value=''; // Limpa o campo
            document.getElementById('cx_nome').value=''; // Limpa o campo
        </script>

    </head>
    <body>

        <!-- CABEÇALHO DA PÁGINA -->
        <nav class="navbar navbar-dark bg-success">
            <div class="col-sm-5">
                <img src="bootstrap/imagem/imagem_thoth_logo.jpeg" height="80" width="80" class="img-circle img-responsive">
            </div>
            <div class="col-sm-7" >
                <h1>&Aacute;rea do Curso</h1>
            </div>
        </nav>

        <div class="container-fluid">

            <div class="col-sm-6"> <!-- COLUNA 1 DA PÁGINA -->

                 <h2>&Aacute;reas do Curso</h2> <!-- TÍTULO -->

                <form action="AreaCurso_Cadastro_Controle" method="post">

                    <div class="form-group"> <!-- agrupará e vai separar o label do campo e dos demais -->
                        <!-- campo código -->
                        <label for="cx_codigo">C&oacute;digo:</label>                        
                        <input class="form-control" type="number" name="cx_codigo" id="cx_codigo" size="4" maxlength="4" placeholder="0" disabled>

                    </div>

                    <div class="form-group"> <!-- agrupará e vai separar o label do campo e dos demais -->
                        <!-- campo nome -->
                        <label for="cx_nome">Nome:</label>
                        <input class="form-control" type="text" name="cx_nome" id="cx_nome" size="50" maxlength="50" placeholder="Informe a descrição da área" autofocus required>
                    </div>

                    <div class="form-group"> <!-- agrupará e vai separar o label do campo e dos demais -->
                        <!-- botão salvar-->
                        <input type="submit" value="Salvar" id="salvar" name="salvar" class="btn btn-success btn-lg">                        
                        <!-- campo limpar -->
                        <input type="reset" value="Novo" onclick="apaga_campos" id="novo" name="novo" class="btn btn-secondary btn-lg">                        
                    </div>

                </form>

                 <div class="alert alert-success">
                     <h3>${mensagem}</h3>
                 </div> 

            </div>

            <div class="col-sm-6"> <!-- COLUNA 2 DA PÁGINA -->

                <h1>Lista de &Aacute;reas de Cursos do Sistema</h1>

               <div class="table-overflow">
                <table class="table table-striped table-bordered table-hover"> <!-- TABELA -->
                    <thead class="success"> <!-- O CABEÇALHO DA TABELA -->

                        <td class="success">C&oacute;digo</td>
                        <td class="success">Descri&ccedil;&atilde;o</td>
                        <td class="success"></td> <!-- BOTÃO ALTERAR -->
                        <td class="success"></td> <!-- BOTÃO EXCLUIR -->

                    </thead>

                    <tbody>

                        <%-- SCRIPTLET - DECLARAÇÃO DO MÉTODO DAO RESPONSÁVEL POR LISTAR AS AREAS DO CURSO --%>
                        <% 
                            List<AreaCurso> listaArea = new ArrayList<AreaCurso>();
                            AreaCursoDao areaDao = new AreaCursoDao();

                            listaArea = areaDao.listarAreaCurso();

                            for( AreaCurso area: listaArea ){ 
                       %>

                        <tr> <!-- LINHA DA TABELA -->
                            <td><%= area.getCodigo() %></td>
                            <td><%= area.getNome() %></td>
                            <td>
                                <input type="button" value="Alterar" id="alterar" name="alterar" onclick="location='http://localhost:8080/Thoth/TelaAreaCursoAlterar.jsp?codigoAlterar=<%= area.getCodigo() %>'" class="btn btn-secondary btn-sm">
                            </td>
                            <td>
                                <input type="button" value="Excluir" id="excluir" name="excluir" onclick="location='http://localhost:8080/Thoth/AreaCurso_Excluir_Controle?cd=<%= area.getCodigo() %>'" class="btn btn-danger btn-sm">
                            </td>
                        </tr>

                        <%
                            }
                        %>

                    </tbody>

                </table>
               </div> 

            </div>

        </div>

        <!-- FIM DO CÓDIGO -->
        <script src="bootstrap/js/jquery.js"></script>
        <script src="bootstrap/js/bootstrap.min.js"></script>
        <script src="bootstrap/js/script.js"></script>
    </body>
</html>

I'vealreadybeenabletoregister,butnowthechallengeiswhenclickingonthebuttonchangeordeletefromthelisttheinformationofthisrelatedobjectloadinthisformtotheside.CouldsomeonehelpmewithhowIcoulddothis?

Additionalprojectinformation:

BEANCLASS

packagethoth.modelo.bean;publicclassAreaCurso{privateIntegercodigo;privateStringnome;/***@returnthecodigo*/publicIntegergetCodigo(){returncodigo;}/***@paramcodigothecodigotoset*/publicvoidsetCodigo(Integercodigo){this.codigo=codigo;}/***@returnthenome*/publicStringgetNome(){returnnome;}/***@paramnomethenometoset*/publicvoidsetNome(Stringnome){this.nome=nome;}publicStringtoString(){returnnome;}}

CLASSDAO:

packagethoth.modelo.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importthoth.modelo.bean.AreaCurso;importthoth.modelo.conexao.Conexao;publicclassAreaCursoDao{privateConnectionconn=null;//PreparaaconexãocomobancodeDadosprivatePreparedStatementps=null;//PreparaoambienteoucaminhoparaabancodedadosprivateResultSetrs=null;//EnviaasfunçõessqldaaplicaçãoparaobancoprivateStringsql="";
    private List<AreaCurso> listaArea = new ArrayList<>();

    /**
     * Método responsável por criar o salvar as ÁREA DO CURSO.
     * @param area 
     */
    public void salvar( AreaCurso area )
    {
        conn = Conexao.getConexao();      // Abri a conexão

        sql = "INSERT INTO public.areacurso(area_nome)VALUES (?)";

        try {  
            ps = conn.prepareStatement(sql);


            ps.setString(1, area.getNome() );    // Parâmetro é igual a um, pois ele só tem uma INTERROGAÇÃO

            ps.execute();   // Executa ou commit o código SQL

            conn = Conexao.fecharConexao();

        } catch (SQLException ex) {
            System.out.println("ERRO AO SALVAR - DAO AREACURSO");
        }

    }

    /**
     * Método responável por Pesquisar a AREACURSO do banco de dados.
     * @param codigo
     * @return 
     */
    public AreaCurso pesquisarAreaCurso( int codigo )
    {

        conn = Conexao.getConexao();

    sql = "SELECT * FROM public.areacurso WHERE area_cod = ?";

    AreaCurso area = null;

        try {
            ps = conn.prepareStatement(sql);

            ps.setInt(1, codigo);
            rs = ps.executeQuery();

            if(rs.next()){

                area = new AreaCurso();

                area.setCodigo( rs.getInt("area_cod") );
                area.setNome(rs.getString("area_nome"));
            }

            conn = Conexao.fecharConexao();

            ps.close();
            rs.close();

        } catch (SQLException ex) {
            System.out.println("Erro ao Pesquisar - DAO AREACURSO, MOTIVO: "+ex);
        }

        return area;

    }

    /**
     * Método responsável por listar todas as AREACURSO do banco de dados
     * @return 
     */
    public List<AreaCurso> listarAreaCurso(){

        conn = Conexao.getConexao();        

    sql = "SELECT * FROM public.areacurso";

    AreaCurso area = null;

        try {
            ps = conn.prepareStatement(sql);

            rs = ps.executeQuery();

            while(rs.next()){

                area = new AreaCurso();

                area.setCodigo( rs.getInt("area_cod") );
                area.setNome( rs.getString("area_nome") );

                listaArea.add(area);
            }

            conn = Conexao.fecharConexao();

            ps.close();
            rs.close();

        } catch (SQLException ex) {
            System.out.println("ERRO AO LISTAR - DAO AREACURSO");
        }

    return listaArea;       

    }

    /**
     * Método responsável por alterar dados no Banco
     * @param area 
     */
    public void alterar( AreaCurso area ) throws SQLException
    {

        conn = Conexao.getConexao();      // Abri a conexão

        sql = "UPDATE public.areacurso SET area_nome=? WHERE area_cod = ?";

        ps = conn.prepareStatement(sql);  

        ps.setString(1, area.getNome());    // Parâmetro é igual a um, pois ele só tem uma INTERROGAÇÃO
        ps.setInt(2, area.getCodigo());    // Parâmetro é igual a um, pois ele só tem uma INTERROGAÇÃO

        ps.executeUpdate();   // Executa ou commit o código SQL

        conn = Conexao.fecharConexao();

    }

    /**
     * Método responsável por excluir dados do banco de dados
     * @param area 
     */
    public void excluir( AreaCurso area ) throws SQLException
    {

        conn = Conexao.getConexao();      // Abri a conexão

        sql = "DELETE FROM public.areacurso WHERE area_cod = ?";

        ps = conn.prepareStatement(sql);  

        ps.setInt(1, area.getCodigo());    // Parâmetro é igual a um, pois ele só tem uma INTERROGAÇÃO

        ps.execute();   // Executa ou commit o código SQL

        conn = Conexao.fecharConexao();

    }

}

CLASS CONNECTION:

package thoth.modelo.conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexao {

    static Connection con = null;

    private static final String URL = "jdbc:postgresql://localhost/Thoth";
    private static final String USER = "postgres";
    private static final String SENHA = "123";

    public static Connection getConexao(){

        try {

            Class.forName("org.postgresql.Driver");
            con = DriverManager.getConnection(URL, USER, SENHA);
       //     System.out.println("Conexão ok  !");

        } catch (Exception e) {
                System.out.println("Erro na conexao !" +e.getMessage());
        }
        return con;
    }

    public static Connection fecharConexao()
    {
        try{
           con.close();           
        }catch(SQLException e){
           System.out.println("Erro ao fechar Conexao !" +e.getMessage());
        }

        return con;
    }

    public static void main(String[] args) {
      Conexao.getConexao();     

    }

}

DATABASE TABLE - PSOTGRESQL

CREATE DATABASE Thoth;

CREATE TABLE areacurso(
    area_cod SERIAL NOT NULL,
    area_nome VARCHAR(5) NOT NULL,
    PRIMARY KEY(area_cod)
);
    
asked by anonymous 20.10.2018 / 17:37

0 answers