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().

Hello Java Web

Ở bài này chúng ta sẽ tạo một trang web đơn giản đầu tiên bằng ngôn ngữ Java sử dụng NetBeans.

Bước 1:
- Mở NetBeans => File => New Project(Ctrl + Shift + N)
- Cửa sổ New Project sẽ hiện ra. Chúng ta chọn Java Web bên bảng Categories và Web Application bên bảng Projects sau đó ấn Next.
- Chúng ta nhập tên Project và chọn thư mục muốn lưu ở các ô Project Name và Project Location sau đó tiếp tục nhấn Next.
- Tiếp tục chọn Server là Apche Tomcat và tiếp tục ấn Next và cuối cùng là Finish.
OK. Sau khi hoàn thành xong các bước trên bạn sẽ có những dòng code đầu tiên như sau.

Bước 2:
- Chúng ta sẽ bắt tay vào làm HTML và Servlet trong Java Web.
- Đầu tiên chúng ta hãy tạo một Servlet. Ở thư mục Source Packages bên tay trái bạn hãy click chuột phải vào và chọn New => Other.
- Tiếp theo hãy chọn Web bên bảng Categories và Servlet bên bảng File Types và ấn Next.
- Hãy nhập tên Servlet ở mục Class Name và chọn Package nếu muốn. Sau đó nhấn Next.
- Đánh dấu vào ô "Add information to deployment desciptor (web.xml)" và cuối cùng hãy ấn Finish để hoàn thành.
Vậy là chúng ta đã xong bước tạo một Servlet.

Bước 3:
- Quay trở lại trang index.html. Chúng ta sẽ thử làm một giao diện HTML có tính năng nhập và click tương tụ như hình ở dưới. Chú ý nhập chính xác tên Servlet trong <form action="Servlet">

Bây giờ bạn hãy chạy thử trang web. Nếu trang web hiển thị  "Servlet NewServlet at /WebApplication1" là bạn đã thành công rồi đấy :)

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

Flipped Learning

1. Flipped Learning là gì ?

Như chúng ta đã biết, các phương pháp học hiện nay là các giáo viên trên lớp sẽ thuyết trình, dạy lý thuyết, hướng dẫn cách làm bài tập, sinh viên sẽ về nhà ôn lại lý thuyết và làm các bài tập tương tự. Đây là phương pháp cổ điển mà hầu hết các trường học từ xưa đến nay vẫn áp dụng. Nhưng ngày nay đã xuất hiện một phương pháp học mới, phương pháp học đảo ngược(Flipped Learning). Với phương pháp này thì trên lớp bạn sẽ không còn ngồi nghe giáo viên dạy lý thuyết, giảng bài,..., những việc này bạn sẽ tự thực hiện khi ở nhà thông qua đọc sách, xem video hướng dẫn của giáo viên(nếu có), tìm kiếm các tài liệu trên mạng... Trên lớp bây giờ sẽ biến thành giờ thảo luận, thực hành cùng giáo viên, trao đổi hay yêu cầu sự trợ giúp từ giáo viên hay bạn bè những vấn đề còn khúc mắc mà chúng ta không hiểu khi tự học ở nhà.

2. Lợi thế và khó khăn của phương pháp Flipped Learing

- Lợi thế:  Chúng ta sẽ có nhiều thời gian để thực hành cùng giáo viên và bạn bè hơn, nhiều thời gian để thảo luận những vướng mắc mà chúng ta mắc phải với thầy cô và bạn bè. Giáo viên cũng sẽ có nhiều thời gian thực hành trực tiếp cùng sinh viên thay vì phải mất thời gian thuyết trình, giảng lý thuyết, những thứ này đã có rất nhiều qua sách, video, tài liệu trên mạng. Phương pháp này còn giúp chúng ta tăng khả năng tự học, tự tìm kiếm, việc này sẽ giúp chúng ta nhớ lâu hơn bởi vì những thứ ta tự tìm và học bao giờ cũng nhớ lâu hơn những gì người khác trực tiếp nói ra cho ta.

- Khó khăn: Khi mới bắt đầu chúng ta sẽ gặp rất nhiều khó khăn, vì kiến thức chúng ta tìm được trên mạng là một số lượng khổng lồ, nó sẽ không cô đọng như những gì thầy cô trực tiếp truyền đạt. Chúng ta sẽ phải tự mình chắt lọc những thứ ta cảm thấy cần thiết nhất. Khó khăn thứ 2 chính là khả năng đọc hiểu của chúng ta (bao gồm cả ngoại ngữ) sẽ không được dễ dàng như những gì thầy cô trực tiếp truyền đạt trên lớp.

3. Hoạt động quan trọng khi áp dụng phương pháp Flipped Learning

Khi áp dụng phương pháp này, chúng ta phải thực hiện chính xác nhưng bước sau:
  • Đọc thật kỹ tài liệu, tóm tắt và ghi các ý chính vào giấy.
  • Suy nghĩ.
  • Đặt câu hỏi và tìm câu trả lời (nếu không tìm được câu trả lời hãy ghi lại và để dành vào buổi thực hành trên lớp sẽ hỏi bạn bè hay thầy cô).
  • Bắt đầu thực hiện các bài tập demo và hãy đảm bảo bạn hiểu rõ bài tập đó.

4. Ý kiến cá nhân

Vì là một phương pháp khá mới mẻ nên tôi cho rằng sẽ mất khá nhiều thời gian để chúng ta có thể áp dụng nó một cách hoàn hảo. Nhưng tôi tin rằng phương pháp này tương lai sẽ thay thế phương pháp học thụ động cũ ở các trường học :D

Servlet life cycle

Chu kỳ sống của Servlet là quá trình từ lúc tạo ra nó cho đến khi tiêu hủy.
Các thời điểm vòng đời của Servlet:
  • Gọi phương thức init() để khởi tạo Servlet.
  • Servlet gọi phương thức service() để xử lý request của người dùng
  • Servlet được kết thúc bằng cách gọi phương thức destroy().
  • Servlet sẽ được đưa vào thùng rác.

1. Phương thức init()

Được gọi khi Servlet được tạo ra. Vì vậy nó chỉ được sử dụng để khởi tạo.
Servlet được tạo ra khi người dùng đầu tiên gọi một URL tương ứng với Servlet. Khi người dùng kích hoạt một Servlet được tạo ra, mỗi yêu cầu của người dùng kết quả trong một chủ đề mới được giao cho doGet hoặc doPost phù hợp. Phương thức init() tạo ra hoặc tải một số dữ liệu được sử dụng trong suốt vòng đời của Servlet.

public void init() throws ServletException {

}


2. Phương thức service()

Là phương thức chính để thực hiện các công việc thực tế, Servlet container (web server) gọi service() để xử lý các request của client (browser) và viết các response đã được định dạng lại cho khách hàng.

public void service(ServletRequest request, ServletResponse response) throw ServletException, IOException {

}

service() được gọi bởi Servlet container và phương thức service này lại gọi phương thức doGet(), doPost(), doPut().

3. Phương thức destroy()

destroy() được gọi một lần vào cuối vòng đời của servlet. Phương thức này cho servlet cơ hội để đóng các kết nối cơ sở dữ liệu, viết danh sách cookie hoặc ghi các thông tin cần thiết vào đĩa và thực hiện các hoạt động dọn dẹp khác.
Sau khi destroy() được gọi ra, servlet được đánh dấu để thu gom rác.

Hypertext Transfer Protocol

HTTP là gi?

HTTP là chữ viết tắt từ Hypertext Transfer Protocol (giao thức truyền tải siêu văn bản). HTTP là giao thức cơ bản mà World Wide Web sử dụng. HTTP xác định cách các thông điệp được định dạng và truyền tải ra sao, và những hành động nào mà các Web server và các trình duyệt Web phải làm để đáp ứng các lệnh rất đa dạng.

Tổng quan

Chức năng HTTP như là một request - response trong giao thức client - server. Một trình duyệt web có thể là client và một ứng dụng chạy trên một máy tính lưu trữ một trang web có thể là server. Các server cung cấp nguồn tài nguyên như HTML file và nội dung khác, hoặc thực hiện các chức năng thay cho client.
Một trình duyệt web là một ví dụ của một đại lý người dùng.
HTTP được thiết kế để cho phép các phần tử mạng trung gian để cải thiện hoặc cho phép thông tin liên lạc giữa các client và server.
HTTP là một lớp ứng dụng giao thức được thiết kế trong khuôn khổ của Internet Protocol Suite. Tuy nhiên có thể giao thức HTTP không đáng tin cậy như User Datagram Protocol.
Tài nguyên HTTP được xác định và nằm trên mạng bằng cách định danh tài nguyên thống nhất (URL).

Mô hình Client - Server

1. Mô hình Client - Server là gì ?

Mô hình client - server là mạng trong đó các máy khách (client) sẽ gửi yêu cầu (request) đến máy chủ (server). Máy chủ sẽ luôn luôn ở trạng thái hoạt động và chờ yêu cầu của máy khách. Khi máy khách có yêu cầu, máy chủ sẽ xử lý và đáp ứng yêu cầu của máy khách.

2. Tại sao lại sử dụng nó ?

Mô hình client - server được sử dụng để giúp người dùng có thể truy cập dữ liệu từ xa (như tìm kiếm thông tin, gửi và nhận file...).

3. Sử dụng nó khi nào ?

Nó được sử dụng khi một tổ chức hoặc một tập thể có đông người cần truy cập nhanh một số lượng dữ liệu lớn. Lúc đó mạng client - server sẽ là phương pháp hiệu quả nhất.

4. So sánh mô hình Client - Server với mô hình mạng hàng ngang P2P

Khác với mô hình mạng client - server, mô hình mạng hàng ngang P2P không có khái niệm máy khách (client) - máy chủ (server), mà chỉ có khái niệm các node (peers) đóng vai trò cả máy chủ, cả máy khách. Một mạng hàng ngang cho phép các node đóng góp, chia sẻ tài nguyên với nhau. Tài nguyên riêng rẽ của các node gồm có ổ cứng, CD-ROM, máy in... các nguồn tài nguyên này có thể được truy cập từ bất cứ node nào trong mạng.

Java EE

Java Technologies

Chúng ta có thể thấy rằng ngày nay các ứng dụng Web xuất hiện hầu hết mọi nơi trên Internet. Phần lớn các ứng dụng đó được sử dụng để xử lý các hình ảnh trực tuyến, nhận và đặt hàng trên mạng,... hoặc đơn giản là để hiện thị tên người dùng. Vậy những công nghệ Java chúng ta cần để tạo ra một ứng dụng Web là gì? Nó phụ thuộc vào loại ứng dụng bạn làm và những gì nó làm.

Như chúng ta đã biết có rất nhiều công nghệ Java, nhưng có một số công nghệ được nhiều người sử dụng nhất. Sau đây chúng ta hãy cùng điểm qua những công nghệ đó:

Java Servlet API

Java Servlet API cho phép bạn xác định các lớp HTTP cụ thể. Servlet thường được sử dụng để mở rộng các ứng dụng được lưu trữ bởi Web Server. Ví dụ có thể dùng một servlet để có được đầu vào văn bản trực tuyến và in nó trở lại màn hình một trang HTML. Một server chạy trên phía máy chủ mà không có một giao diện ứng dụng hoặc giao diện người dùng HTML của riêng nó.

JavaServer Pages

Công nghệ JSP cung cấp một cách nhanh chóng đơn giản để tạo ra nội dung Web động. Công nghệ JSP cho phép thêm đoạn mã servlet trực tiếp vào một tài liệu văn bản. Thông thường, một trang JSP là một tài liệu dựa trên văn bản có chứa 2 loại văn bản:
  • Dữ liệu tĩnh, có thể được thể hiện trong bất kỳ định dạng dựa trên văn bản, chẳng hạn như HTML, Wireless Markup Language (WML), hoặc XML.
  • Phần tử công nghệ JSP, trong đó xác định cách trang xây dựng nội dung động.

JavaServer Pages Standard Tag Library

JavaServer Pages Standard Tag Library (JSTL) gói gọn chức năng cốt lõi chung cho nhiều công nghệ JSP. Thay vì trộn nhiều Tag từ nhiều nhà cung cấp trong các ứng dụng của bạn, bạn sử dụng một bộ tiêu chuẩn duy nhất của thẻ. Tiêu chuẩn này cho phép bạn triển khai các ứng dụng của bạn trên bất kỳ JSP container hỗ trợ JSTL và làm cho nó có nhiều khả năng thực hiện của các thể được tối ưu hóa.

JavaServer Faces

Công nghệ JavaServer Faces là một khung giao diện người dùng để xây dựng các ứng dụng web. Các thành phần chính của công nghệ JavaServer Faces liên quan đến một GUI framework, một mô hình linh hoạt để dựng hình các thành phần trong ngôn ngữ lập trình và các công nghệ khác nhau.