CRUD significa Crear, Leer, Actualizar y Eliminar. Estas son las operaciones básicas importantes que se llevan a cabo en la base de datos y en las aplicaciones. Construiremos una aplicación de registro de usuario simple utilizando un Servlet, MYSQL y JDBC para la demostración. En este ejemplo, podremos crear usuarios, leer usuarios, actualizar usuarios y eliminar usuarios.
Herramientas tecnológicas:
- Base de datos MySQL (banco de trabajo)
- IDE (inteligente)
- Apache Tomcat (utilicé la versión Tomcat 9).
Primero, descargamos Apache Tomcat desde la descarga de Apache Tomcat , Extraiga en su directorio de trabajo.
Luego creamos un nuevo proyecto, lo nombramos usuario de la aplicación. Por lo general, hay dos enfoques para esto, el primero es crear su proyecto desde la base de datos y el otro es crear la aplicación primero y luego configurar la base de datos. En este artículo, comenzaremos nuestro proyecto desde la base de datos. Entonces, configuremos nuestra base de datos, en este ejemplo estoy usando MYSQL, verifique la imagen a continuación para ver la demostración de cómo configurar la base de datos.
Después de eso, configuramos nuestro proyecto, para este ejemplo estoy usando Intellij IDE,
- Cree un nuevo proyecto seleccionando Archivo (le mostrará varias opciones)
- Seleccione Nuevo, luego proyecto
- Haga clic en Java Enterprise y elija la aplicación web como su plantilla de proyecto
Configuración del servidor de aplicaciones
- Seleccione la aplicación y elija nueva
- Seleccione el directorio base de Tomcat (el que está guardado en su directorio de trabajo)
Así es como se verá la estructura del proyecto:
El aspecto de la codificación. Primero, creamos una clase modelo llamada Usuario, que es una clase POJO simple;
Usuario.java
Java
public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
Luego creamos una clase que ayuda a realizar operaciones CRUD en nuestra base de datos,
UserDaoHandler.java
Java
import java.sql.*; import java.util.ArrayList; import java.util.List; public class UserDaoHandler { public static Connection connectDB() { // connection object Connection connection = null; try { // returns the class object Class.forName("com.mysql.jdbc.Driver"); // it creates a connection to the database using // the url connection = DriverManager.getConnection( "jdbc:mysql://localhost:3306/appuserdb", "adminuser", "user123"); } catch (Exception message) { System.out.println(message); } return connection; } public static int addUser(User user) throws SQLException { int result = 0; Connection connect = UserDaoHandler.connectDB(); // SQL statement is precompiled and stored in a // PreparedStatement object. PreparedStatement preparedStatement = connect.prepareStatement( "insert into user(username,password) values (?,?)"); // set the parameter to the given Java String value preparedStatement.setString(1, user.getUsername()); preparedStatement.setString(2, user.getPassword()); // execute SQl statement insert values to the // database result = preparedStatement.executeUpdate(); // close the database connection connect.close(); return result; } public static int updateUser(User user) throws SQLException { int result = 0; // create connection at the call of this method Connection connect = UserDaoHandler.connectDB(); // SQL statement is precompiled and stored in a // PreparedStatement object PreparedStatement preparedStatement = connect.prepareStatement( "update user set username=?,password=? where id=?"); // set the parameter to the given Java String value preparedStatement.setString(1, user.getUsername()); preparedStatement.setString(2, user.getPassword()); // execute SQl statement, insert values to the // database result = preparedStatement.executeUpdate(); // close the database connection connect.close(); return result; } public static int deleteUser(int id) throws SQLException { int result = 0; // create connection at the call of this method Connection connect = UserDaoHandler.connectDB(); // SQL statement is precompiled and stored in a // PreparedStatement object PreparedStatement preparedStatement = connect.prepareStatement( "delete from USER where id =?"); // set the integer value to the user id, preparedStatement.setInt(1, id); // execute SQl statement, insert values to the // database result = preparedStatement.executeUpdate(); // close the database connection connect.close(); return result; } public static User getUserById(int id) throws SQLException { // create a user object User user = new User(); // create connection at the call of the method Connection connect = UserDaoHandler.connectDB(); // SQL statement is precompiled and stored in a // PreparedStatement object PreparedStatement preparedStatement = connect.prepareStatement( "select * from USER where id=?"); // set the integer value to the user id, preparedStatement.setInt(1, id); // A table of data representing a database result // set,generated after the query ResultSet resultSet = preparedStatement.executeQuery(); // checking for saved fields,if more than one if (resultSet.next()) { // value of the column is assigned to the set // method user.setId(resultSet.getInt(1)); user.setUsername(resultSet.getString(2)); user.setPassword(resultSet.getString(3)); } // close the database connection connect.close(); return user; } public static List<User> getAllUsers(int start, int total) throws SQLException { // creating an empty arraylist of type User. List<User> list = new ArrayList<User>(); // create connection at the call of the method Connection connect = UserDaoHandler.connectDB(); // SQL statement and telling it to select from the // first index PreparedStatement preparedStatement = connect.prepareStatement( "select * from user limit " + (start - 1) + "," + total); ResultSet resultSet = preparedStatement.executeQuery(); // this keep iterating the list of user // setting the values to the corresponding integer while (resultSet.next()) { User user = new User(); user.setId(resultSet.getInt(1)); user.setUsername(resultSet.getString(2)); user.setPassword(resultSet.getString(3)); // store the values into the list list.add(user); } // close the database connection connect.close(); return list; } }
Después, creamos nuestras clases de servlet, cada clase de servlet para Crear usuario, Actualizar usuario, Leer usuario y Eliminar usuario de la base de datos. Aquí están las clases;
Agregar servlet de usuario:
Este método hace un método de publicación, recopila información de los usuarios y la agrega a la base de datos, en este ejemplo, estamos utilizando «nombre de usuario», «contraseña» e «ID de usuario» como el campo que se guardará en la base de datos.
Java
import java.io.IOException; import java.io.PrintWriter; import java.sql.SQLException; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; @WebServlet(name = "addUser", value = "/addUser") public class AddUser extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } // override the supertype method post @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); // print object for string formatting PrintWriter out = response.getWriter(); // Httpservletrequest get parameters from user String username = request.getParameter("username"); String password = request.getParameter("password"); // Instances of User class User user = new User(); // set the parameters gotten to the 'Username' field // of User class user.setUsername(username); user.setPassword(password); int status = 0; try { // static method add the values stored in the // user object to the database status = UserDaoHandler.addUser(user); } catch (SQLException e) { e.printStackTrace(); } // check if the values correspond to the one // specified if (status > 0) { out.print(" <p>Record saved successfully!</p> "); request.getRequestDispatcher("index.html") .include(request, response); } else { out.println("Sorry! unable to save record"); } // close database connection out.close(); } }
AddUser.java para agregar usuarios a la base de datos.
Actualizar servlet de usuario:
Este método obtiene la identificación del usuario y la compara con la de la base de datos, luego realiza una actualización.
ActualizarUsuario.java
Java
import java.io.IOException; import java.io.PrintWriter; import java.sql.SQLException; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; @WebServlet(name = "updateUser", value = "/updateUser") public class UpdateUser extends HttpServlet { // override the supertype method post @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); // collect user id parameter String userId = request.getParameter("id"); // the string value is parse as integer to id int id = Integer.parseInt(userId); try { // this statement get user by id User user = UserDaoHandler.getUserById(id); // this print the jsp and render web page out.println("<h2>Edit User Account</h2>"); out.print( "<form action='patchUser' method='post'>"); out.print("<table>"); out.print( "<tr><td></td><td><input type='hidden' name='id' value='" + user.getId() + "'/></td></tr>"); out.print( "<tr><td>Name:</td><td><input type='text' name='name' value='" + user.getUsername() + "'/></td></tr>"); out.print( "<tr><td colspan='2'><input type='submit' value='Update'/></td></tr>"); out.print("</table>"); out.print("</form>"); // close database connection out.close(); } catch (SQLException e) { e.printStackTrace(); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
El método del parche:
Este método simplemente intercambia información en la base de datos con los parámetros de entrada obtenidos de la página web y los guarda en la base de datos.
PatchUser.java
Java
import static java.lang.System.out; import java.io.IOException; import java.io.PrintWriter; import java.sql.SQLException; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; @WebServlet(name = "patchUser", value = "/patchUser") public class PatchUser extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); String userId = request.getParameter("id"); int id = Integer.parseInt(userId); String username = request.getParameter("name"); String password = request.getParameter("password"); User user = new User(); user.setId(id); user.setUsername(username); user.setPassword(password); try { int result = UserDaoHandler.updateUser(user); if (result > 0) { response.sendRedirect("viewUser? page =1"); } else { out.print("unable to connect"); } } catch (SQLException e) { e.printStackTrace(); } out.close(); } }
Ver usuario Servlet:
Este método obtiene todos los usuarios de la base de datos y los muestra en un formato de tabla simple.
VerUsuario.java
Java
import java.io.IOException; import java.io.PrintWriter; import java.sql.SQLException; import java.util.List; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; @WebServlet(name = "viewUser", value = "/viewUser") public class ViewUser extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); } // override the supertype method get @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); PrintWriter out = response.getWriter(); // assigning integer values to web pages String pageId = request.getParameter("page"); int total = 3; int pagesId = Integer.parseInt(pageId); if (pagesId == 1) { } else { pagesId = pagesId - 1; pagesId = pagesId * total + 1; } // initializing list of users List<User> list = null; out.println( "<a href='/appuser_war_exploded/'>Add user</a>"); out.print("<h1> User Table: </h1>"); out.print( "<table border='1' cellpadding='4' width='80%'>"); out.print("<tr><th>Id</th><th>username</th></tr>"); try { // getting all users and assigning to the page // numbers list = UserDaoHandler.getAllUsers(pagesId, total); } catch (SQLException e) { e.printStackTrace(); } // ensuring list is not null if (list != null) { // iterating through the list of Users // And getting username and id of users. for (User user : list) { out.print("<tr><td>" + user.getId() + "</td><td>" + user.getUsername() + "</td></tr>"); } // printing out in a jsp web format. out.print("</table>"); out.print("<a href='viewUser?page=1'>1</a> "); out.print("<a href='viewUser?page=2'>2</a> "); out.print("<a href='viewUser?page=3'>3</a> "); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
Eliminar servlet:
El método a continuación elimina al usuario de la base de datos y envía la respuesta de vista del usuario, mostrando los usuarios actuales en la base de datos.
EliminarUsuario.java
Java
import java.io.IOException; import java.sql.SQLException; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.*; @WebServlet(name = "deleteUser", value = "/deleteUser") public class DeleteUser extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); } // overriding the supertype method get @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); // get user by id String userId = request.getParameter("id"); // the int value of the parameter // is parse to the id int id = Integer.parseInt(userId); try { // the delete method is // invoked on user with the // specified id UserDaoHandler.deleteUser(id); } catch (SQLException e) { e.printStackTrace(); } // it sent the current // user view as response response.sendRedirect("viewUser?page=1"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
Producción:
El servlet de Java representa la página del servidor de Java cada vez que llama un usuario.
Publicación traducida automáticamente
Artículo escrito por auduigbekele y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA