Thứ Hai, 21 tháng 7, 2014

View Product Detail

Đầu tiên ta tạo một project với tên View Product Detail và sử dụng JavaServer Faces framework.

Đầu tiên ta tạo một lớp để kết nối đến cơ sở dữ liệu với tên là DataAccess và đặt nó trong package vpd.connection

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package vpd.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Nguyen Minh An
 */
public class DataAccess {
    
    public static Connection getConnection() throws SQLException {
        String url = "jdbc:sqlserver://localhost:1433;databaseName=VIEW_PRODUCT_DETAIL";
        String username = "LUCKY";
        String password = "123456";

        try {
            Connection conn = null;
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            conn = DriverManager.getConnection(url, username, password);
            return conn;
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(DataAccess.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}

Tiếp đó là lớp để sử lý nghiệp vụ với tên là ProductManagement.java:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package vpd.bussiness;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import vpd.db.DataAccess;
import vpd.entity.Product;

/**
 *
 * @author Nguyen Minh An
 */
public class ProductManagement {

    public List<Product> getAllProduct() {
        List<Product> list = new ArrayList<>();
        try {
            Connection conn = DataAccess.getConnection();
            PreparedStatement ps = conn.prepareCall("SELECT * FROM PRODUCT");
            ResultSet res = ps.executeQuery();
            while (res.next()) {
                int id = res.getInt("id");
                String name = res.getString("name");
                String price = res.getString("price");

                Product p = new Product(id, name, price);
                list.add(p);
            }
            return list;
        } catch (SQLException ex) {
            Logger.getLogger(ProductManagement.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

    public List<Product> getProductDetailByName(String name) {
        List<Product> list = new ArrayList<>();
        try {
            Connection conn = DataAccess.getConnection();
            PreparedStatement ps = conn.prepareCall("SELECT * FROM PRODUCT WHERE name like '" + name + "'");
            ResultSet res = ps.executeQuery();
            while (res.next()) {
                int id = res.getInt("id");
                String names = res.getString("name");
                String price = res.getString("price");

                Product p = new Product(id, names, price);
                list.add(p);
            }
            return list;
        } catch (SQLException ex) {
            Logger.getLogger(ProductManagement.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

}

Và một lớp để Product để đóng tạo ra đối tượng Product.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package vpd.entity;

/**
 *
 * @author Nguyen Minh An
 */
public class Product {
    private int id;
    private String name;
    private String price;

    public Product(int id, String name, String price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }
    
}

Tiếp đó ta tạo một lớp JSF Managed Bean như dưới:


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package vpd.managed.bean;

import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import vpd.bussiness.ProductManagement;
import vpd.entity.Product;

/**
 *
 * @author Nguyen Minh An
 */
@ManagedBean
@RequestScoped
public class GetAllProduct {

    private int id;
    private String name;
    private String price;

    private List<Product> allProduct = new ProductManagement().getAllProduct();

    public GetAllProduct() {
    }

    public List<Product> getAllProduct() {
        return allProduct;
    }

    public List<Product> getProductDetailByName() {
        allProduct = new ProductManagement().getProductDetailByName(name);
        return allProduct;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    
    
}

Tiếp tới ta tạo 2 trang jsf với tên lần lượt là: index.xhtml và result.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:outputText value="Danh sách sản phẩm:"/>
        <h:dataTable value="#{getAllProduct.allProduct}" var="l">
            <h:column>
                <f:facet name="header">
                    <h:outputText value=""/>
                </f:facet>
                <h:link outcome="result.xhtml" value="#{l.name}" includeViewParams="true">
                    <f:param name="name" value="#{l.name}"/>
                </h:link>
            </h:column>
        </h:dataTable>
    </h:body>
</html>

Trang result.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:f="http://xmlns.jcp.org/jsf/core">
    <f:metadata>
        <f:viewParam name="name" value="#{getAllProduct.name}"/>
    </f:metadata>
    <h:head>

        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:outputText value="#{getAllProduct.name}"/>
        <h:dataTable value="#{getAllProduct.productDetailByName}" var="product" style="border: 1px solid blue">
            <h:column>
                Id: <h:outputText value="#{product.id}" style="border: 1px solid blue"/><br></br>
                Name: <h:outputText value="#{product.name}" style="border: 1px solid blue"/><br></br>
                Price: <h:outputText value="#{product.price}" style="border: 1px solid blue"/><br></br>
            </h:column>
        </h:dataTable>
    </h:body>
</html>




Không có nhận xét nào:

Đăng nhận xét