Truy cập Database trong Struts 2



Chương này chúng ta cùng tìm hiểu cách truy cập một Database bởi sử dụng Struts 2 theo các bước đơn giản.

Bước đầu tiên, bạn thiết lập Database. Chúng tôi sử dụng MySQL trong ví dụ và tạo một Cơ sở dữ liệu mới có tên struts_vietjack, có username mặc định là root và mật khẩu là root123. Tạo một bảng là login và cung cấp cho nó một số giá trị. Dưới đây là code.

CREATE TABLE `struts_vietjack`.`login` (
   `user` VARCHAR( 10 ) NOT NULL ,
   `password` VARCHAR( 10 ) NOT NULL ,
   `name` VARCHAR( 20 ) NOT NULL ,
   PRIMARY KEY ( `user` )
) ENGINE = InnoDB;INSERT INTO `struts_vietjack`.`login` (`user`, `password`, `name`)
 VALUES ('scott', 'navy', 'Scott Burgemott');

Tiếp theo, bạn tải MySQL Connector jar file và đặt file này trong WEB-INF\lib folder. Sau đó chúng ta sẽ tạo action class.

Tạo Action trong Struts 2

Lớp action này có các thuộc tính tương ứng với các cột trong bảng dữ liệu của Database. Đó là user, password và name. Trong phương thức, chúng ta sử dụng các tham số user và password để kiểm tra xem người dùng tồn tại hay không, nếu có, chúng ta hiển thị tên người dùng trong bước tiếp theo. Nếu người dùng nhập sai thông tin, chúng ta gửi lại cho họ màn hình đăng nhập. Dưới đây là nội dung của LoginAction.java file:

package com.vietjack.struts2;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {   private String user;
   private String password;
   private String name;   public String execute() {
      String ret = ERROR;
      Connection conn = null;      try {
         String URL = "jdbc:mysql://localhost/struts_vietjack";
         Class.forName("com.mysql.jdbc.Driver");
         conn = DriverManager.getConnection(URL, "root", "root123");
         String sql = "SELECT name FROM login WHERE";
         sql+=" user = ? AND password = ?";
         PreparedStatement ps = conn.prepareStatement(sql);
         ps.setString(1, user);
         ps.setString(2, password);
         ResultSet rs = ps.executeQuery();         while (rs.next()) {
            name = rs.getString(1);
            ret = SUCCESS;
         }
      } catch (Exception e) {
         ret = ERROR;
      } finally {
         if (conn != null) {
            try {
               conn.close();
            } catch (Exception e) {
            }
         }
      }
      return ret;
   }   public String getUser() {
      return user;
   }   public void setUser(String user) {
      this.user = user;
   }   public String getPassword() {
      return password;
   }   public void setPassword(String password) {
      this.password = password;
   }   public String getName() {
      return name;
   }   public void setName(String name) {
      this.name = name;
   }
}

Tạo index.jsp

JSP file này để thu thập usernamepassword, mà sẽ được kiểm tra đối chiếu với Database.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>



Login


   
User:

Password:

Tạo các thành phần view

Bây giờ bạn tạo success.jsp mà được triệu hồi khi action trả về SUCCESS và error.jsp trong trường hợp trả về ERROR.

success.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>


Dang nhap thanh cong


   Hello World, 


error.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>


Ten dang nhap hoac mat khau khong hop le


   Sai ten dang nhap hoac mat khau.


Các configuration file

Cuối cùng, bạn đặt tất cả mọi thứ cùng nhau bởi sử dụng struts.xml, như sau:



   
   
   
      
         /success.jsp
         /error.jsp
      
   
   

Còn đây là nội dung của web.xml file:



   
   Struts 2
   
      index.jsp
   
   
      struts2
      
         org.apache.struts2.dispatcher.FilterDispatcher
      
      
      struts2
      /*
   

Sau đó, bạn chạy ứng dụng và kiểm tra.