By GokiSoft.com| 11:42 05/12/2020|
Web Component Development (SERVJSP)

[Share Code] Chia sẻ code tìm hiểu JDBC - Kết nối CSDL - Lập trình JSP/Servlet



Nội dung:
	- Kết nối CSDL
=============================================
Bài tập: Thiết kế website => 3 page (login + register + home)
	- home => Hiển thị danh sách users đã đăng ký

- Phân tích database
	- XAMPP (mysql)
	- J2010G: đặt tên database
	- Phân tích tables
		- users
			- id: int primary key
			- fullname: varchar(50)
			- email: varchar(150)
			- birthday: date
			- password: varchar(100)
			- address: varchar(200)
			- created_at: datetime
			- updated_at: datetime
		- thiết kế

create table users (
	id int primary key auto_increment,
	fullname varchar(50) not null,
	email varchar(150),
	birthday date,
	password varchar(100),
	address varchar(200),
	created_at datetime,
	updated_at datetime
)

alter table users
add constraint unique_email unique (email)

- Project
	- create a project
		- register page
			- route: /register
			- jsp: /lesson2/register.jsp
			- servlet: servlet.RegisterServlet
		- login page
			- route: /login
			- jsp: /lesson2/login.jsp
			- servlet: lesson2.LoginServlet
		- welcome page:
			- route: /welcome
			- jsp: /lesson2/welcome.jsp
			- servlet: lesson2.WelcomeServlet
		- Tải thư viên mysql jdbc driver (maven) - add vào project
		- Kết nối CSDL & project
			- ORM (Mỗi một bảng trong database -> tạo ra 1 class object trong project) - (insert/update/delete - lấy danh sách dữ liễu) -> có sẵn.
			- Persistence
			- Gen Entity + sua config (Persistence)
		- Viet chuc nang CSDL
			- Insert Users vao trong bang Users
			



<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="Example01PU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>entity.Users</class>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/j2010g?serverTimezone=UTC"/>
      <property name="javax.persistence.jdbc.user" value="root"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.password" value=""/>
    </properties>
  </persistence-unit>
</persistence>



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package utils;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 *
 * @author teacher
 */
public class MD5Utils {
    private static final Charset UTF_8 = StandardCharsets.UTF_8;
    private static final String OUTPUT_FORMAT = "%-20s:%s";

    private static byte[] digest(byte[] input) {
        MessageDigest md;
        try {
            md = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalArgumentException(e);
        }
        byte[] result = md.digest(input);
        return result;
    }

    private static String bytesToHex(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
    }
    
    public static String md5(String str) {
        byte[] data = str.getBytes();
        byte[] d = digest(data);
        return bytesToHex(d);
    }
}



<%-- 
    Document   : login
    Created on : Nov 28, 2020, 8:31:08 AM
    Author     : teacher
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<title>Login Page</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"/>

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container">
		<div class="panel panel-primary">
			<div class="panel-heading">
				<h2 class="text-center">Login Page</h2>
			</div>
			<div class="panel-body">
                            <form method="post">
				<div class="form-group">
				  <label for="email">Email:</label>
                                  <input required="true" type="email" name="email" class="form-control" id="email">
				</div>
				<div class="form-group">
				  <label for="pwd">Password:</label>
                                  <input required="true" type="password" name="password" class="form-control" id="pwd">
				</div>
				<button class="btn btn-success">Register</button>
                            </form>
			</div>
		</div>
	</div>
</body>
</html>



<%-- 
    Document   : test
    Created on : Nov 14, 2020, 8:35:57 AM
    Author     : teacher
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<title>JSP/Servlet Tutorial - Form Register</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"/>

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
    <!-- Code java trong JSP -->
        <%
            //code java o day
            String name = "";
            if(request.getParameter("name") != null) {
                name = request.getParameter("name");
            }
            
            String email = request.getParameter("email");
            if(email == null) {
                email = "";
            }
            
            String birthday = request.getParameter("birthday");
            if(birthday == null) {
                birthday = "";
            }
            
            String address = request.getParameter("address");
            if(address == null) {
                address = "";
            }
            
            String msg = "";
            String pwdMsg = "";
            if(!name.isEmpty()) {
                msg = "Dang ky tai khoan error!!!";
                pwdMsg = "Mat khau khong khop!!!";
            }
//            out.print(name);
        %>
	<div class="container">
		<div class="panel panel-primary">
			<div class="panel-heading">
				<h2 class="text-center">Registation Form - Input User's Detail Information</h2>
                                <h3 style="color: red"><%=msg%></h3>
			</div>
			<div class="panel-body">
                            <form method="post">
				<div class="form-group">
				  <label for="usr">Name:</label>
                                  <input required="true" type="text" class="form-control" id="usr" name="name" value="<%=name%>"/>
				</div>
				<div class="form-group">
				  <label for="email">Email:</label>
                                  <input required="true" type="email" class="form-control" id="email" name="email" value="<%=email%>"/>
				</div>
				<div class="form-group">
				  <label for="birthday">Birthday:</label>
                                  <input type="date" class="form-control" id="birthday" name="birthday" value="<%=birthday%>"/>
				</div>
				<div class="form-group">
                                    <label for="pwd">Password: <label style="color: red"><%=pwdMsg%></label></label>
                                  <input required="true" type="password" class="form-control" id="pwd" name="password"/>
				</div>
				<div class="form-group">
				  <label for="confirmation_pwd">Confirmation Password:</label>
                                  <input required="true" type="password" class="form-control" id="confirmation_pwd" name="confirm_pwd"/>
				</div>
				<div class="form-group">
				  <label for="address">Address:</label>
                                  <input type="text" class="form-control" id="address" name="address" value="<%=address%>"/>
				</div>
                                <button class="btn btn-success" type="submit">Register</button>
                            </form>
			</div>
		</div>
	</div>
</body>
</html>



<%-- 
    Document   : welcome
    Created on : Nov 28, 2020, 8:31:23 AM
    Author     : teacher
--%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<title>Login Page</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"/>

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container">
		<div class="panel panel-primary">
			<div class="panel-heading">
                            <h2 class="text-center">User List Page
                                <form method="post">
                                    <button type="submit" class="btn btn-deault">Logout</button>
                                </form>
                            </h2>
			</div>
			<div class="panel-body">
                            <table class="table table-bordered  table-hover">
                                <thead>
                                    <tr>
                                        <th>STT</th>
                                        <th>Ho & Ten</th>
                                        <th>Email</th>
                                        <th>Ngay Sinh</th>
                                        <th>Dia Chi</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <!-- Su dung JSTL -->
                                    <c:forEach items="${userList}" var="item" varStatus="loop">
                                        <tr>
                                            <td>${loop.index + 1}</td>
                                            <td>${item.fullname}</td>
                                            <td>${item.email}</td>
                                            <td>${item.birthday}</td>
                                            <td>${item.address}</td>
                                        </tr>
                                    </c:forEach>
                                </tbody>
                            </table>
			</div>
		</div>
	</div>
</body>
</html>









#LoginServlet.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package lesson2;

import entity.Users;
import java.io.IOException;
import java.util.List;
import javax.jms.Session;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import utils.MD5Utils;

/**
 *
 * @author teacher
 */
public class LoginServlet extends HttpServlet {
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</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 doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //Check login su dung cookie
//        Cookie[] cookieList = request.getCookies();
//        String status = "";
//        
//        for (Cookie cookie : cookieList) {
//            if(cookie.getName().equals("status")) {
//                status = cookie.getValue();
//                break;
//            }
//        }
//        
//        if(status.equals("login")) {
//            response.sendRedirect("welcome");
//            return;
//        }
        //CHeck login su dung session
        HttpSession session = request.getSession();
        if(session.getAttribute("status") != null) {
            String status = session.getAttribute("status").toString();
            if(status != null && status.equals("login")) {
                response.sendRedirect("welcome");
                return;
            }
        }
        
        
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/lesson2/login.jsp");
        dispatcher.forward(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 {
        String email = request.getParameter("email");
        String password = request.getParameter("password");
        password = MD5Utils.md5(password);
        
        //check login trong database
        //B1. Tao connection toi database
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("Example01PU");
        EntityManager em = factory.createEntityManager();
        
        //B2. Tao truy van toi database
        Query q = em.createNamedQuery("Users.login", Users.class);
        q.setParameter("email", email);
        q.setParameter("password", password);
        
        List<Users> list = q.getResultList();
        
        if(list != null && list.size() > 0) {
            //tai khaon tren da ton tai => login success
            response.sendRedirect("list");
        } else {
            response.sendRedirect("login");
        }
        
//        if(email.equalsIgnoreCase("admin@aptechlearning.edu.vn") && password.equals("123")) {
//            //login success
//            //luu thong tin da dang
//            //Su dung Cookie => Quan ly luu tru du lieu
////            Cookie cookie = new Cookie("status", "login");
////            response.addCookie(cookie);
//            //Su dung Session => Quan ly luu tru du lieu
//            HttpSession session = request.getSession();
//            session.setAttribute("status", "login");
//            
//            response.sendRedirect("welcome");
//        } else {
//            //login fail
//            response.sendRedirect("login");
//        }
    }

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

}


#Student.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package lesson2;

import java.io.Serializable;

/**
 *
 * @author teacher
 */
public class Student implements Serializable{
    String fullname, email, address;

    public Student() {
    }

    public Student(String fullname, String email, String address) {
        this.fullname = fullname;
        this.email = email;
        this.address = address;
    }

    public String getFullname() {
        return fullname;
    }

    public void setFullname(String fullname) {
        this.fullname = fullname;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}


#WelcomeServlet.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package lesson2;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author teacher
 */
public class WelcomeServlet extends HttpServlet {
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</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 doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //Check login su dung cookie
//        Cookie[] cookieList = request.getCookies();
//        String status = "";
//        
//        for (Cookie cookie : cookieList) {
//            if(cookie.getName().equals("status")) {
//                status = cookie.getValue();
//                break;
//            }
//        }
//        
//        if(!status.equals("login")) {
//            response.sendRedirect("login");
//            return;
//        }
        //CHeck login su dung session
//        HttpSession session = request.getSession();
//        if(session.getAttribute("status") == null) {
//            response.sendRedirect("login");
//            return;
//        }
//        String status = session.getAttribute("status").toString();
//        if(status == null || !status.equals("login")) {
//            response.sendRedirect("login");
//            return;
//        }
        
        List<Student> studentList = new ArrayList<>();
        //fake du lieu
        studentList.add(new Student("TRAN VAN A", "a@gmail.com", "Ha Noi"));
        studentList.add(new Student("TRAN VAN B", "b@gmail.com", "Ha Noi"));
        studentList.add(new Student("TRAN VAN C", "c@gmail.com", "Nam Dinh"));
        studentList.add(new Student("TRAN VAN D", "d@gmail.com", "Ninh Binh"));
        studentList.add(new Student("TRAN VAN E", "e@gmail.com", "Hai Duong"));
        
        request.setAttribute("studentList", studentList);
        
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/lesson2/welcome.jsp");
        dispatcher.forward(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 {
        HttpSession session = request.getSession();
        session.removeAttribute("status");
        
        response.sendRedirect("login");
    }

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

}


#RegisterServlet.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package servlet;

import entity.Users;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import utils.MD5Utils;

/**
 *
 * @author teacher
 */
public class RegisterServlet extends HttpServlet {

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</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 doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/lesson2/register.jsp");
        dispatcher.forward(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 {
        String name = request.getParameter("name");
        String email = request.getParameter("email");
        String birthday = request.getParameter("birthday");
        String password = request.getParameter("password");
        String confirmPwd = request.getParameter("confirm_pwd");
        String address = request.getParameter("address");
        
        //check qua cac thong du lieu

        //day vao CSDL nhu the nao.
        System.out.println("address: " + address);
        
        if(email.isEmpty() || !password.equals(confirmPwd)) {
            RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/lesson2/register.jsp");
            dispatcher.forward(request, response);
            return;
        }
        //POST
        //Save du lieu vao database
        //B1. Tao ket noi toi CSDL
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("Example01PU");
        EntityManager em = factory.createEntityManager();
        
        //Query - khi thuc hien insert, update, delete: thay doi du lieu trong database
        //B2. Mo 1 transaction
        em.getTransaction().begin();
        
        //B3. Thuc hien insert, update, delete
        Users users = new Users();
        users.setAddress(address);
        
        //convert String to date
        Date bithdayDate;
        try {
            bithdayDate = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);//birthday => 2020-12-05
            users.setBirthday(bithdayDate);
        } catch (ParseException ex) {
            Logger.getLogger(RegisterServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
        users.setEmail(email);
        users.setFullname(name);
        users.setUpdatedAt(new Date());
        users.setCreatedAt(new Date());
        
        //Ma hoa password
        password = MD5Utils.md5(password);
        users.setPassword(password);
        
        //insert
        em.persist(users);
        
        //B4. Dong transaction
        em.getTransaction().commit();
        
        /**
        String msg = "Dang ky tai khoan thanh cong!!!";
        request.setAttribute("message", msg);
        
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/welcome.jsp");
        dispatcher.forward(request, response);
        **/
        response.sendRedirect("register");
    }

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

}


#UserListServlet.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package servlet;

import entity.Users;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author teacher
 */
public class UserListServlet extends HttpServlet {
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</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 doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //check login trong database
        //B1. Tao connection toi database
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("Example01PU");
        EntityManager em = factory.createEntityManager();
        
        //B2. Tao truy van toi database
        Query q = em.createNamedQuery("Users.findAll", Users.class);
        
        List<Users> list = q.getResultList();
        
        request.setAttribute("userList", list);
        
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/lesson2/userlist.jsp");
        dispatcher.forward(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 {
    }

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

}


#MD5Utils.java


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package utils;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 *
 * @author teacher
 */
public class MD5Utils {
    private static final Charset UTF_8 = StandardCharsets.UTF_8;
    private static final String OUTPUT_FORMAT = "%-20s:%s";

    private static byte[] digest(byte[] input) {
        MessageDigest md;
        try {
            md = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalArgumentException(e);
        }
        byte[] result = md.digest(input);
        return result;
    }

    private static String bytesToHex(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
    }
    
    public static String md5(String str) {
        byte[] data = str.getBytes();
        byte[] d = digest(data);
        return bytesToHex(d);
    }
}


Tags:

Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)