http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com Login Logout Struts Trước tạo ứng dụng login logout sử dụng Struts 2, bạn phải hiểu rõ khái niệm Aware Interface Struts Trong ví dụ đây, sử dụng SessionAware Interface để đặt thông tin phạm vi session lớp ServletActionContext để lấy thơng tin từ phạm vi session Ví dụ gồm ba link login, logout profile Người dùng cuối click vào profile page đăng nhập vào Sau đăng nhập, tới trang profile Nếu người dùng cuối click vào trang logout page truy cập profile page Giả sử bạn có bảng Oracle Database có tên USER3333 gồm ghi Truy vấn bảng sau: CREATE TABLE ( "USER3333" "ID" NUMBER, "NAME" VARCHAR2(4000), "PASSWORD" VARCHAR2(4000), "EMAIL" VARCHAR2(4000), CONSTRAINT "USER3333_PK" PRIMARY KEY ("ID") ENABLE ) Ví dụ tạo ứng dụng login logout sử dụng Struts Chúng ta tạo page sau: Tạo index.jsp JSP page tạo link cho login, logout profile login| logout| profile Định nghĩa action result struts.xml Xml file định nghĩa package action Mỗi action định nghĩa result page Với login logout action, sử dụng lớp action có phương thức khác struts.xml http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com login.jsp loginsuccess.jsp loginerror.jsp logoutsuccess.jsp profilesuccess.jsp profileerror.jsp Tạo lớp action cho login logout Lớp action triển khai SessionAware Interface ghi đè phương thức setSession để lưu trữ thông tin phạm vi session Để logout, gọi phương thức invalidate() SessionMap http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com Login.java package com.vietjack; import java.util.Map; import org.apache.struts2.dispatcher.SessionMap; import org.apache.struts2.interceptor.SessionAware; public class Login implements SessionAware{ private String username,userpass; SessionMap sessionmap; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUserpass() { return userpass; } public void setUserpass(String userpass) { this.userpass = userpass; } public String execute(){ if(LoginDao.validate(username, userpass)){ return "success"; } else{ http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com return "error"; } } public void setSession(Map map) { sessionmap=(SessionMap)map; sessionmap.put("login","true"); } public String logout(){ sessionmap.invalidate(); return "success"; } } Tạo lớp Dao để xác nhận người dùng Lớp validate người dùng từ bảng lưu trữ Oracle Database LoginDao.java package com.vietjack; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class LoginDao { public static boolean validate(String username,String userpass){ boolean status=false; try{ Class.forName("oracle.jdbc.driver.OracleDriver"); http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com Connection con=DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe","system","oracle"); PreparedStatement ps=con.prepareStatement( "select * from user3333 where name=? and password=?"); ps.setString(1,username); ps.setString(2,userpass); ResultSet rs=ps.executeQuery(); status=rs.next(); }catch(Exception e){e.printStackTrace();} return status; } } Tạo lớp Profile Lớp lấy thông tin từ phạm vi session, có thơng tin tìm thấy phạm vi session với tên đăng nhập, trả success, không trả false Profile.java package com.vietjack; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; public class Profile { public String execute(){ HttpServletRequest request=ServletActionContext.getRequest(); HttpSession session=request.getSession(); http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com String s=(String)session.getAttribute("login"); if(s!=null && !s.equals("")){ return "success"; } else{ return "error"; } } } Tạo thành phần view Có nhiều thành phần view, là: Thành phần view cho login login.jsp: thành phần tạo login form loginsuccess.jsp: thành phần tạo thông điệp welcome tới người dùng Welcome, loginerror.jsp: thành phần hiển thị thông điệp lỗi http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com Xin loi, xay loi voi username hoac password ban nhap vao!! Thành phần view cho logout logoutsuccess.jsp: thành phần tạo thông điệp đăng xuất thành công Ban da dang xuat cong! Thành phần view cho profile profilesuccess.jsp: thành phần tạo thông điệp Chao mung ban den voi profile Chao mung ban den voi profile profileerror.jsp: thành phần tạo thông điệp Vui long dang nhap de thay profile kèm theo trang login.jsp Vui long dang nhap de thay profile http://vietjack.com/ Trang chia sẻ học online miễn phí Page ... http://vietjack.com /struts_ 2/ index.jsp Copyright © vietjack.com Login. java package com.vietjack; import java.util.Map; import org.apache .struts2 .dispatcher.SessionMap; import org.apache .struts2 .interceptor.SessionAware;... "http:/ /struts. apache.org/dtds /struts- 2. 1.dtd"> login. jsp ... name="success" >loginsuccess.jsp loginerror.jsp logoutsuccess.jsp