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"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Login</title>
</head>
<body>
   <form action="loginaction" method="post">
      User:<br/><input type="text" name="user"/><br/>
      Password:<br/><input type="password" name="password"/><br/>
      <input type="submit" value="Login"/>		
   </form>
</body>
</html>

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" %>
<html>
<head>
<title>Dang nhap thanh cong</title>
</head>
<body>
   Hello World, <s:property value="name"/>
</body>
</html>

error.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Ten dang nhap hoac mat khau khong hop le</title>
</head>
<body>
   Sai ten dang nhap hoac mat khau.
</body>
</html>

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:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <constant name="struts.devMode" value="true" />
   <package name="helloworld" extends="struts-default">
   
      <action name="loginaction" 
         class="com.vietjack.struts2.LoginAction"
         method="execute">
         <result name="success">/success.jsp</result>
         <result name="error">/error.jsp</result>
      </action>
   
   </package>

</struts>

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

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://java.sun.com/xml/ns/javaee" 
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id="WebApp_ID" version="3.0">
   
   <display-name>Struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

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