select a column in specific or sort table by id, Postgresql JSP and JSTL

Asked

Viewed 14 times

-3

Well I have a project with Postgresql, JSP, JSTL and SERVLETS, where on a screen I have a place that updates a product and another place that shows the table of products, the problem is that I do not know why after the use of the method of updating the table does not stay in order, and I wanted it to be in order, because when I give a select * from table I see that it goes out of order after doing the update, I wonder if there is a way to update without changing the sequence, or in jsp select a column in specific of the database.

jsp code of the product update: `

<form action="<%=request.getContextPath()%>/FileUpload" method="post" class="form" id="formUser">
    <input required="required" value="${modelImagem.id}" type="text" id="id" name="id" placeholder="ID">
    <br>
    <input type="file" required="required" value="${modelImagem.imagem}" id="imagem" name="imagem" onchange="mostraImagem();">
    <br>
    <img alt="Imagem" src="" id="target" name="target" width="200" height="200">
    <br>
    <button type="submit" onclick="uploadImagem();">Enviar</button>
</form>

<p id="msg" style="color: blue; margin: auto; font-size: 60px;">${msg}</p>

<a target="blank" href="mostratabelin.jsp">mostratabelin</a>
//este metodo apenas mostrara na tela a imagem selecionada
function mostraImagem() {
    
    var target = document.querySelector("img");
    var file = document.querySelector("input[type=file]").files[0];

    var reader = new FileReader();
    
    reader.onloadend = function() {
        target.src = reader.result;
    };
    
    if(file) {
        reader.readAsDataURL(file);
    } else {
        target.src = "";
    }
    
}

//metodo que vai envia a 
function uploadImagem() {
    var idExiste = document.getElementById('id').value;
    
    if(idExiste != null && idExiste != '') {
    
        var urlAction = document.getElementById('formUser').action;
        var id = document.querySelector("#id");
        var valorID = id.value;
        var target = document.querySelector("img");
        var file = document.querySelector("input[type=file]").files[0];

        var reader = new FileReader();
        
        reader.onloadend = function() {
            target.src = reader.result;
            ///////////***Upload AJAX***\\\\\\\\\\\\\\\
            $.ajax({
                method : "POST",
                url : urlAction,
                data : { imagemUpload: reader.result, id : valorID },
                success: function (response) {
                    limparForm();
                    document.getElementById('msg').textContent = response;
                }
            }).fail(function(xhr, status, errorThrown) {
                alert("Error: " + xhr.responseText);
            });
        };
        
        //aqui basicamente se existir arquivo torna ele um dado legivel p envia pro back end, caso nao exista arquivo dexa ele vaziozao
        if(file) {
            reader.readAsDataURL(file);
        } else {
            target.src = "";
        }
    
    } else { alert('id vazio'); }
}

function limparForm() {
    var elementos = document.getElementById("formUser").elements; /*Retorna os elementos html dentro do form*/
    
    for (p = 0; p < elementos.length; p ++){
        elementos[p].value = '';
    }
}
` jsp codico that shows the product: `
<a style="font-size: 25px; color: violet" href="FileUpload?acao=carregar">Carregar arquivos</a><!-- chama a servlet e ja entra por doGet por ser padrao, por isso n e preciso especificar -->
<br>
<form action="<%=request.getContextPath()%>/FileUpload" method="GET">
    <table>
        <c:forEach items="${listaUserImagem}" var="user">
            <tr style="color: white;">
                <td>${user.id}</td>
                <td> <img width="100" height="100" alt="" src="${user.imagem}"> </td>
            </tr>
        </c:forEach>
    </table>
</form>
` Servlet: `
private static final long serialVersionUID = 1L;
   
private DaoFileUpload daoFileUpload = new DaoFileUpload();

public FileUpload() {
    super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        
        String acao = request.getParameter("acao");
        
        if(acao.equalsIgnoreCase("carregar")) {
            RequestDispatcher redirecionar = request.getRequestDispatcher("mostratabelin.jsp");
            request.setAttribute("listaUserImagem", daoFileUpload.carregarImagem());
            redirecionar.forward(request, response);
            
        }
        
        } catch (Exception e) {
            e.printStackTrace();
    }
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    try {
        
        String msg = "Operacao realizada com sucesso";//msg da tela
    
        String id = request.getParameter("id");
        String imagem = request.getParameter("imagemUpload");
        
        ModelImagem modelImagem = new ModelImagem();
        
        modelImagem.setId(id != null && !id.isEmpty() ? Long.parseLong(id) : null);
        modelImagem.setImagem(imagem);
        
        if(modelImagem.isNovo()) {//se nao existir aquele id grava novo
            msg = "Algo de errado nao esta certo, tia vc provavelmente colocou um id nao existente";
        } else {//se ja existir ira atualizar
            msg = "Atualizado com sucesso!";
        }
        
        modelImagem = daoFileUpload.gravarAtualizarUsuario(modelImagem);
        
        request.setAttribute("msg", msg);
        request.setAttribute("modelImagem", modelImagem);
        
        response.getWriter().write(msg + "Upload realizado com sucesso");
        
        request.getRequestDispatcher("index.jsp").forward(request, response);
    } catch (Exception e) {
        e.printStackTrace();
        //response.getWriter().write("Erro fatal ao realizar upload: " + e.getMessage());
        RequestDispatcher redirecionar = request.getRequestDispatcher("erro.jsp");
        request.setAttribute("msg", e.getMessage());
        redirecionar.forward(request, response);
    }
}

dao:

private Connection connection;

public DaoFileUpload() {
    connection = SingleConnectionDataBase.getConnection();
}

public ModelImagem gravarAtualizarUsuario(ModelImagem objeto) throws Exception {//esse metodo vai gravar um novo usuario no banco
    
    if(objeto.isNovo()) {//se nao existir aquele id grava um novo
        
        System.out.println("Falhou com exito");
        
        /*String sql = "INSERT INTO imagem(imagem) VALUES (?);";
        PreparedStatement preparedSql = connection.prepareStatement(sql);
        
        preparedSql.setString(1, objeto.getImagem());
        
        preparedSql.execute();
        connection.commit();*/
        
    } else {//se ja existir atualiza os dados
        
        String sql = "UPDATE imagem SET imagem=? WHERE id = "+objeto.getId()+";";
        PreparedStatement preparedSql = connection.prepareStatement(sql);
        
        preparedSql.setString(1, objeto.getImagem());
        
        preparedSql.executeUpdate();
        connection.commit();
        
    }
    
    return objeto;
}

public List<ModelImagem> carregarImagem() throws Exception {//carrega imagem que esta no banco
    List<ModelImagem> modelImagens = new ArrayList<ModelImagem>();
    String sql = "select * from imagem ";
    PreparedStatement statement = connection.prepareStatement(sql);
    ResultSet resultSet = statement.executeQuery();
    
    while (resultSet.next()) {
        ModelImagem modelImagem = new ModelImagem();
        modelImagem.setId(resultSet.getLong("id"));
        modelImagem.setImagem(resultSet.getString("imagem"));
        
        modelImagens.add(modelImagem);
    }
    return modelImagens;
    //System.out.println("passou 100%");
}

} classe de modelo da tabela private Static final long serialVersionUID = 1L;

private String imagem;
private Long id;

//metodos
    public boolean isNovo() {//metodo para atualizar os dados do usuario
        if(this.id == null) {
            return true;//inserir um novo
        } else if (this.id != null && this.id > 0) {
            return false;//atualizar
        }
        
        return id == null;
    }

    public String getImagem() {
        return imagem;
    }

    public void setImagem(String imagem) {
        this.imagem = imagem;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    

} `

  • could format the code properly for better display? Here we use the markdown.

  • Brother unfortunately I’m so junior that I don’t even understand it, but I just copy and paste it for what I put

1 answer

-1

well after looking a little in the documentation I figured out what to do, before just let me talk about the codico, realize that in the dao in the recording and update method ta commented the part of the Sert, because I left so since in my business rule will only be updated an image ok, take advantage of the codico that was difficult to do it, even if it is a little strange in some parts, but it is a good solution, remembering that depending on the rule of business if it is many images it would be better to think about recording the image in a folder path in the project, and not in the database, FOLLOWING TO THE SOLUTION, I used in the method load this sql: SELECT * from imagem ORDER BY id, simplifying ended up making change only in the loading methodImage, the method then got like this:

public List<ModelImagem> carregarImagem() throws Exception {//carrega imagem que esta no banco
        List<ModelImagem> modelImagens = new ArrayList<ModelImagem>();
        //String sql = "SELECT * from imagem ORDER BY id DESC LIMIT 9999999999";//caso queira ordem ao contrario
        String sql = "SELECT * from imagem ORDER BY id";
        PreparedStatement statement = connection.prepareStatement(sql);
        ResultSet resultSet = statement.executeQuery();
        
        while (resultSet.next()) {
            ModelImagem modelImagem = new ModelImagem();
            modelImagem.setId(resultSet.getLong("id"));
            modelImagem.setImagem(resultSet.getString("imagem"));
            
            modelImagens.add(modelImagem);
        }
        return modelImagens;
        //System.out.println("passou 100%");
    }
    

at last I hope to help someone

Browser other questions tagged

You are not signed in. Login or sign up in order to post.