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

Phát triển một ứng dụng web bằng Netbean. (Version 8.0)

Yêu cầu: Trên máy tính đã cài sẵn Java EE và Netbean (Thường là phiên bản 7.2 hoặc cao hơn)

Bước 1. Chạy Netbean bằng cách kích chuột vào biểu tượng của Netbean trên màn hình desktop.


Bước 2: Sau khi đã chạy Netbean, ta kích vào icon tạo Project mới như hình dưới


Bước 3: Tiếp đó ở bên mục Categories ta chọn là Java Web và bên mục Projects ta chọn Web Application sau đó nhấn next như hình dưới.

Bước 4: Chọn tên và vị trí lưu cho project như hình dưới.


Bước 5: Nhấn Finish.

Bước 6: Kiểm tra hoạt động của Netbean bằng cách thêm một thẻ <label> với dòng chữ "Xin chào thế giới",


Bước 7. Tạo một trang html có form cho phép người dùng nhập vào.





Bước 8. Tạo Servlet
Ta vào Source Packages, chọn new -- > other như hình dưới.

Bước 9: Bên mục Categories ta chọn Web và bên mục File Types ta chọn Servlet sau đó nhấn next như hình dưới.

Bước 10. Đặt tên cho Class Servlet tiếp theo nhấn Next.


Bước 12: Tích vào "Add information to deployment..." và nhấn Finish.




Assignment Practise

Module1.


Link: https://drive.google.com/a/fpt.edu.vn/#folders/0B_7k2KDkO0hTUkVIQU9LQjhrNUE

Module 2.

Kết Quả




Link: https://drive.google.com/a/fpt.edu.vn/#folders/0B_7k2KDkO0hTUkR6X3hud3RjX0E


Servlet Life Cycle

Servlet Life Cycle
I. Định nghĩa
- Vòng đời của một Servlet có thể được định nghĩa là toàn bộ quá trình từ lúc được tạo ra, được init, rồi xử lý các yêu cầu từ phía Client cho đến khi bị huỷ.



- Instantiation and Loading: Ở trạng thái này, Servlet container tiến hành tạo đối tượng cho Servlet Class.

- Initialization init() method:  Tiếp tục, servlet container sẽ gọi phương thức init(), phương thức này sẽ khởi tạo tất cả các biến và nội dung những gì cần thiết. Phương thức init() được thiết kế để chỉ được gọi một lần khi mà Servlet được tạo ra lần đầu tiên và không gọi lại khi có các Request của Client.

- Service Method: Đây là phương thức chủ yếu để thực thi các tác vụ thực tế. Servlet Container gọi phương thức Service để xử lý các Requests đến từ phía Client và tạo ra các phản hồi được định dạng sẵn trả về cho phía Client.

- Destroy Method: Phương thức này được gọi chỉ một lần vào thời điểm kết thúc vòng đời của một Servlet. Phương thức này sẽ đóng các kết nối tới cơ sở dữ liệu, dừng các Background Threads, viết ra danh sách các Cookie....v.v

- Unavailable: Lúc này Servlet Container sẽ giải phóng hết bộ nhớ đã cấp phát cho Servlet.













Giao thức HTTP

I. Giao thức HTTP

1. Định nghĩa.


HTTP (HyperText Transfer Protocol) là một trong năm giao thức chuẩn về mạng Internet, được dùng để liên hệ thông tin giữa Máy cung cấp dịch vụ (Web server) và Máy sử dụng dịch vụ (Web client). HTTP là giao thức Client/Server dùng cho World Wide Web và là một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet).

2. Là một giao thức Stateless (không lưu lại trạng thái)

- Sau khi client gửi dữ liệu lên server, server thực thi xong và trả kết quả lại cho Client thì “quan hệ” giữa client và server bị “cắt đứt” , Server không lưu bất cứ dữ liệu gì của client.

3. Là một giao thức phi kết nối (Connectionless)

- Mọi kết nối giữa Client và Server đều sẽ bị ngắt sau khi Server xử lý xong Request của Client.

* Nhược điểm của tính phi kết nối (Connectionless)
- Dữ liệu không được đảm bảo đến được với client vì có thể xảy ra sự cố trong quá trình truyền dữ liệu.







Java Web Technologies

I. Các công nghệ làm web trong JAVA



1. JavaServlet

- JavaServlet API là một công nghệ làm web cũ của Java cho phép thêm nội dung động vào Web Server sử dụng nền tảng Java. JavaServlet có thể chạy được trên tất cả các Web server.
- JavaServlet thường được dùng để :
+ Xử lý và lưu trữ các dữ liệu được gửi từ một form HTML.
+ Cung cấp nội dung động như kết quả của một truy vấn từ database.

* Ưu điểm

- Có độ bảo mật cao.
- Có hiệu năng và khả năng mở rộng cao.
- Truy cập được tất cả Java API
- Có nhiều tools bên phía Third - Party và JavaServlet được nhiều Webserver hỗ trợ.
- Độc lập Platform và Server
- Hầu hết các server đều cho phép load lại Servlet khi có thay đổi

* Nhược điểm

- Là một công nghệ đã cũ nên có rất nhiều hạn chế và khó khăn khi làm việc với giao diện.

2. JavaServer Pages

JavaServer Pages là một công nghệ của Java cho phép các nhà phát triển tạo nội dung HTML, XML hay một số định dạng khác của trang web một cách năng động. Công nghệ này cho phép người ta nhúng mã Java và một số hành động xử lý đã được định trước (pre-defined actions) vào trong nội dung tĩnh của trang.
* Ưu điểm
- Cho phép làm việc dễ dàng với giao diện hơn.
- Kế thừa được tất cả các ưu điểm của JavaServlet.
* Nhược điểm.
- Tốn không gian để lưu trữ hơn so với Servlet.
- Đối với lần đầu tiên truy cập trang JSP thì sẽ phải mất thời gian cho việc biên dịch.

3. JavaServer Faces

* Ưu điểm
- Có tính tuỳ chỉnh cao
- Đơn giản và dễ dàng trong cài đặt.
- Dễ dàng thiết kế và chỉnh sửa các thành phần.

Mô hình Client, Server

I. Khái niệm:

Mô hình Client - Server là một mô hình hết sức phổ biến hiện nay, nó là mô hình mà tất cả các website hiện nay đang áp dụng. Cách thức hoạt động của mô hình này là sẽ có một hệ thống máy chủ (Server) làm nhiệm vụ xử lý các yêu cầu và trả về kết quả cho máy khách (Client) mỗi khi có yêu cầu từ phía máy khách (Request).

1. Server

Là một máy tính cho phép thực hiện yêu cầu của một hoặc nhiều người dùng từ phía client. Khi có yêu cầu từ phía người dùng, server sẽ chịu trách nhiệm xử lý và trả về kết quả cho người dùng, các kết quả này có thể là một tài nguyên nào đó nằm trên server hay một cái gì đó ví dụ như kết quả của một phép tính. Xét ở một khía cạnh khác thì server có thể được định nghĩa như một máy tính có nhiều người sử dụng vì một server phải xử lý rất nhiều các yêu cầu khác nhau từ client khác nhau vì vậy server sẽ hoạt động tốt hơn nếu như có thể xử lý đa nhiệm, tức là các tính năng hoạt động một cách độc lập và song song với nhau. 
- Server phân biệt các đối tượng người dùng dựa trên thông tin của phía người dùng như tên đăng nhập, mật khẩu, địa chỉ, vai trò, dựa vào các thông tin này server có thể biết chính xác đối tượng người dùng là ai để gửi lại phản hồi (Response) một cách chính xác.

2. Client

    Client là máy tính chỉ được sử dụng bởi một người dùng, máy client có thể sử dụng các hệ điều hành như Windows, MacOs, Ubuntu ...v.v.v và đóng vai trò tương tác giữa người dùng và Server. Bản thân mỗi client được tích hợp nhiều tính năng và khi thông qua kết nối với Server, Client còn có thể sử dụng thêm những tính năng mà Server cung cấp, Client chỉ cần nhập các thông tin cần thiết (các tham số đầu vào) và thực hiện gửi yêu cầu lên Server, sau khi Server xử lý xong sẽ trả về kết quả cho Client. Client và Server có thể chia sẻ tài nguyên trên máy cho nhau và Client được coi là người sử dụng dịch vụ do một hoặc nhiều Server cung cấp. 
Ví dụ: Ta có thể xem video trên Youtube và vừa đọc tin tức tại 24h.com.vn. 
    Trên thực tế một máy tính có thể vừa là Client vừa là Server. Ví dụ như. 
Một máy tính A đang xem phim và chơi game online trên mạng thì A được coi là một Client nhưng đồng thời A cũng là một Server khi chia sẻ tài nguyên trên máy với các máy tính khác trong cùng mạng LAN.

II. Ưu và nhược điểm

1. Ưu điểm
- Do tài nguyên tập trung trên một máy tính cho nên việc quản lý tài nguyên trở nên dễ dàng Tài nguyên được quản lý tập trung vì vậy quản lý một cách dễ dàng.
- Dễ dàng kiểm soát việc truy cập và sử dụng.
- Dễ dàng nâng cấp và mở rộng. Chúng ta hoàn toàn có thể nâng cấp và cải thiện hiệu suất của hệ thống bằng cách nâng cấp cấu hình của server.
- Người dùng có thể sử dụng nhiều tính năng thông qua kết nối với máy chủ.
2. Nhược điểm
- Phụ thuộc vào mạng, mọi thao tác của cả Client và Server đều phụ thuộc vào mạng để truyền tải. 
- Nếu mạng bị mất thì kết nối giữa Client và Server sẽ bị ngắt và các tệp tin truyền tải sẽ bị gián đoạn.
- Tốn kém chi phí khi mua và duy trì sự hoạt động của Server.
- Cần có người quản trị mạng trông coi.








Thứ Ba, 10 tháng 6, 2014

Why new method and How to use new tools?

    I. Các kỹ năng mà một lập trình viên cần có

    1. Đặt vấn đề.

     - Trong thời buổi hiện nay các công nghệ phát triển nhanh như vũ bão làm cho các lập trình viên mới tốt nghiệp và bắt đầu bước chân vào nghề cảm thấy bối rối, không biết nên học ngôn ngữ gì, rèn luyện những kĩ năng gì để đạt được thành công trong ngành lập trình. Vậy những lập trình viên cần học kỹ năng gì? Dưới đây là các kĩ năng mà lập trình viên cần rèn luyện để có thể đứng vững với nghề lập trình. Cùng khám phá nào :)




   2. Các kĩ năng cần phát triển.

        a. Kĩ năng giải quyết vấn đề đang gặp phải.

        - Đây là một kĩ năng cực kì quan trọng không chỉ trong ngành lập trình mà còn trong cuộc sống thường ngày. Kỹ năng giải quyết vấn đề trong lập trình là khi người lập trình viên gặp các vấn đề, các yêu cầu của khách hàng thì biết cách để thực hiện các yêu cầu đó bằng nghiệp vụ của mình. Để làm được như vậy đòi hỏi người lập trình viên phải luôn luôn suy nghĩ để tìm ra các giải pháp cho vấn đề mình gặp phải, không những tìm ra giải pháp đơn thuần mà còn phải tìm ra những giải pháp tối ưu nhất.

Ví dụ:

Khách hàng yêu cầu phát triển một website chuyên bán các sản phẩm là các loại đèn trang trí.

Lúc này người lập trình viên sẽ phải sử dụng các công cụ hỗ trợ là ngôn ngữ để phát triển, framework, lựa chọn giao diện, vân vân. Trong quá trình phát triển sẽ nảy sinh một số rắc rối vì kĩ thuật người lập trình viên cần biết cách xử lý các tình huống khó khăn như tìm kiếm thông tin trên internet, hỏi bạn cùng lớp (hoặc hỏi đồng nghiệp), hỏi thầy giáo (hoặc hỏi xếp).

Nếu không biết cách để giải quyết vấn đề thì cho dù có học và biết bao nhiêu ngôn ngữ, framework cũng chẳng thể làm được gì. 

        b. Kĩ năng tự học.

Trong cuộc sống hỗn độn và phức tạp này, để có thể tồn tại được thì con người nói chung hay lập trình viên nói riêng phải luôn luôn không ngừng học hỏi, học những cái cũ, học cái mới, việc học phải diễn ra không ngừng nghỉ. Có một số điều cần lưu ý về việc học như sau:

      1. Cần phải có sự cảm nhận và nhạy bén bởi có rất nhiều thứ, có những thứ cần thiết và những thứ không cần thiết đối với bản thân người lập trình viên, nếu chúng ta dành thời gian để học những thứ không cần thiết thì không những nó không giúp ích được gì cho bạn cũng như công việc của bạn mà nó còn làm lãng phí thời gian của bạn


      2. Đứng ở góc độ là một lập trình viên chúng ta nên học những ngôn ngữ phổ biến, có nhiều nhà tuyển dụng để có thể dễ dàng xin được việc.

      3. Việc học một thứ gì đó phải học thật sâu, phải đi luôn luôn tìm ra câu hỏi tại sao? nếu chỉ học để biết mà không hiểu thì sẽ rất khó để áp dụng.

      4. Việc học có 4 mức:

Bạn chỉ có thể kiếm ra tiền khi việc học của bạn đạt mức áp dụng tức là từ những cái bạn đã học được làm ra những sản phẩm của chính bạn.

        b. Kĩ năng làm việc nhóm.


- Hiện nay trong hầu hết các ngành nghề đều cần kĩ năng làm việc nhóm, làm việc nhóm giúp tăng hiệu quả làm việc đáng kể so với làm việc đơn lẻ. Làm việc nhóm (Team Working) là một kĩ năng tương đối khó, nó đòi hỏi người lập trình viên cần có các yếu tố cụ thể như: Sự nhẫn nại, tôn trọng người khác, phát huy điểm mạnh của từng thành viên trong nhóm, biết cách điều khiển thời gian và phân công công việc để đạt được tiến độ và chất lượng tốt nhất ..v.v.

  II. Phương pháp học tập.

- Hiện nay có rất nhiều các phương pháp học tập khác nhau, mỗi người phù hợp với một phương pháp. Đối với sinh viên thì việc đảm bảo học được các kiến thức trên lớp và vượt qua các bài kiểm tra là một việc hết sức quan trọng. Có một phương pháp được nhiều người áp dụng trên toàn thế giới và nó mang lại những kết quả thực sự ấn tượng cho người áp dụng đó là:  Kolb Learning Cycle

                                   
Theo phương pháp này việc học là một vòng tuần hoàn khép kín.
- Đầu tiên là học lý thuyết trừu tượng (Abstract Conceptualisation) ----->  Sau khi nắm được lý thuyết thì bắt đầu làm những bài tập thực hành để hiểu rõ hơn về lý thuyết và cách vận hành thực tế (Active)-------> Sau khi đã trải qua thực hành và hiểu rõ về lý thuyết và cách vận hành thực tế thì chúng ta sẽ có những kinh nghiệm về thứ mà chúng ta học (Concrete Experience) ----> Tiếp đến là áp dụng những kinh nghiệm mà mình đã học được vào việc làm nên một thứ gì đó của riêng mình qua quá trình này sẽ củng cố một cách vững chắc nhất những kinh nghiệm mình đã học được và khi làm thì gặp những cái mới, những khó khăn ta lại bắt đầu quay tiếp tục tìm tòi từ lý thuyết.

1. Áp dụng


- Đối với sinh viên thì trước khi lên lớp ta phải học trước lý thuyết ở nhà.
  + Hiện nay với thời đại công nghệ thông tin phát triển việc học ở nhà không còn khó khăn nữa mà chở nên rất đơn giản và tiện lợi, chúng ta có thể học mọi lúc, mọi nơi bằng cách xem các video, hay nghe các audio về bài giảng, hay chỉ đơn giản là đọc sách về thứ mà mình học. Điều này tạo nên một sự chủ động cho sinh viên và sinh viên có thể dễ dàng tiếp thu kiến thức một cách nhanh nhất vì các video, audio, hay sách đều đã được biên soạn làm sao cho người nghe, xem, đọc có thể hiểu được kiến thức một cách nhanh nhất.

- Tiếp theo là thực hành ở nhà để có thể nắm chắc được lý thuyết
   + Chúng ta có thể thực hành bằng nhiều cách khác nhau như làm các bài quiz, làm lại các demo, làm các bài tập nhỏ, sau khi thực hành gặp phải những khó khăn, rắc rối mà bản thân không thể tự giải quyết được sau khi đã tìm kiếm, tra cứu thì đến lớp và nhờ sự trợ giúp của bạn bè, hoặc giảng viên.
   + Tiếp đó sau khi tìm ra được những lỗi trong quá trình thực hành chúng ta sẽ có những kinh nghiệm khó quên để có thể áp dụng cho việc tạo ra các sản phẩm cho riêng mình.

III. Ưu điểm của phương pháp học Kolb Learning Cycle

- Giúp sinh viên có thể chủ động trong việc học tập.
- Nắm bắt kiến thức một cách nhanh chóng.
- Kiến thức đã có được sẽ khó bị quên vì đó là những kinh nghiệm thực tế của bản thân đã trải qua.
- Học ở bất cứ đâu, bất cứ lúc nào,
- Có được những kinh nghiệm thực tế.

IV. Các công cụ cho việc học

- Internet
+ Trang web tìm kiếm nổi tiếng google là một công cụ tuyệt vời để cho bạn có thể tìm kiếm mọi thứ.
- Các video bài giảng,
+ Chúng ta có thể tìm các video một cách dễ dàng với youtube bằng việc gõ các từ khoá có liên quan đến cái cần tìm kiếm
- Slide chuyên ngành
- Các audio.
- Các trang web cho phép quản lý thời gian và công việc (trello.com)