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:
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:
Tải mã nguồn tại đây:
Link 1Lờ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)