Error updating and deleting users - JSP and Servlets

2

When I exceed 10 characters when changing the user password, I get this error:

And when I want to delete I get this error:

CODE of UpdateUsers.jsp:

<%@page import="pe.edu.sise.bean.ErrorBean"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
        <script src="js/bootstrap.min.js" type="text/javascript"></script>
        <title>Actualizar Usuarios</title>
    </head>
    <body>
        <%
            if (Integer.parseInt(request.getParameter("IDUSUARIO"))!=0 &&
                    request.getParameter("USUARIO") != null
                    && request.getParameter("PASSWORD") != null) 
            {
                session.setAttribute("IDUSUARIO", Integer.parseInt(request.getParameter("IDUSUARIO")));
        %>
        <div class="container">
            <form action="ActualizarUsuarioServlet" method="post">
                <div class="form-group">
                    <h2>Actualizar Usuarios</h2>
                    <jsp:useBean id="error" scope="request" class="pe.edu.sise.bean.ErrorBean"/>
                    <%--igual 
               <%
                   ErrorBean error = new ErrorBean();
               %> --%>
                    <label>IDUSUARIO</label>
                    <input type="text" name="txtIdusuario" readonly="readonly" value="<%=request.getParameter("IDUSUARIO")%>" class="form-control">
                </div>  
                <div class="form-group">
                    <label>USUARIO</label>
                    <input type="text" name="txtUsuario" value="<%=request.getParameter("USUARIO")%>" class="form-control">
                </div>  
                <div class="form-group">
                    <label>PASSWORD</label>
                    <input type="text" name="txtPassword" value="<%=request.getParameter("PASSWORD")%>" class="form-control">
                </div>
                <div class="form-group text-center">
                    <button type="submit" class="btn btn-primary">Enviar Modificación</button>
                    <%
                        if (error.getMsg() != null){
                    %>
                    <div class="alert alert-danger" role="alert">
                        <jsp:getProperty name="error" property="msg" /> 
                        <%-- <%= error.getMsg()%> --%>
                    </div>
                    <%
                        }
                    %>
                </div>
            </form>
            <% } %>
            <a href="<%=request.getContextPath()%>/usuarios.jsp">Atrás</a>
        </div>
    </body>
</html>

DeleteUsuarios.jsp CODE:

<%@page import="pe.edu.sise.bean.ErrorBean"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
        <script src="js/bootstrap.min.js" type="text/javascript"></script>        
        <title>Eliminar Usuarios</title>
    </head>
    <body>
        <%
            if(Integer.parseInt(request.getParameter("ID"))!=0 &&
                    request.getParameter("USUARIO")!=null &&
                request.getParameter("PASSWORD")!=null)
            {
                session.setAttribute("IDUSUARIO", Integer.parseInt(request.getParameter("IDUSUARIO")));
        %>
        <div class="container">
            <form action="EliminarUsuarioServlet" method="post">
                  <div class="form-group">
               <h2>Eliminar Usuarios</h2>
               <jsp:useBean id="error" scope="request" class="pe.edu.sise.bean.ErrorBean" />
               <%--igual 
               <%
                   ErrorBean error = new ErrorBean();
               %> --%>
               <label>IdUsuario</label>
               <input type="hidden" name="txtIdusuario"  value="<%=request.getParameter("IDUSUARIO")%>" class="form-control">
               </div>
               <div class="form-group">
               <label>Usuario</label>
               <input type="text" name="txtUsuario"  value="<%=request.getParameter("USUARIO")%>" class="form-control">
               </div>
               <div class="form-group">
               <label>Password</label>
               <input type="text" name="txtPassword" value="<%=request.getParameter("PASSWORD")%>" class="form-control">
               </div>

               <div class="form-group text-center">
               <button type="submit" class="btn btn-primary" >Confirmar Eliminación de Usuario</button>
               <%
                   if (error.getMsg() != null) {
               %>
               <div class="alert alert-danger" role="alert">
                    <jsp:getProperty name="error" property="msg" /> 
                   <%-- <%= error.getMsg()%> --%>
               </div>
               <%
                   }
               %>
               </div>
            </form>
        <% } %>
        <a href="<%=request.getContextPath()%>/usuarios.jsp">Atrás</a>
        </div>
    </body>
</html>

CODE OF users.jsp:

<%@page import="pe.edu.sise.bean.Usuarios"%>
<%@page import="java.util.List"%>
<%@page import="pe.edu.sise.dao.ConexionBD"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="css/bootstrap.min.css" />
        <title>Mantenimiento Usuarios</title>
    </head>
    <body>
        <table class="table table-striped">
            <h2>Usuarios:</h2>
            <tr>
                <th>IdUsuario</th>
                <th>Usuario</th>
                <th>Password (Contraseña)</th>
            </tr>
            <%
                ConexionBD conexionBD = new ConexionBD();
                List<Usuarios> lista = conexionBD.listarUsuarios();
                for (Usuarios u : lista) {
            %>
            <tr>
                <td><%= u.getIDUSUARIO()%></td>
                <td><%= u.getUSUARIO()%></td>
                <td><%= u.getPASSWORD()%></td>
                <td><a href="ActualizarUsuarios.jsp?IDUSUARIO=<%= u.getIDUSUARIO()%>&&USUARIO=<%= u.getUSUARIO()%>&&PASSWORD=<%= u.getPASSWORD()%>">Actualizar</a></td>
                <td><a href="EliminarUsuarios.jsp?IDUSUARIO=<%= u.getIDUSUARIO()%>&&USUARIO=<%= u.getUSUARIO()%>&&PASSWORD=<%= u.getPASSWORD()%>">Eliminar</a></td>
            </tr>
            <%
                }
            %>
        </table>
    <center><a href="<%=request.getContextPath()%>/menu.jsp">Ir al menú</a></center>
</body>
</html>

SERVvlet.java UserUpdate CODE:

package pe.edu.sise.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import pe.edu.sise.bean.ErrorBean;
import pe.edu.sise.bean.Usuarios;
import pe.edu.sise.dao.ConexionBD;

public class ActualizarUsuarioServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //processRequest(request, response);
        ConexionBD conexionBD = new ConexionBD();
        Usuarios usuarios = new Usuarios();


        String nombreUsuario = request.getParameter("txtUsuario");
        String password = request.getParameter("txtPassword");
        int idusuario =  Integer.parseInt(request.getParameter("txtIdusuario"));

        usuarios.setUSUARIO(nombreUsuario);
        usuarios.setPASSWORD(password);
        usuarios.setIDUSUARIO(idusuario);

        int resultado = conexionBD.ActualizarUsuarios(usuarios);

        if (resultado == 1) {
            response.sendRedirect(request.getContextPath() + "/usuarios.jsp");
        } else {
            //Página Error....
        }
    }

    public void gestionaError(HttpServletRequest request, HttpServletResponse response, int code,
            String msg) throws Exception {
        ErrorBean error = new ErrorBean();
        error.setCode(1);
        error.setMsg("No se pudo actualizar la información");

        request.setAttribute("error", error);

        ServletContext ctx = getServletContext();
        RequestDispatcher rd = ctx.getRequestDispatcher("/ActualizarUsuarios.jsp");
        rd.forward(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

DELETE DeleteServlet.java CODE:

package pe.edu.sise.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import pe.edu.sise.bean.ErrorBean;
import pe.edu.sise.bean.Usuarios;
import pe.edu.sise.dao.ConexionBD;

/**
 *
 * @author FAMARESAM-PC
 */
public class EliminarUsuarioServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //processRequest(request, response);
        ConexionBD conexionBD =  new ConexionBD();
        Usuarios usuarios =  new Usuarios();

        int idusu=Integer.parseInt(request.getParameter("txtIdusuario"));

        usuarios.setIDUSUARIO(idusu);

        int resultado = conexionBD.EliminarUsuarios(usuarios);

        if(resultado == 1){
            response.sendRedirect(request.getContextPath() + "/usuarios.jsp");
        }else{

        }
    }
     public void gestionaError(HttpServletRequest request, HttpServletResponse response, int code,
            String msg) throws Exception {
        ErrorBean error = new ErrorBean();
        error.setCode(1);
        error.setMsg("No se pudo registrar la información");

        request.setAttribute("error", error);

        ServletContext ctx = getServletContext();
        RequestDispatcher rd = ctx.getRequestDispatcher("/EliminarUsuarios.jsp");
        rd.forward(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

ConexionBD.java CODE:

package pe.edu.sise.dao;

// Paso 2: Importar el paquete sql
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import pe.edu.sise.bean.Producto;
import pe.edu.sise.bean.Usuarios;


public class ConexionBD {

    Connection con = null;
    ResultSet rs = null;

    public ConexionBD() {
        try {
            //Paso 1: Registrar el Driver de Conexión de SQL Server
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
        } catch (Exception ex) {
            System.err.println("Exception: " + ex.getMessage());
        }
    }

    public boolean loginUsuario(String usuario, String contrasenia) {
        boolean usuarioValido = false;
        //Paso 3: Conectarse a la Base de Datos
        try {
            con = DriverManager.getConnection("jdbc:sqlserver://localhost\.:1433;databaseName=sisebd;user=sa;password=123");
            //Paso 4: ejecuto mi Consulta/Query
            String sql = "SELECT USUARIO, PASSWORD FROM TBL_USER WHERE USUARIO=? AND PASSWORD=?";

            PreparedStatement prst = con.prepareStatement(sql);
            prst.setString(1, usuario.trim());
            prst.setString(2, contrasenia.trim());
            rs = prst.executeQuery();

            if (rs.next()) {
                usuarioValido = true;
            }
            con.close();
        } catch (SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
        return usuarioValido;
    }

    public List<Producto> listarProductos() {
        List<Producto> productos = new ArrayList<>();
        try {
            con = DriverManager.getConnection("jdbc:sqlserver://localhost\.:1433;databaseName=sisebd;user=sa;password=123");
            String sql = "SELECT * FROM TBL_PRODUCTO";
            Statement cmd = con.createStatement();
            rs = cmd.executeQuery(sql);

            while (rs.next()) {
                Producto p = new Producto();
                p.setID(rs.getInt(1));
                p.setNOMBRE(rs.getString(2));
                p.setCANTIDAD(rs.getInt(3));
                p.setPRECIO_UNIT(rs.getDouble(4));
                productos.add(p);
            }
            con.close();
        } catch (SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
        return productos;
    }

    public int InsertarProducto(Producto objp) {
        int resultado = 0;
        try {
            con = DriverManager.getConnection("jdbc:sqlserver://localhost\.:1433;databaseName=sisebd;user=sa;password=123");
            String sql = "INSERT INTO tbl_producto(NOMBRE,CANTIDAD,PRECIO_UNIT) VALUES(?,?,?)";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, objp.getNOMBRE());
            ps.setInt(2, objp.getCANTIDAD());
            ps.setDouble(3, objp.getPRECIO_UNIT());
            resultado = ps.executeUpdate();
            con.close();
        } catch (SQLException e) {
            System.err.println("SQLException: " + e.getMessage());
        } finally {

        }
        return resultado;
    }

    public int ActualizarProducto(Producto objp) {
        int res = 0;
        try {
            con = DriverManager.getConnection("jdbc:sqlserver://localhost\.:1433;databaseName=sisebd;user=sa;password=123");
            String sql = "UPDATE tbl_producto SET NOMBRE=?,CANTIDAD=?,PRECIO_UNIT=? WHERE ID=?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, objp.getNOMBRE());
            ps.setInt(2, objp.getCANTIDAD());
            ps.setDouble(3, objp.getPRECIO_UNIT());
            ps.setInt(4, objp.getID());

            res = ps.executeUpdate();
            con.close();

        } catch (SQLException e) {
            System.err.println("SQLException: " + e.getMessage());
        } finally {

        }
        return res;

    }

    public int EliminarProducto(Producto objp) {
        int res = 0;
        try {
            con = DriverManager.getConnection("jdbc:sqlserver://localhost\.:1433;databaseName=sisebd;user=sa;password=123");
            String sql = "DELETE FROM TBL_PRODUCTO WHERE ID=?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setInt(1, objp.getID());

            res = ps.executeUpdate();
            con.close();

        } catch (SQLException e) {
            System.err.println("SQLException: " + e.getMessage());
        } finally {

        }
        return res;

    }

    public List<Usuarios> listarUsuarios() {
        List<Usuarios> usuarios = new ArrayList<>();
        try {
            con = DriverManager.getConnection("jdbc:sqlserver://localhost\.:1433;databaseName=sisebd;user=sa;password=123");
            String sql = "SELECT * FROM TBL_USER";
            Statement cmd = con.createStatement();
            rs = cmd.executeQuery(sql);

            while (rs.next()) {
                Usuarios u = new Usuarios();
                u.setIDUSUARIO(rs.getInt(1));
                u.setUSUARIO(rs.getString(2));
                u.setPASSWORD(rs.getString(3));
                usuarios.add(u);
            }
            con.close();
        } catch (SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
        return usuarios;
    }

    public int InsertarUsuarios(Usuarios obju) {
        int res = 0;
        try {
            con = DriverManager.getConnection("jdbc:sqlserver://localhost\.:1433;databaseName=sisebd;user=sa;password=123");
            String sql = "INSERT INTO tbl_user(USUARIO, PASSWORD) VALUES(?,?)";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, obju.getUSUARIO());
            ps.setString(2, obju.getPASSWORD());
            res = ps.executeUpdate();
            con.close();
        } catch (Exception e) {
            System.err.println("SQLException: " + e.getMessage());
        } finally {

        }
        return res;
    }

    public int ActualizarUsuarios(Usuarios obju) {
        int res = 0;
        try {
            con = DriverManager.getConnection("jdbc:sqlserver://localhost\.:1433;databaseName=sisebd;user=sa;password=123");
            String sql = "UPDATE TBL_USER SET USUARIO=?,PASSWORD=? WHERE IDUSUARIO=?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, obju.getUSUARIO());
            ps.setString(2, obju.getPASSWORD());     
            ps.setInt(3, obju.getIDUSUARIO());
            res = ps.executeUpdate();
            con.close();

        } catch (SQLException e) {
            System.err.println("SQLException: " + e.getMessage());
        } finally {

        }
        return res;
    }

    public int EliminarUsuarios(Usuarios obju) {
        int res = 0;
        try {
            con = DriverManager.getConnection("jdbc:sqlserver://localhost\.:1433;databaseName=sisebd;user=sa;password=123");
            String sql = "DELETE FROM TBL_USER WHERE IDUSUARIO=?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setInt(1, obju.getIDUSUARIO());
            res = ps.executeUpdate();
            con.close();

        } catch (SQLException e) {
            System.err.println("SQLException: " + e.getMessage());
        } finally {

        }
        return res;
    }
}

CODE OF THE CLASS Users.java:

package pe.edu.sise.bean;

import java.io.Serializable;

public class Usuarios implements Serializable{

    private int IDUSUARIO;
    private String USUARIO;
    private String PASSWORD;

    public int getIDUSUARIO() {
        return IDUSUARIO;
    }

    public void setIDUSUARIO(int IDUSUARIO) {
        this.IDUSUARIO = IDUSUARIO;
    }


    public String getUSUARIO() {
        return USUARIO;
    }

    public void setUSUARIO(String USUARIO) {
        this.USUARIO = USUARIO;
    }

    public String getPASSWORD() {
        return PASSWORD;
    }


    public void setPASSWORD(String PASSWORD) {
        this.PASSWORD = PASSWORD;
    }

}

ErrorBean.java CODE:

package pe.edu.sise.bean;

import java.io.Serializable;

public class ErrorBean implements Serializable{

    private String msg;
    private int code;

    /**
     * @return the msg
     */
    public String getMsg() {
        return msg;
    }

    /**
     * @param msg the msg to set
     */
    public void setMsg(String msg) {
        this.msg = msg;
    }

    /**
     * @return the code
     */
    public int getCode() {
        return code;
    }

    /**
     * @param code the code to set
     */
    public void setCode(int code) {
        this.code = code;
    }

}

DATABASE CODE (SQL SERVER):

CREATE DATABASE sisebd
GO
USE sisebd
GO

CREATE TABLE TBL_USER(
IDUSUARIO INT IDENTITY (1,1) NOT NULL PRIMARY KEY,
USUARIO VARCHAR(20) NOT NULL,
PASSWORD VARCHAR(10) NOT NULL
);

INSERT INTO TBL_USER VALUES ('admin','123');
INSERT INTO TBL_USER VALUES ('parellano', '123456');
INSERT INTO TBL_USER VALUES ('jmatos', 'agffd451');

SELECT * FROM TBL_USER;


CREATE TABLE TBL_PRODUCTO(
ID int identity (1,1) not null primary key,
NOMBRE varchar(50) not null,
CANTIDAD int not null,
PRECIO_UNIT decimal(18,2) not null
);

INSERT INTO TBL_PRODUCTO VALUES ('LECHE', 50, 2);
INSERT INTO TBL_PRODUCTO VALUES ('PESCADO', 300, 15);
INSERT INTO TBL_PRODUCTO VALUES ('ARROZ',200,3);
INSERT INTO TBL_PRODUCTO VALUES ('AZUCAR',250,2);

SELECT * FROM TBL_PRODUCTO;
    
asked by Persiano 18.09.2016 в 08:02
source

1 answer

1

So the exception says the application, in EliminarUsuario expected a number and received a null .

I guess you have the error in how you write the routes and how you process them. From what I see, you write them like this:

<td><a href="ActualizarUsuarios.jsp?IDUSUARIO=<%= u.getIDUSUARIO()%>&&USUARIO=<%= u.getUSUARIO()%>&&PASSWORD=<%= u.getPASSWORD()%>">Actualizar</a></td>
<td><a href="EliminarUsuarios.jsp?IDUSUARIO=<%= u.getIDUSUARIO()%>&&USUARIO=<%= u.getUSUARIO()%>&&PASSWORD=<%= u.getPASSWORD()%>">Eliminar</a></td>

In other words, you can send the parameters to both the ActualizarUsuarios.jsp and the EliminarUsuarios.jsp using the GET method. However, in servelts you overwrite the doPost method instead of doGet . Let's go for GET and expect to receive by POST.

This is probably the error.

    
answered by 18.09.2016 в 11:46