Thứ Ba, 17 tháng 6, 2014

Working with JDBC and SQL

Chúng ta sẽ thử xây dưng 1 trang web có Login và xem thông tin lấy từ database

Yêu cầu :
Các bạn cần tải jdbc và có SQL Server(ở đây t dùng bản SQL Server 2008 )

Sau khi chúng ta lập 1 project như bình thường , add thêm sqljdbd4 vào project.

Sau đây là code trang index.html. Đây là 1 form đăng nhập. Tôi có sử dụng Css để cho giao diện đẹp hơn nhưng bạn không dùng cũng không sao.
Tiếp theo ta tạo một trang class checkAccount để check username và password khi đăng nhập.
Cần chú ý nhập đúng đường link database , tài khoản SQL Server , một số phương thức với SQL và thêm try catch để bắt lỗi


Tiếp theo là Servlet class Login để truyền username và password.



Giờ chúng ta sẽ lấy dữ liệu từ database để hiện thị cho người dùng.Chúng ta tạo Servlet class ViewAllPost.

Đây là thành quả sau khi Debug.


Vậy là các bạn có thể sử dụng database để có một kho dữ liệu động và không bị giới hạn về số lượng .
Ta có thể thấy việc kết nối dữ liệu từ database là không hề phức tạp , chỉ cần gõ đúng phương thức , tên nếu không sẽ rất khó xác định lỗi .
Kết nối trực tiếp từ database tuy không nhanh và khá nặng so với mockdata ở bài trước nhưng sẽ đem lại sự chính xác , ổn định và hiệu quả cao hơn.
Các bạn có thể tham khảo Demo của tôi tại đây

Thứ Bảy, 14 tháng 6, 2014

Servlet Context

Giới thiệu:

- Servlet Context dùng để duy trì trạng thái cho ứng dụng web được tạo ra bởi các đối tượng container và sử dụng thông tin từ class web.xml,giúp ta chia sẻ dữ liệu được tạo ra bởi các contanier, dùng trên 1 máy ảo java, có phương thức log() giúp ta ghi nhật kí vào file log của server.
-Một số phương thức quan trọng của ServletContext  + getAttribute(String name) : trả về các thuộc tính với tên được chỉ định, hoặc null nếu không có thuộc tính bằng tên đó.  +getInitParameter(String name): trả về giá trị tham số với tên đước chỉ định, hoặc null nếu tên không tồn tại  +Enumeration getInitParameterNames(): trả về tên của tham số khởi tạo của bối cảnh như một Enumeration  +setAttribute(String name,Object obj): thiết lập một đối tượng với tên thuộc tính được đưa ra trong phạm vi  áp dụng  +removeAttribute(String name): loại bỏ các thuộc tính với tên được chỉ định.

-Ưu điểm của Servlet context
 +Cung cấp thông tin liên lạc giữa các servlet
 +Có sẵn cho bất kỳ servlet và JSP là một phần của ứng dụng web
 +Sử dụng để có được thông tin cấu hình web.xml

Demo

Sau đây t sẽ hướng dẫn các bạn làm Demo về Servlet Context như sau:
Bước 1 : Tạo 1 web application và 2 servlet lần lượt là WebPage1 và WebPage2 theo hướng dẫn tại đây và tại đây.
Bước 2: Xử lí code trong WebPage1 và WebPage 2 như sau :

 Bước 3: Click chuột phải vào Servlet class : WebPage1 chọn RunFile=>OK ta được như sau:

Khi ta refresh trình duyệt 1 lần thì con số sẽ nhảy thêm 1 đơn vị , điều này cũng được tiếp tục khi ta chạy page 2 con số vẫn tiếp tục đếm tiếp :
Các bạn có thể tải Demo của tôi tại đây.Cảm ơn



Session

Khái niệm:

Session  được dùng để lưu thông tin của người dùng trong một phiên đăng nhập, Sesssion có giá trị từ lúc khởi tạo cho đến lúc nó được expire hoặc cho đến lúc trình duyệt đóng, phiên làm việc kết thúc. Lúc đó session sẽ không còn khả năng retain nữa.

 Các kỹ thuật  xử lý Session:

-Có khá nhiều kỹ thuật xử lý session trong Servlet và có một số cách như sau:


*Url Rewritting

- Mỗi một yêu cầu mà client gửi đến thông qua url thì chúng ta có thể thêm một tham số định danh session cùng với mỗi yêu cầu và phản hồi để theo dõi phiên làm việc (session). Điều này rất quan trọng  vì chúng ta cần phải theo dõi các thông số này trong mọi phản hồi và chắc chắn rằng nó không xung đột với các thông số khác.

*Persistent Cookies

- Cookie là các mảnh nhỏ lưu thông tin ở trong trình duyệt bên phía client, nó được gửi tới máy chủ. Lúc đó server sẽ nhận ra client qua các thông tin của cookie.Cách này cũng khá thông dụng.


*Hidden Form Variables

- Chúng ta có thể dùng các thẻ ẩn mà người dùng không nhìn thấy nhưng chúng vẫn là các thẻ nằm trong form để gửi lên server.

*Servlet API

- Được xây dựng trên phương pháp theo dõi phiên.

Sau đây tôi sẽ hướng dẫn các bạn làm 1 Demo về Session.
Bước 1 : Các bạn tạo 1 Web Application.Các bạn tham khảo cách tạo tại đây. Rồi sau đó tạo class User và các Servlet như sau.


Các bạn có thể tham khảo cách tạo Servlet class ở đây.

Bước 2: Code các class như các ảnh sau:
Code trong index.html

Code trong class User.

Code trong class DataSource

Code trong Servlet: HomeServlet.

Code trong LoginServlet.
 Sau khi xử lí code. Tôi chạy ứng dụng và được như sau:
Giao diện Form Login.

Khi bạn đăng nhập sai sẽ báo lỗi như trên.

Hình ảnh sau khi bạn dăng nhập đúng.

Sửa link như trên hình ta thấy Session vẫn hoạt động.
Qua bài Demo trên các bạn có thể hiểu thêm về Session. Theo tôi nghĩ thì Session khá phổ biến trong lập trình vì nó Giúp server không phải nhận quá nhiều và người dùng cũng không phải nhập nhiều .
Các bạn có thể tải Demo của tôi tại đây. Cảm ơn.




Thứ Sáu, 13 tháng 6, 2014

Dispatcher In Servlet

Ngày nay việc phát triển các ứng dụng web là một việc mà người lập trình viên cần phải phân phối các yêu cầu xử lý và tạo phản ứng cho nhiều đối tượng Servlet. Điều này được thể hiện rõ hơn với cách sử dụng phương pháp "Request Dispatcher". Phương pháp "Request Dispatcher" được thực hiện bởi servlet container để gửi đi hoặc để vượt qua các yêu cầu một nguồn tài nguyên web như Servlet, trang HTML hoặc trang JSP. Để gửi yêu cầu từ Servlet hoặc JSP để nguồn tài nguyên web sử dụng RequestDispatcher chúng ta cần phải thực hiện các bước sau: 
  1. Có đối tượng để tham chiếu với phương pháp Request Dispatcher
  2. Sử dụng phương thức include(), forwards() và phương pháp Request Dispatcher.
Sau đây chúng ta sẽ tìm hiểu về các phương thức include() và forwards().- phương thức include() :có thể hiểu method này cho phép bao gồm nội dung của tài nguyên (servlet , JSP, file HTML) vào trong response và gửi lên máy chủ xử lý.
include() method.

- phương thức forward(): phương thức chuyển tiếp này làm cho người ta cảm thấy mọi thứ được xử lí đúng đắn và nhanh chóng hơn vì nó chuyển tiếp yêu cầu của người dùng tới server xử lí. Hoàn toàn không giống với phương thức include() là chuyển nội dung lên server xử lí.
forward() method.
Sau đây tôi sẽ làm bài Demo  Dispatcher in Servlet về việc trả lời các câu hỏi dựa trên các dữ liệu có sẵn dùng Mock data như bài trước. Cơ bản có thể hiểu như sau :


Bước 1 :  Các bạn hãy tạo một Web Application như hướng dẫn ở đây.
Bước 2  Tạo các Servlet có tên Banner,Response và GateKeeper và 1 file JSP có tên là View. Cách tạo các file Servlet các bạn có thể tham khảo tại đây . Còn dưới đây là các bước tạo 1 file JSP.
Chuột phải vào Foler WEB-INF chọn New=>Other.

Click vào Web=>JSP đặt tên rồi Finish.
Bước 3: Sau đây là code trong các class.





Hình ảnh sau khi Demo.

Khi bạn chọn đúng.

Khí bạn chọn sai.
Các bạn có thể tham khảo Demo tại đây.
Theo ý kiến cá nhân tôi thì sau khi làm bài Demo này chúng ta sẽ hiểu thêm về Dispatcher trong Servlet. Cảm nhận của tôi thì code khá rành mạch và dễ hiểu sử dụng phương thức forward() thì chúng ta có thể gửi request từ các servlet khác nhau cho nhau và dữ liệu gửi đi chính xác và nhanh chóng.Còn phương thức include() giúp chúng ta thêm thông tin từ các servlet khác nhau cho nhau. Hi vọng bài viết này sẽ có thể giúp đỡ các bạn. Cảm ơn.


Thứ Năm, 12 tháng 6, 2014

Demo View All Post sử dụng Mock Data

Giới thiệu

Có thể hiểu Mock Data như là một công cụ, tạo ra dữ liệu để định dạng trong bộ nhớ như tên người, email, ,số điện thoại, tên địa chỉ ...v..v.. Nó cho phép ta tạo ra  một lượng lớn dữ liệu dùng để test ứng dụng. Do vậy ta có thể dùng Mock Data để thay thế dữ liệu trong Database khi test ứng dụng .Nó còn có thể:
- View ra các dữ liệu.
- Có thể thêm vào các style, chỉnh sửa giao diện của view.
- Thêm , chèn các cột các bảng, các thẻ, và chỉnh sửa nó .....

Ưu điểm:

- Dễ sử dụng và quản lí.
- Ít lỗi.

Nhược điểm:

- Khó trong khâu thiết kế.

Sau đây tôi sẽ hướng dẫn các bạn làm Demo về Mock Data.

Bước 1: Tạo mới Project vào New Project => Java Web => Wep Application.

Bước 2:  Điền đầy đủ thông tin Project Name và Location.

Bước 3: Chọn Server rồi click Finish.
Bước 4: Các bạn có thể code class index.html như tôi.

Bước 5: Đây là code class Post.

Bước 6: Đây là code trong Servlet class ViewAllPost.


Đây là hình ảnh sau khi Demo.

Trong bài viết này tôi có sử dụng CSS để trang trí cho trang All Post của mình.Các bạn có thể tham khảo cách làm tại http://hieuntgc.blogspot.com/2014/06/phan-8-cach-thuc-lam-viec-cua-servlet.html
Qua bài Demo này tôi thấy mình hiểu rõ hơn và tác dụng của Mock Data và cách sử dụng nó. Tôi nghĩ nó sẽ có ích cho các bạn trong quá trình test ứng dụng.Cảm ơn đã đọc bài viết của tôi.

Link bài Demo Mock Data của tôi.

Thứ Tư, 11 tháng 6, 2014

Demo how to init servlet parameter

Bước 1: Vào Netbeans chọn New Project-> Java Web-> Web Application.

Bước 2: Điền đầy đủ Project Name và Project Location.

Bước 3: Chọn Server và click Finish.

Bước 4: Thay đổi Title và thêm thẻ a theo ý bạn ví dụ như hình trên.

Bước 5: Click chuột phải vào Source Packet chọn New-> Other.
Bước 6:  Chọn Web -> Servlet 

Bước 8: Chọn Add và New để thêm thông tin.

Bước 9 : Chuột phải chọn Insert Code.

Bước 10: Chọn Override Method.

Bước 11: Chọn init(ServleConfig config) như hình.

Bước 12:  Lấy giá trị như hình trên.

Bước 13: Viết code hiển thị thông tin như hình trên.

Hình ảnh sau khi Demo.