Chủ Nhật, 14 tháng 9, 2014

JavaBeans

JavaBeans là gì?

- JavaBeans là một components Java được tái sử dụng ở nhiều nơi khác nhau.
- Một JavaBeans là một components Java bao gói lại tất cả các behavior(method) hoặc các state để hiện thị ra bên ngoài một số tính năng nhất định.


Software Component Model

JavaBeans là một thành phần quan trọng. Nó quan trọng ở tính bao gói dữ liệu và function của một đối tượng nào đó. Nó cung cấp những nghiệp vụ cụ thể. Nó được thiết kế cho một đối tượng nghiệp vụ nhất định và đối tượng đó lại được sử dụng ở nhiều nơi khác nhau trong một ứng dụng phần mềm.

Cấu trúc JavaBeans

- JavaBeans nằm trong một package.
- Constructor của nó không có tham số đầu vào.
- Mọi thuộc tính hiển thị ra bên ngoài bằng phương thức get & set.


Phạm vi của JavaBeans

- Là một đối tượng được lưu trữ trong một trang JSP hoặc lưu trữ trong một vòng đời Request - Response hoặc trong Session cũng như Application.
- Chúng ta có thể dùng các tiêu chuẩn trong JSP để truy cập vào nó.
- JavaBeans chứa bốn scopes, như:
  + Page
  + Request
  + Session
  + Application

Chúng ta hãy xem ví dụ dưới đây để hiểu thêm về JavaBeans.
Ví dụ này chúng ta sẽ làm một ứng dụng giỏ hàng. Mỗi khi chúng ta click một sản phẩm chúng ta muốn mua giỏ hàng sẽ lưu lại thông tin sản phẩm đó.
- Đầu tiên tạo một trang HTML như sau:
Ở đây mỗi khi click vào một liên kết nó sẽ dẫn sang trang add.jsp.
- Tiếp theo chúng ta tạo ra một JavaBeans.
Chúng ta có một List products. Ở đây phương thức set sẽ là add product vào List products. Còn phương thức get vẫn là lấy ra List đó.
Tiếp theo hãy tạo ra trang add.jsp
- Ở đoạn useBean chúng ta gọi đúng tên package và tên JavaBeans vào trong class. Tiếp đó đặt id cho nó và vì chúng ta dùng session nên scope sẽ đặt là session.
- Tiếp theo hãy nhìn vào đoạn setProperty. Chúng ta đặt name của nó là cart. Property sẽ là product (vì chúng ta đang gọi phương thức setProduct trong JavaBeans).
- Đoạn getProperty tương tự (đoạn này chúng ta gọi phương thức getProducts trong JavaBeans).
- Cuối cùng tạo một link để quay về trang index.html sau khi chúng ta chọn xong sản phẩm và chạy thử sản phẩm chúng ta vừa làm.

Implicit Object in JSP

JSP Implicit Object là các Java Object được JSP cung cấp sẵn cho các developer trong từng trang và các developer có thể gọi trực tiếp mà không cần phải tuyên bố một cách rõ ràng. JSP Implicit Object còn được gọi là các biến được xác định trước.

Ví dụ: Save username and password in web browser.
- Tạo 1 trang HTML như hình dưới:
- Tạo trang JSP như hình dưới:
Chúng ta thấy một đoạn code được chèn bên trong 2 dấu <% và %>, đây chính là một scriptlets. Bên trong chính là code để lấy parameter username và password rồi add vào session.
- Cuối cùng tạo trang Home Page JSP.
Trang này chỉ đơn giản gọi 2 session username và password sau đó cho hiển thị chúng.
Chúng ta có thể nhận thấy sự khác biệt của bài này chính là chúng ta có thể code thẳng trong trang JSP chứ không phải qua Servlet.

Thứ Năm, 11 tháng 9, 2014

JDBM

JDBC là gì?

JDBC là viết tắt của "Java DataBase Connectivity". JDBC là một chuẩn truy xuất cơ sở dữ liệu rất phổ biến. Nó là một API (Application Programming Interface) có chứa một tập hợp các lớp, các giao diện Java và các thông báo lỗi ngoại lệ nằm trong cùng một đặc tả mà theo đó các công ty sản xuất JDBC driver cũng như các nhà phát triển JDBC phải tuân thủ chặt chẽ.


Tác dụng của JDBC

JDBC giúp các nhà phát triển Java tạo các ứng dụng truy suất cơ sở dữ liệu. JDBC giúp phát triển các ứng dụng truy suất cơ sở dữ liệu có khả năng truy cập đến các RDBMS khác nhau bằng cách sử dụng các JDBC driver khác nhau.

Các lớp JDBC

1. DriverManager - Nạp các JDBC driver vào bộ nhớ. Sử dụng nó để kết nối tới một nguồn dữ liệu.
2. Connection - Dùng để tạo ra các đối tượng Statement, PreparedStatement và CallableStatement.
3. Statement - Thực thi lệnh SQL tĩnh, thu về đối tượng ResultSet.
4. PreparedStatement - Hoạt động tốt hơn Statement. Thực thi câu lệnh SQL được biên dịch trước.
5. CallableStatement - biểu diễn một thủ tục được lưu trữ, thực thi các thủ tục được lưu trữ trong một RDBMS có hỗ trợ chúng.
6. ResultSet - biểu diễn một tập kết quả trong cơ sở dữ liệu tạo ra bởi việc sử dụng một câu lệnh SQL.
7. SQLException - một lớp xử lý lỗi ngoại lệ chứa các lỗi truy cập cơ sở dữ liệu.

Chúng ta hãy làm một ví dụ cụ thể để hiểu thêm về JDBC. Ví dụ này chúng ta làm một ứng dụng hiển thị tất cả các Post của người dùng được lưu trữ trong database khi người đó đăng nhập vào web.
- Tạo 1 trang HTML có chức năng nhập username và password để đăng nhập.
- Sau đó add JDBC vào ứng dụng.
- Tạo một class Comments với constructor và các phương thức get & set.
- Một class DataAccess để kết nối database, các hàm getSearchStatement và searchCommentByName.
- Hình trên là contructor để connect với SQL. Class.forName để cài đặt Driver SQLServer, url, user, pw là các thuộc tính để kết nối với SQLServer.
- Tiếp đó tạo hàm getSearchStatement để lấy Id, Name, Comment từ database của người dùng từ database bằng câu lệnh query, dùng phương thức PreparedStatement.
- Cuối cùng là hàm searchCommentByName trả về một List lstComments. Hàm này dùng để lấy tất cả các comment có Name chính là user người dùng nhập vào sau đó add chúng vào một List.
- Cuối cùng tạo ra một servlet để hiển thì tên người dùng và tất cả các post được lưu trữ trong database của người đó.
Chạy thử và cảm nhận ^^~


Thứ Ba, 9 tháng 9, 2014

Servlet Context

ServletContext là gì?

- ServletContext biểu diễn ứng dụng Web khi servlet sống. Chỉ có một ServletContext tương ứng với một ứng dụng.
- Muốn lấy đối tượng ServletContext chúng ta sử dụng phương thức getServletContext().

Dưới đây là một ví dụ nhỏ để chúng ta hiểu thêm về ServletContext.
- Các bạn tạo 2 trang Servlet đặt tên lần lượt là Page1 và Page2.
- Thêm đoạn code dưới đây vào cả 2 trang.
        Integer count = (Integer)getServletContext().getAttribute("count");
        if (count == null) {
            count = 0;
        }
        count++;
        getServletContext().setAttribute("count", count);
- Cho hiển thị count trên web.
- Chúng ta chạy cả 2 trang và sẽ thấy biến count được tăng dần mỗi khi truy cập vào bất kỳ trang nào trong 2 trang Page1 và Page2.
- Như vậy chúng ta có thể hiểu một cách đơn giản ServletContext dùng để share dữ liệu cho nhiều trang có nghĩa là mọi user đều dùng cùng 1 ServletContext.

Thứ Hai, 8 tháng 9, 2014

Session

Session là gì?

Session là một kết nối giữa client và server và nó có thể bao gồm nhiều request và response giữa client và server. Cách duy nhất để duy trì session là khi một thông tin duy nhất (session id) được truyền giữa client và server trong tất cả các request và response.

Để hiểu thêm về Session chúng ta hãy cùng nhau làm một ví dụ nhỏ.
- Bắt đầu với 1 trang HTML có chức năng nhập tên người dùng và mật khẩu để đăng nhập như hình dưới đây.
- Ở servlet LoginServlet tạo 2 biến username và password để getParameter username và password người dùng nhập vào.
- Tạo 1 session và gán giá trị username và pasword vào bằng lệnh setAttribute.
- Tạo 1 servlet khác tên HomeServlet. Ở đây chúng ta sẽ gọi ra session vừa gán username và password vào ở trên và cho hiển thị ra màn hình.

Request Dispatcher

RequestDispatcher

- RequestDispatcher là một lớp Java cực kỳ quan trọng cho phép "including" nội dung trong một request / response hoặc "forwarding" một request / response đến một tài nguyên. Một servlet có thể sử dụng một RequestDispatcher để include hoặc forward một request / response đến một JSP.

include() và forward()

- include() giúp chèn nội dung tĩnh hoặc động vào trong response từ một Web compoment.
- forward() cho phép một Web compoment xử lý một request từ client và gửi qua một Web compoment khác trước khi sinh ra response cho client.

Example

- Tạo một trang HTML hiển thị danh sách các câu hỏi và cho phép người dùng lựa chọn để biết đáp án từng câu hỏi.

 - Tạo một servlet tên là GateKeeper. Servlet này sẽ nhận request câu hỏi mà người dùng muốn hỏi, sau đó sẽ response về câu trả lời phù hợp.
- Trong servlet này chúng ta tạo một List<String> choose để chứa các lựa chọn câu hỏi. Sau đó Override init(config) và add các số vào List tương ứng với thứ tự câu hỏi có sẵn.
- Tiếp theo khai báo biến dapan, biến này sẽ request parameter là Choose.
Như ở hình bên dưới nếu lựa chọn của người dùng có chứa trong List choose thì RequestDispatcher sẽ chuyển đến servlet Response. Và ngược lại RequestDispatcher sẽ chuyển đến wronganswer.jsp.
- Servlet Response chỉ đơn giản đưa ra câu trả lời phù hợp với mỗi lựa chọn của người dùng.

Thứ Sáu, 5 tháng 9, 2014

Init param

- Init() là gì? Init() là một phương thức, nó được gọi trong constructor khi constructor được gọi để khởi tạo đối tượng. Init() chứa những câu lệnh được khởi tạo thành phần hay giá trị của các biến.
- Init() dùng để khởi động các thông tin config của servlet.
- Init() chính là phần cuối cùng trước khi servlet được đưa vào phục vụ.
- Các init param được lấy từ phương thức init của servlet.
- Nếu init có nhu cầu lấy thông tin config thì ta sẽ Override init(config).
- Cuối cùng lấy thông tin trong config bằng getInitParameter().