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

Suy nghĩ của tôi

I:Những điều tôi thấy
  -Tôi cảm thấy khá mệt mỏi vì số lượng bài tập khá , làm mất nhiều thời gian.
  -Tôi cảm thấy mình hiểu thêm về lý thuyết hơn kỳ trước.
  -Tôi cảm thấy các bạn trong lớp chăm học hơn
  -Tôi cảm thấy tự học qua video là một cách học hay hơn là ngồi đọc sildes một cách khô khan và toàn tiếng anh
  -Tôi cảm thấy kỹ năng học nhưng cái mới của mình đã được cải thiện và tiến bộ
II:Những điều tôi đã làm được 
  -Tôi luôn làm bài với tinh thần tự giác cao và nghiêm túc
  -Tôi luôn nộp bài đúng thời hạn được giao
  -Hầu hết các bài tập, tôi hoàn toàn có thể tự làm thông qua video và demo của giáo viên.
  -Khi gặp vấn đề, tôi hỏi giáo viên và luôn hiểu vấn đề sau khi được giáo viên phân tích.
  -Áp dụng được vào assignment.
III:Những điều tôi chưa làm được
  -Chưa từng được điểm tối đa.
  -Code vẫn chưa gọn gàng và sạch sẽ .
  -Nhiều lúc gặp vấn đề khó, mất nhiều thời gian, tôi thường cảm thấy rất nản.
  -Chưa học được nhiều cùng các bạn.
  -Sắp xếp thời gian chưa hợp lý giữa làm bài và giải trí.
  -Tiếng anh của tôi vẫn chưa vững và còn hạn chế.
IV:Những điều tôi sẽ cố gắng làm
  -Được điểm tối đa.
  -Cải thiện kỹ năng code.
  -Kiên trì tìm hiểu những vấn đề chưa rõ.
  -Cố gắng dành nhiều thời gian để học cùng các bạn.
  -Cố gắng sắp xếp thời khóa biểu hợp lý nhất với bản thân.
  -Cố gắng học thêm tiếng anh.
V:Những điều tôi mong muốn.
  -Nắm chắc lý thuyết.
  -Code thông minh và gọn gàng nhất.
  -Đặc biệt, được điểm tối đa

I:Filter

I:Filter
 -Filter là thành phần mà bạn có thể sử dụng và thiết lập cấu hình để thực hiện một số nhiệm vụ lọc. Filter được sử dụng  trước khi xử lý yêu cầu và sau  khi chế biến của phản ứng. Số lượng cac filter không hạn chế. Filter được cấu hình trong mô tả triển khai của một ứng dụng web.


II:Cách làm việc của Filter 
 -Khi một yêu cầu Web container , nó sẽ kiểm tra  bộ lọc có mẫu URL phù hợp với URL được yêu cầu.
 -Web container  đặt các bộ lọc đầu tiên với một kết hợp mẫu URL và mã bộ lọc được thực thi.
 - Nếu bộ lọc khác có một mẫu URL phù hợp, mã của nó sau đó được thực hiện. Điều này tiếp tục cho đến khi không có bộ lọc với các mẫu URL phù hợp.
 -Nếu không có lỗi xảy ra, yêu cầu đi đến các servlet mục tiêu.
 -Servlet trả về phản ứng(response) lại cho người gọi của nó. Bộ lọc cuối cùng được áp dụng cho các yêu cầu là bộ lọc đầu tiên áp dụng cho các phản ứng.
 -Cuối cùng phản ứng sẽ được thông qua  Web container.

III:Filter API
 - Filter API là một phần của Servlet API . Giao diện  Filter được tìm thấy trong gói javax.servlet .
 - Để tạo ra một Filter, chúng ta phải thực hiên giao diện Filter.
    +void init(FilterConfig filterConfig): được giúp đỡ bởi web container để chỉ ra một bộ lọc mà nó đang được đặt vào dịch vụ
    +void doFilter(ServletRequest request, ServletResponse response, FilterChain chain): gọi bởi container mỗi lần một cặp yêu cầu / đáp ứng được truyền qua chuỗi do một yêu cầu khách hàng cho một nguồn tài nguyên ở cuối của chuỗi.
    +void destroy(): được giúp đỡ bởi web container để chỉ ra một bộ lọc mà nó đang được đưa ra khỏi dịch vụ.

IV:Demo(Tiếp nối bài JBDC Servlet)
     Đầu tiên, ta sẽ thử gõ link :http: //localhost:8080/Assignment/Home . Ta thấy mặc dù chưa đăng nhập nhưng vẫn vào đc trang Home (vẫn load nội dung nhưng ko hiện thị được tên người đăng nhập).



    Hôm nay, tôi sẽ hướng dẫn các bạn sử dụng filter để khắc phục lỗi trên

   Bước 1: Tạo 1 file filter trong packages fpt.aptech.assignment.filter

                 


                  Ấn next, chọn ô add information...
 

               Chọn Edit, nhập tên file cần kiểm tra (ở đây là Home.java)

       

Bước 2: Viêt code cho trang HomeFilter.java vừa tạo.
   
       


Kết quả :

       Chạy trang Home.java

 :
    Trang Home.java đã không chạy được và chuyển lại trang Login

                 

Thứ Ba, 17 tháng 6, 2014

Giới thiệu về JSP

I:Giới thiệu về JSP
 -Công nghệ JSP được sử dụng để tạo ra các ứng dụng web. Nó tập trung nhiều hơn về trình bày logic của ứng dụng web. Trang JSP được bảo vệ dễ dàng hơn  một Servlet . Cách trình bày code của trang JSP là khác nhau với  Servlets. Servlet thêm code HTML  trong mã Java trong khi JSP  thêm mã Java trong HTML. Tất cả mọi thứ một Servlet có thể làm, một trang JSP cũng có thể làm điều đó.
 -JSP cho phép chúng ta viết các trang HTML có chứa các thẻ để chạy các chương trình Java mạnh mẽ. Nhà thiết kế web có thể thiết kế và cập nhật các trang JSP mà không cần học các ngôn ngữ Java và phát triển Java cũng có thể viết mã mà không liên quan đến việc thiết kế web.
-Trang JSP được chuyển đổi thành một Servlet bằng Container Web. Container dịch một trang JSP vào tập tin class source.(java) và sau đó biên dịch thành một lớp Java Servlet.

II: Elements JSP
 -JSP Scripting Elements được viết bên trong <code> <%%> </ code>. Các mã bên trong <code> <%%> </ code> được xử lý bởi các công cụ JSP trong bản dịch của các trang JSP. Bất kỳ văn bản khác trong trang JSP được coi là HTML hoặc văn bản đơn giản.

    +Comment : JSP comment được sử dụng khi bạn đang tạo một trang JSP và muốn đưa vào bình luận về những gì bạn đang làm. JSP comment ​​chỉ nhìn thấy trong trang JSP. Những ý kiến ​​không có trong mã nguồn servlet trong giai đoạn dịch, cũng không xuất hiện trong các phản ứng HTTP. Cú pháp của JSP bình luận như sau : <%-- JSP comment --%> 

  +Declaration : Chúng ta biết rằng ở cuối một trang JSP sẽ được dịch sang lớp Servlet. Vì vậy, khi chúng ta khai báo một biến hoặc các phương thức trong JSP bên trong Declaration Tag  , nó có nghĩa là declaration được thực hiện bên trong lớp Servlet nhưng ngoài phương thức dịch vụ. Bạn có thể khai báo thành viên tĩnh và phương thức trong Declaration Tag. Cú pháp của Declaration Tag : <%! declaration </ i>%>

  +Expression Language : Expression Language (EL) đã được thêm vào JSP 2,0 . Mục đích của EL là để sản xuất scriptless trang JSP. Cú pháp của EL trong một JSP như sau: <% = JavaExpression%>

  +Scriptlet Tag : Scriptlet Tag cho phép bạn viết mã java trong trang JSP. Cú pháp của Scriptlet Tag như sau :<% <i> mã java </ i>%>

 +Directive Tag : Directive Tag  xung cấp nhứng hướng dẫn đặc biệt cho container Web tại thời điểm trang dịch. Directive tag có 3 loại : page, include and taglib


III:Standard Tag(Action Element)
 
     JSP cung cấp  Standard Tag(Action Element)  để sử dụng trong các trang JSP của bạn. Các thẻ được sử dụng để loại bỏ hoặc loại bỏ mã scriptlet từ trang JSP của bạn bởi vì scriplet mã được về mặt kỹ thuật không được khuyến cáo hiện nay.
     Standard tags bắt đầu với tiền tố jsp <code>: </ code>. Có rất nhiều JSP Standard Action tag được sử dụng để thực hiện một số nhiệm vụ cụ thể.
     Sau đây là một số JSP Standard Action Tag có sẵn:



IV: Lợi thế của JSP
 -JSP được dịch và biên dịch thành Java servlet nhưng được dễ dàng hơn để phát triển hơn JAVA servlet.
 -JSP có tất cả lợi của Java tức là viết một lần chạy mọi nơi
 -JSP sử dụng ngôn ngữ kịch bản đơn giản dựa trên cú pháp cho HTML nhúng vào JSP.
 -container JSP cung cấp một cách dễ dàng để truy cập đối tượng chuẩn và hành động.
 -JSP được hỗ trợ tất cả những lợi ích được cung cấp bởi JAVA servlets và môi trường web container
 -JSP sử dụng HTTP như mô hình truyền thông yêu cầu mặc định / phản ứng và do đó làm cho JSP lý tưởng như&nbspWeb Enabling Technology.

V: Nhược điểm của JSP
 - Khi các trang JSP được dịch sang servlet và biên soạn, rất khó để dấu vết lỗi xảy ra trong các trang JSP.
 - Yêu cầu tăng gấp đôi không gian đĩa để chứa các trang JSP.
 - Các trang JSP đòi hỏi nhiều thời gian hơn khi truy cập lần đầu tiên khi chúng được được biên soạn trên máy chủ.

JDBC Servlet

I: Giới thiệu JDBC
    Java Database Connectivity (JDBC)  là một Application Programming Interface (API)  được sử dụng để kết nối ứng dụng Java với cơ sở dữ liệu. JDBC được sử dụng để tương tác với các loại hình khác nhau của cơ sở dữ liệu như Oracle, MS Access, My SQL và SQL Server. JDBC cũng có thể được định nghĩa là giao diện nền tảng độc lập giữa một cơ sở dữ liệu quan hệ và lập trình Java. Nó cho phép chương trình java để thực hiện câu lệnh SQL và lấy kết quả từ cơ sở dữ liệu.

II:Những điều mới trong JDBC 4.0

- JDBC 4.0  là  một  kỹ thuật mới và phát triển của JDBC. Nó cung cấp các tính năng sau:
  +Quản lý kết nối.
  +Tự động tải của giao diện điều khiển.
  +Hỗ trợ cho đối tượng lớn.
  +Chú thích trong truy vấn SQL.

III: Demo
Bước 1: Tạo database


Bước 2: Tạo new project


Bước 3: Tạo form Login ở trang index


Bước 3: Tạo DataAcess.java để kết nối database
         

            +Code Login


            +Code View All Post



Bước 4:Viết code cho servlet LoginServlet(sử dụng Session)


Bước 5:Viết code Login ở trang Home




Bước 6: Viết code View All Post ở trang Home


            Kết quả:







Thứ Hai, 16 tháng 6, 2014

Cookie

I:Khái quát về Cookies
 - Cookies là bộ phận nhỏ của thông tin được gửi  từ máy chủ web đến khách hàng.
 - Cookies  là những công nghệ đơn giản  để lưu trữ thông tin khách hàng.
 - Cookies được lưu trữ trên máy tính của khách hàng bị phá hủy bởi các trình duyệt của khách hàng.
II: Cookies API
 -Cookie được tạo ra bằng cách sử dụng lớp Cookie trong Servlet API. Cookie được thêm vào để  đáp ứng các đối tượng sử dụng phương thức addCookie() . Phương pháp này sẽ gửi thông tin cookie trên các dòng  HTTP. Phương thức getCookies () được sử dụng  để truy cập các tập tin cookie, cái mà được thêm vào đối tượng.
III:Các phương thức quan trọng
-setMaxAge(): thiết lập tuổi lớn nhất của cookie.
-addCookie(): thêm cookie vào đối tượng.
IV:Vi dụ

               

index.html



validate.java



First.java



Kết quả:






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

Session

I: HttpSession
-đối tượng HttpSession được sử dụng để lưu trữ toàn bộ phiên làm việc với một khách hàng cụ thể. Chúng ta có thể lưu trữ, truy xuất và loại bỏ thuộc tính từ đối tượng HttpSession . Bất kỳ servlet nào cũng có thể có quyền truy cập vào đối tượng  HttpSession thông qua các phương thức getSession () của đối tượng HttpServletRequest .

II: Cách làm việc của HttpSession




- Theo yêu cầu đầu tiên của khách hàng, Web container sẽ tạo ra một session có ID duy nhất và mang lại cho nó trở lại cho khách hàng.
- Khách hàng gửi lại ID phiên với mỗi yêu cầu.
- Web container sẽ sử dụng ID này để làm việc.

III: HttpSession interface 



IV: Một số phương thức quan trọng của HttpSession
 -long getCreationTime():  trả về thời gian khi phiên giao dịch đã được tạo ra, được đo bằng mili giây tính từ nửa đêm 01 tháng 1 1970 GMT.
 -String getId(): trả về một chuỗi có chứa các định danh duy nhất.
 -long getLastAccessedTime():  trả về lần cuối cùng khách hàng gửi một yêu cầu.
 -int getMaxInactiveInterval(): trả về khoảng thời gian tối đa, trong vài giây.
 -void invalidate(): phá hủy session.
 -boolean isNew():  trả về true nếu session là mới.
 -void setMaxInactiveInterval(int interval):Chỉ định thời gian, chỉ trong vài giây, sau khi servlet container sẽ làm mất hiệu lực session.

V:Demo
Develope user story "Login" with mock data instead of database

Bước 1: Tạo 1 new project


Bước 2: Tại trang index, tạo phần đăng nhập


Bước 3: Tạo packages fpt.aptech.session.da và file User.java





Bước 4: Tạo packages fpt.aptech.session.da và file User.java




Bước 5: Tạo packages fpt.aptech.session.da và file servlet SessionServlet


Bước 6: Lấy tên và mật khẩu từ trang index và tạo session



Bước 7: Kiểm tra tên và mật khẩu, lấy giá trị của session



Kết quả:

+Trang index:


+Sau khi đăng nhập thành công:

Demo https://drive.google.com/file/d/0B-EFzewQLSMDdEJRU1k5NVVoSDA/edit?usp=sharing


Dispatcher

I: Dispatch

Dispatch là quá trình gửi request xử lý mã lệnh từ 1 hay nhiều đối tượng đến 1 đối tượng cụ thể chịu trách nhiệm xử lý mã lệnh phù hợp. Điều này cho phép bạn:

 + Chia tách logic xử lý mã lệnh khỏi phần giao diện. Việc này giúp chương trình của bạn giảm thiểu rủi ro khi giao diện ứng dụng được thiết kế lại hoặc thay đổi, di rời.
+ Chia tách mã lệnh xử lý cụ thể thành các Class tương ứng và chỉ phụ thuộc vào 1 Interface. 

II: RequestDispatcher 
-Nó là một giao diện, dùng để xác định một đối tượng mà có thể gửi yêu cầu đến bất kỳ tài nguyên nào (như HTML, hình ảnh, JSP, Servlet) trên server.

 

-Nó cung cấp hai phương pháp quan trọng:
    +forward (request, response) :  gửi yêu cầu từ một servlet sang một tài nguyên khác như servlet khác hay     trang JSP,  hoặc  HTML,
       
     

    +include (request, response) : thêm các nội dung của một tài nguyên như servlet, trang JSP  hay trang HTML) trong Response.



III: Demo
Implement an application as following:

Depends of the question, GateKeeper will forward request to corresponding Answers.



Bước 1: Tạo 1 new project (xem lại bài trước)


Bước 2:  Tạo thêm 1 trang  error.jsp để hiện thì nếu câu hỏi là sai


Bước 3 : Tại trang index, tạo 1 text box để nhập câu hỏi và 1 nút submit để gửi


Bước 4: Tạo trang servlet GateKeeper.java để nhận và xử lý thông tin từ trang index
             GateKeeper.java sẽ kiểm tra xem thông tin nhập ở trang índex có đúng không. Nếu đúng, nó sẽ        chuyển đến trang ResponServlet.java, còn không thì sẽ chuyển đến trang error.jsp


Bước 5: Tại trang GateKeeper.java
             + Tạo thêm hàm init() để add cứng dữ liệu(làm cho nhanh)


             +Tạo phương thức foward() để Request và Respon thông tin

               

Bước 6: Tạo trang servlet ResponServlet.java để xử lí yêu cầu và trả về kết quả



Kết quả:
      -Trang index:
           
      -Nếu câu hỏi sai::



      -Nếu câu hỏi đúng:



Demo https://drive.google.com/file/d/0B-EFzewQLSMDU1hlWkxKZjNrQWs/edit?usp=sharing