Thứ Hai, 14 tháng 7, 2014

JSP Model 1

Trong những phiên bản đầu tiên của JSP thì Sun Micro System có đưa ra 2 mô hình khuyến cáo.

Mô hình 1 : (Hay còn được gọi là mô hình truyền thống)

Trang JSP sẽ xử lý toàn bộ tất cả các công việc bao gồm nhận thông tin từ người dùng, Validate dữ liệu và phản hồi thông tin sau đó hiển thị kết quả phản hồi. Nếu như trang jsp cần tới dữ liệu thì nó sẽ được lấy thông qua những Java Beans.




Ưu điểm của mô hình này :
- Đơn giản về mặt kiến trúc.
- Dễ dàng trong việc phát triển những ứng dụng nhỏ, không phức tạp.

Nhược điểm:
- Khả năng mở rộng dự án thấp.
- Khả năng tái sử dụng code thấp.
- Không phù hợp khi phát triển trên những dự án lớn, phức tạp.

Module 1:

Tạo một database như hình dưới:


CREATE DATABASE ORDER_PRODUCT
GO
USE ORDER_PRODUCT
GO
CREATE TABLE PRODUCT(
pId int primary key identity,
pName nvarchar(200),
pType nvarchar(200),
pPrice varchar(100)
)
INSERT INTO PRODUCT VALUES ('Z10','SONY','20000')
INSERT INTO PRODUCT VALUES ('X3','NOKIA','30000')
INSERT INTO PRODUCT VALUES ('D8','APPLE','70000')
INSERT INTO PRODUCT VALUES ('Y10','SAMSUNG','50000')


Trong NetBeans ta tạo mới một project và tạo ra 2 trang jsp với tên là Order.jsp và index.jsp.

Tiếp theo tạo một lớp java thường với tên Product và đặt nó trong package awasj.entity sau đó ta viết vào như dưới.



package awajs.demo.data;

/**
 *
 * @author MinhAn
 */
public class Product {
    private int id;
    private String name;
    private String type;
    private int 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 getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public int getPrice() {
        return price;
    }

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

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

Tiếp theo ta tạo một lớp và đặt tên nó là ConnectionUtil đặt nó trong package awasj.dataaccess trong đây ta sẽ chứa kết nối và các phương thức cho việc truy cập dữ liệu.


package awajs.demo.conn;

import awajs.demo.data.Product;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Minhan
 */
public class ConnectionUtil {
    public static Connection conn;
    public ConnectionUtil(){
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            
            String url = "jdbc:sqlserver://localhost:1433;databaseName=ORDER_PRODUCT";
            String user = "sa";
            String pw = "123456";
            conn = DriverManager.getConnection(url, user, pw);
        } catch (Exception ex) {
            Logger.getLogger(ConnectionUtil.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public List<Product> getAllProduct(){
        try {
            String sql = "select * from PRODUCT";
            PreparedStatement ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            List<Product> listOfProduct = new LinkedList<Product>();
            while(rs.next()){
                listOfProduct.add(new Product(rs.getInt("pId"), rs.getString("mName"), rs.getString("pType"), rs.getInt("pPrice")));
            }
            return listOfProduct;
            
            
        } catch (Exception ex) {
            Logger.getLogger(ConnectionUtil.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
        
    }
    public Product getProductById(int id){
        try {
            String sql = "Select * from tblproduct where pId=?";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1,id);
            ResultSet rs = ps.executeQuery();
            Product p = new Product();
            while(rs.next()){
                p.setId(rs.getInt("pId"));
                p.setName(rs.getString("pName"));
                p.setType(rs.getString("pType"));
                p.setPrice(rs.getInt("pPrice"));
            }
            return p;
            
        } catch (Exception ex) {
            Logger.getLogger(ConnectionUtil.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}

Tiếp đó ta tạo một lớp với tên OrderBean và đặt nó trong Package awasj.bean . Ta viết các phương thức cũng như khai báo các biến như sau:


package awajs.demo.model;

import awajs.demo.data.Product;
import java.util.LinkedList;
import java.util.List;


public class OrderBean {

    private List<Product> listOfProduct = new LinkedList<Product>();

    public void setProduct(Product p) {
        listOfProduct.add(p);
    }

    public List<String> getProducts() {
        List<String> name = new LinkedList<String>();
        for (Product p : listOfProduct) {
            name.add(p.getName());
        }
        return name;
    }

    public int getTotalPrice() {
        int price = 0;
        int totalprice = 0;
        for (Product p : listOfProduct) {
            price = p.getPrice();
            if (price >= 40000) {
                price = price - price * 10 / 100;
            }
            totalprice = totalprice + price;
        }
        return totalprice;
    }
}

Kế tiếp ta tạo một lớp ProductBean và viết một phương thức ở trong lớp này như dưới:


package awajs.demo.model;

import awajs.demo.conn.ConnectionUtil;
import awajs.demo.data.Product;
import java.util.List;

/**
 *
 * @author Minhan
 */
public class productBean {
    public List<Product> getAllProduct(){
        ConnectionUtil cu = new ConnectionUtil();
        return cu.getAllProduct();    
    }
}

Ở trang Order.jsp ta viết vào như dưới:


<h1>Product List</h1>
       <%
           int id = Integer.parseInt(request.getParameter("id"));
           ConnectionUtil conn = new ConnectionUtil();
           Product p = conn.getProductById(id);
       %>
       <jsp:useBean class="awajs.demo.model.OrderBean" id="order" scope="session"/>
       <jsp:setProperty name="order" property="product" value="<%=p%>"/>
       <p>Your Products<jsp:getProperty name="order" property="products"></jsp:getProperty></p>
        <p>ToTal : <jsp:getProperty name="order" property="totalPrice"></jsp:getProperty> </p>
       <a href="index.jsp">Continue</a>

Và ở trang index.jsp.


<jsp:useBean class="awajs.demo.model.productBean" id="finder"/>
        <table>
            <tr>
                <th>ID</th>
                <th>Product Name</th>
                <th>Product Type</th>
                <th>Price</th>
                <th>Buy</th>
            </tr>
            <c:forEach items="${finder.allProduct}" var="product">
                <tr>
                    <td><c:out value="${product.id}"/></td>
                    <td><c:out value="${product.name}"/></td>
                    <td><c:out value="${product.type}"/></td>                   
                    <td><c:out value="${product.price}"/></td>                  
                    <td><a href="Order.jsp?id=${product.id}">Add</a></td>
                </tr>

            </c:forEach>
        </table>
Các bạn có thể tải bản DEMO ở đây

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

Đăng nhận xét