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

Toturial 9 - Servlet context in Java Web Application

1. Servlet context là gì ?
  - 1 ứng dụng web gồm rất nhiều thành phần. Nó không đơn giản chỉ là 1 servlet hoặc 1 jsp mà còn nhiều các các lớp hỗ trợ của java nữa. Vậy rất khó để quản lý chúng ==> Servlet context được sinh ra


2. Servlet context có tác dụng gì ?

  - Nó để quản lý ứng dụng web của bạn, chi tiết hơn như sau : đôi khi bạn cần lấy hoặc thiết lập 1 attribute nào đó trong ứng dụng web do các servlet trao đổi với nhau.
   Ví dụ :

Nếu bạn cần đặt 1 attribute  trong 1 ứng dụng web cho toàn bộ các servlet có thể sử dụng

Đoạn code trên dùng để lấy ra 1 Servlet Context, và dòng thứ 2 là để thiết lập 1 attribute  đó. Bất cứ khi nào bạn muốn, bạn có thể lấy attribute  này trong context và nhận được value của nó bằng dòng code dưới đây :
            String appName = (string)context.getAttribute("appName"); 
Vậy là biến appName đã có giá trị là "Crying"


Bài tập cuối bài 

Đếm số lần truy cập trang web của bạn sử dụng Servlet Context 

Bài giải 


1. Tạo 1 trang SessionCounterPage1.html



<html>
<head>
<title>Page 1</title>
</head>
<body>
<h1>Session Counter Demo</h1>
<a href="SessionCounterJspPage2.jsp">Click here</a> to visit second page .
</body>
</html>

2. Tạo tiếp trang SessionCount.java

package Session;

import javax.servlet.http.*;
public class SessionCount implements HttpSessionListener{
  private static int numberOfSessionsCount = 0;
  public void sessionCreated (HttpSessionEvent evt){
    numberOfSessionsCount++;
  }
  public void sessionDestroyed (HttpSessionEvent evt){
    numberOfSessionsCount--;
  }
  public static int getNumberOfSessionsCount(){
    return numberOfSessionsCount;
  }
}

3. Tạo tiếp trang SessionCounterJspPage1.jsp

<html>
<head>
<title>Page 1</title>
</head>
<body>
<h1>Session Demo Using HttpSessionListener</h1>
<a href="<%=response.encodeURL("SessionCounterJspPage2.jsp")%>">Click here</a> to visit page page.
</body>
</html>

4. Tạo tiếp trang SessionCounterJspPage2.jsp

<html>
<head>
<title>Page 2</title>
</head>
<body>
<h1>Session Counter</h1>
<a href="<%=response.encodeURL("SessionCounterJspPage1.jsp")%>">Click here</a> to visit first page.
</body>
</html>

5. Cuối cùng là trang SessionCounterForJspPage.jsp

<html>
<head>
<title>Session Counter</title>
</head>
<body>
<h1>Session Counter</h1>
Đây là
<%=Session.SessionCount.getNumberOfSessionsCount()%> số lượt session trong server.
</body>
</html>

Ok. Cuối cùng là build and run. Chúc các bạn thành công :)


Câu hỏi cuối bài : 

1. Servlet Context là gì ? 
    - 1 Servlet context được tạo ra bởi container trong 1 ứng dụng web, điều đó có nghĩa là mọi servlet trong phạm vi 1 ứng dụng web có thể kết nối được với Servlet context.

2. Servlet Context và Servlet Config khác gì nhau ?

   - Servlet Context là trong phạm vi toàn ứng dụng còn Servlet Config thì giới hạn ở 1 servlet.
    Servlet Config chứa các method cơ bản để lấy ra các thông số của parameter và Servlet Context Object

3. Vậy nếu như trong Servlet Context gọi Request Dispatcher thì có khác cách gọi bình thường không ?

   -  Câu trả lời là có, hãy xem 2 câu lệnh sau :

 RequestDispatcher rd = request.getRequestDispatcher("crying.jsp")
 RequestDispatcher rd = getServletContext.getRequestDispatcher("/crying.jsp")


nếu sử dụng Servlet context thì đường dẫn phải là logical path, còn bình thường thì là relative path ( đường dẫn tương đối)








Không có nhận xét nào:

Đăng nhận xét