Web bán hàng bằng Spring MVC – Đăng nhập hệ thống

Tiếp tục loạt bài hướng dẫn xây dựng Web bán hàng bằng Spring MVC thì Team Việt Dev sẽ trình bày phần thiết kế đăng nhập hệ thống để truy cập quản trị.

Như vậy trong nội dung phần hướng dẫn trước chúng ta đã hoàn thành xong phần thiết kế giao diện quản lý bán hàng Spring MVC bằng cách sử dụng mẫu theme miễn phí có sẵn, còn nội dung trong phần này sẽ xây dựng chức năng đăng nhập hệ thống.

Bước 1: Đầu tiên chúng ta sẽ thiết kế lớp tài khoản để lưu thông tin người dùng như tên đăng nhập, mật khẩu, địa chỉ email và một số thông tin cơ bản khác.

Lớp Member.java

package com.teamvietdev.model;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

/**
 *
 * @author TVD
 */
@Entity(name = "member")
public class Member implements Serializable {

    @Id
    @GeneratedValue
    private long memberId;
    private String memberLogin;
    private String memberPass;
    private String memberMail;
    private boolean memberStatus;

    // get & set

}

Viết phương thức kiểm tra thông tin đăng nhập.

Lớp MemberDAO.java

package com.teamvietdev.dao;

import com.teamvietdev.model.Member;

/**
 *
 * @author TVD
 */
public interface MemberDAO {

    // login
    public Member login(String uname, String passwd);

}

Lớp MemberDAOImpl.java

package com.teamvietdev.dao;

import com.teamvietdev.model.Member;
import com.teamvietdev.util.HibernateUtil;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.stereotype.Repository;

/**
 *
 * @author TVD
 */
@Repository
public class MemberDAOImpl implements MemberDAO {

    @Override
    public Member login(String uname, String passwd) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction transaction = null;
        try {
            transaction = session.beginTransaction();
            Query query = session.createQuery("FROM member WHERE memberLogin = :uname AND memberPass = :passwd");
            query.setString("uname", uname);
            query.setString("passwd", passwd);
            Member obj = (Member) query.uniqueResult();
            transaction.commit();
            return obj;
        } catch (Exception ex) {
            if (transaction != null) {
                transaction.rollback();
            }
            ex.printStackTrace();
        } finally {
            session.flush();
            session.close();
        }
        return null;
    }

}

Lớp MemberService.java

package com.teamvietdev.service;

import com.teamvietdev.model.Member;

/**
 *
 * @author TVD
 */
public interface MemberService {

    // login
    public Member login(String uname, String passwd);

}

Lớp MemberServiceImpl.java

package com.teamvietdev.service;

import com.teamvietdev.dao.MemberDAO;
import com.teamvietdev.model.Member;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 *
 * @author TVD
 */
@Service
public class MemberServiceImpl implements MemberService {

    @Autowired
    private MemberDAO memberDAO;

    @Override
    public Member login(String uname, String passwd) {
        return memberDAO.login(uname, passwd);
    }

}

Bước 2: Thiết kế giao diện trang đăng nhập, mình sẽ thiết kế giao diện như sau

<form:form action="${pageContext.request.contextPath}/manages/login.html" 
       modelAttribute="member" method="POST">
    <p>Username:</p>
    <form:input path="memberLogin"/>
    <p>Password:</p>
    <form:password path="memberPass"/>
    <div class="forgot-top-grids">
        <div class="forgot">
            <a href="#">Forgot password?</a>
        </div>
        <div class="clearfix"> </div>
    </div>
    <input type="submit" name="Sign In" value="Login">	
</form:form>

Mẫu giao diện trang đăng nhập:

Web bán hàng bằng Spring MVC - Đăng nhập hệ thống

Bước 3: Xử lý phần đăng nhập trong Spring MVC, tạo lớp ControllerManages.java viết phương thức kiểm tra thông tin tài khoản đăng nhập có trong cơ sở dữ liệu hay không, nếu tồn tại thì chuyển tới giao diện chính quản trị.

@RequestMapping(value = "login.html", method = RequestMethod.GET)
public String viewLogin(ModelMap mm) {
     mm.put("member", new Member());
     return "manages/login";
}

@RequestMapping(value = "login.html", method = RequestMethod.POST)
public String doLogin(ModelMap mm, HttpSession session, @ModelAttribute("member") Member member) {
      System.out.println(member.getMemberLogin() + " - " + member.getMemberPass());
      Member mb = memberService.login(member.getMemberLogin(), member.getMemberPass());
      if (mb ==  null) {
           mm.put("member", new Member());
           mm.put("msg", "The username or password is incorrect!");
           return "manages/login";
      }
      session.setAttribute("myLogin", mb);
      return "redirect:home.html";
}

Bạn nhớ kiểm tra xem người dùng đã đăng nhập hay chưa khi truy cập URL, nếu session bằng null thì chuyển đến trang yêu cầu đăng nhập.

Member mb = (Member) session.getAttribute("myLogin");
if (mb == null) {
       return "redirect:login.html";
}

Cấu trúc bố trí tập tin và thư mục:

Web bán hàng bằng Spring MVC - Đăng nhập hệ thống

Tải mã nguồn tại đây:

Link 1

Lời kết: Trong thời gian tới Team Việt Dev sẽ tiếp tục chia sẻ thêm nhiều bài viết trong loạt bài hướng dẫn xây dựng web bán hàng bằng Spring MVC… miễn phí đến bạn đọc, các bạn nhớ theo dõi kênh để có được những chia sẻ mới nhất.

(Tác giả: Team Việt Dev)

Bình luận