Tải bản đầy đủ (.pdf) (51 trang)

Hướng dẫn lập trình java servlet cho người mới bắt đầu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.68 MB, 51 trang )

1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

 o7planning
MENU

47%

Máy may mini gia đình
ichibai (Trắng)

17%

238,000
MUA NGAY

Máy đuổi côn trùng Pest
Reject LP­03

44%

98,525
MUA NGAY

Thẻ nhớ tốc độ cao Micro
SDHC 32GB

195,000
MUA NGAY


Hướng dẫn lập trình Java Servlet cho người mới bắt đầu
1­ 

Giới thiệu

2­ 

Servlet là gì?

3­ 

Vòng đời của Servlet

4­ 

Cài đặt Tomcat Web Server

5­ 

Tạo Web Project bắt đầu với Servlet

6­ 

Cấu hình Eclipse để chạy Web trên tomcat

7­ 

Một số class tham gia vào các ví dụ

8­ 


Tạo Servlet đầu tiên của bạn

9­ 

Tham số khởi tạo Servlet

10­ 

Cấu hình Servlet sử dụng Annotation

11­ 

Servlet Url Pattern

12­ 

Lấy các thông tin cơ bản của Servlet

13­ 

Forward (Chuyển tiếp)

14­ 

Redirect (Chuyển hướng)

15­ 

Phiên làm việc (Session)


16­ 

Hướng dẫn sử dụng Servlet­Filter

17­ 

Hướng dẫn lập trình JSP

/>
1/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

1­ Giới thiệu
Tài liệu này được viết dựa trên:

Eclipse 4.5 (MARS) (ok for Eclipse 4.4 LUNA)
Servlet 3.0
Tomcat 8
Document History:
05­07­2014: Document based on (Eclipse 4.3, Servlet 3.0, Tomcat 7.x)
18­11­2014: Update to (Eclipse 4.4, Servlet 3.0, Tomcat 8.x)
17­07­2015: Update to (Eclipse 4.5, Servlet 3.0, Tomcat 8.x, add more examples...)

2­ Servlet là gì?
Java Servlets là chương trình chạy trên một Web hoặc ứng dụng máy chủ và hành động như một lớp trung gian

giữa một yêu cầu đến từ một trình duyệt Web hoặc HTTP khách khác và cơ sở dữ liệu hoặc các ứng dụng trên
máy chủ HTTP.
Sử dụng Servlets, bạn có thể thu thập đầu vào từ người dùng thông qua các hình thức trang web, từ một cơ sở
dữ liệu hoặc một nguồn khác, và tạo ra các trang web động.

/>
2/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

3­ Vòng đời của Servlet
Hình dưới đây minh họa về vòng đời của một Servlet. Từ khi nó được tạo ra, sử lý các đòi hỏi từ người dùng,
cho tới lúc nó bị hủy.

/>
3/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

 
 
10 






0

Có 5 bước:
1.  Tải Servlet Class vào bộ nhớ.
2.  Tạo đối tượng Servlet.
3.  Gọi method servlets init()
4.  Gọi method servlets service().
5.  Gọi method servlets destroy().
Bước 1, 2 và 3 được thực thi một lần duy nhất, khi mà servlet được nạp lần đầu. Mặc định các servlet không
được tải lên cho tới khi nó nhận một đòi hỏi đầu tiên từ người dùng. Bạn có thể buộc ServletContainer (Bộ chứa
các servlet) tải các servlet khi nó khởi động.
Bước 4 được thực thi nhiều lần, mỗi khi có đòi hỏi từ phía người dùng tới servlet.
Bước 5 nó được thực thi khi bộ chứa servlet (Servlet Container) trút bỏ (unloaded) servlet.
Bạn có thể xem hình minh họa tiếp theo để hiểu hơn về vòng đời của Servlet.

/>
4/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

Khi yêu cầu (request) của người dùng tới Servlet, servlet sẽ gọi phương thức service() để phục vụ yêu cầu của
người dùng, service() sẽ gọi một trong hai phương thức doGet() hoặc doPost(). Trong servlet của bạn, bạn
cần ghi đè và sử lý tại các phương thức này.
Như vậy khi người dùng gửi yêu cầu một Servlet, servlet sẽ được tạo ra tại thời điểm có yêu cầu lần đầu tiên tới,

đồng thời sẽ gọi  phương thức init() của servlet để khởi tạo cho nó, init() được gọi duy nhất 1 lần. Phương thức
destroy() dùng để hủy servlet, nó sẽ được gọi một lần duy nhất khi gỡ bỏ triển khai (undeloy) ứng dụng web
hoặc tắt (shutdown) web server.
 

4­ Cài đặt Tomcat Web Server
Để bắt đầu với Servlet, bạn cần download Tomcat Web Server và khai báo nó với Eclipse. Bạn có thể xem
hướng dẫn tại:
/>
5­ Tạo Web Project bắt đầu với Servlet
File/New/Other

/>
5/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

Project Name: ServletTutorial

/>
6/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu


/>
7/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

Đây là hình ảnh Project được tạo ra:

/>
8/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

Tạo file index.html:

index.html

1
2
3
4
5
6
7
8

9
10
11
12

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF‐8">
<title>Insert title here</title>
</head>
<body>
 
    

Hello World


 
</body>
</html>

?

6­ Cấu hình Eclipse để chạy Web trên tomcat
Cho tới lúc này, chúng ta vẫn chưa làm gì tới Servlet. Và giờ chúng ta cấu hình để chạy được ứng dụng web
kia. Sau đó chúng mới bắt đầu với Servlet.
/>
9/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu


Trên eclipse, nhấn phải vào Project ServletTutorial, chọn Properties:

/>
10/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

Chọn đến vị trí cài đặt Tomcat 8 của bạn.

/>
11/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

Nhấn phải chuột vào project ServletTutorial, chọn "Run As/Run on Server".

/>
12/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu


/>
13/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

Website chạy trên trình duyệt của Eclipse.

Nguyên tắc hoạt động:
Khi bạn nhập vào đường dẫn:
http://localhost:8080/ServletTutorial/index.html
Thì website sẽ trả về nội dung trang index.html, điều này hoàn toàn dễ hiểu.
Tuy nhiên, nếu bạn nhập vào đường dẫn:

/>
14/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

http://localhost:8080/ServletTutorial/
Điều đó có nghĩa là bạn không chỉ định rõ trang nào, webserver sẽ tìm trang mặc định khai báo trong thẻ
<welcome­file> mà bạn khai báo trong web.xml để trả về.




Ghi chú: /ServletTutorial được gọi là Context­Path, mỗi website đều có Context­Path, bạn có thể cấu
hình cho nó một giá trị khác, hoặc để rỗng. Trong trường hợp rỗng bạn có thể truy cập vào web của bạn
theo cách:
http://localhost:8080
http://localhost:8080/index.html
Khi chạy với Tomcat mặc định nó lấy tên Project làm Context­Path. Khi lập trình bạn không phải lo lắng gì
về điều này.
Hãy xem hình minh họa sau:

7­ Một số class tham gia vào các ví dụ
Một số class sẽ tham gia vào các ví dụ tiếp theo của tài liệu này.
Constants.java
/>
15/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

1
2
3
4
5
6
7
8
9

10
11

package org.o7planning.tutorial.beans;
  
public class Constants {
  
   public static final String ATTRIBUTE_USER_NAME_KEY ="ATTRIBUTE_USER_NAME_KEY";
     
   public static final String SESSION_USER_KEY ="SESSION_USER_KEY";
     
   public static final String CALLBACK_URL_KEY ="CALLBACK_URL_KEY";
     
}

?

UserInfo.java

1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

42

package org.o7planning.tutorial.beans;
 
public class UserInfo {
 
    public String userName;
    private int post;
    private String country;
     
    public UserInfo(String userName, String country, int post)  {
        this.userName= userName;
        this.country= country;
        this.post= post;
    }
 
    public int getPost() {
        return post;
    }
 
    public void setPost(int post) {
        this.post = post;
    }
 
    public String getCountry() {
        return country;
    }
 
    public void setCountry(String country) {
        this.country = country;

    }
 
    public void setUserName(String userName) {
        this.userName = userName;
    }
 
    public UserInfo(String userName) {
        this.userName = userName;
    }
 
    public String getUserName() {
        return this.userName;
    }
}

?

8­ Tạo Servlet đầu tiên của bạn

/>
16/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

HelloServlet.java

1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

32
33
34
35
36
37
38
39

package org.o7planning.tutorial.servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
  
public class HelloServlet extends HttpServlet {
     
    private static final long serialVersionUID = 1L;
 
     
    public HelloServlet() {
    }
  
    @Override
    protected void doGet(HttpServletRequest request,

            HttpServletResponse response) throws ServletException, IOException {
         
        ServletOutputStream out = response.getOutputStream();
         
        out.println("<html>");
        out.println("<head><title>Hello Servlet</title></head>");
         
        out.println("<body>");
        out.println("

Hello World

");
        out.println("This is my first Servlet");
        out.println("</body>");
        out.println("<html>");
    }
  
    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);

40
    }
/>
?

17/51


1/13/2016

40

41
42

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

    }
 
}

Đây là hình ảnh HelloServlet vừa được tạo ra với đầy lỗi. Các lỗi này đơn giản chỉ là bạn chưa khai báo thư
viện Servlet.

Cần khai báo thư viện Servlet, các thư viện này chỉ là các thư viện Runtime của Servlet, nó có sẵn trên các Web
Server, ở đây chúng ta dùng Tomcat, vì vậy hãy khai báo chúng.
 Nhấn phải chuột vào Project chọn Properties:

/>
18/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

/>
19/51


1/13/2016


Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

Lúc này project đã không còn thông báo lỗi.
Tiếp theo bạn cần khai báo HelloServlet và đường dẫn để truy cập vào nó trong web.xml. Bạn cần thêm đoạn
cấu hình sau:
1
2
3

<!‐‐ Định nghĩa servlet có tên helloServlet, gắn với class HelloServlet ‐‐>
<servlet>
   <servlet‐name>helloServlet</servlet‐name>

4
   <servlet‐class>org.o7planning.tutorial.servlet.HelloServlet</servlet‐class>
/>
?

20/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

4
5
6
7
8

9
10
11

   <servlet‐class>org.o7planning.tutorial.servlet.HelloServlet</servlet‐class>
</servlet>
 
<!‐‐ Định nghĩa đường dẫn truy cập vào Servlet này ‐‐>
<servlet‐mapping>
   <servlet‐name>helloServlet</servlet‐name>
   <url‐pattern>/hello</url‐pattern>
</servlet‐mapping>

web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

?
<?xml version="1.0" encoding="UTF‐8"?>
<web‐app xmlns:xsi=" />    xmlns=" />    xsi:schemaLocation=" />    id="WebApp_ID" version="3.0">
    <display‐name>ServletTutorial</display‐name>
 
     
    <servlet>
        <servlet‐name>helloServlet</servlet‐name>
        <servlet‐class>org.o7planning.tutorial.servlet.HelloServlet</servlet‐class>
    </servlet>
 
    <servlet‐mapping>
        <servlet‐name>helloServlet</servlet‐name>
        <url‐pattern>/hello</url‐pattern>

    </servlet‐mapping>
 
 
    <welcome‐file‐list>
        <welcome‐file>index.html</welcome‐file>
        <welcome‐file>index.htm</welcome‐file>
        <welcome‐file>index.jsp</welcome‐file>
        <welcome‐file>default.html</welcome‐file>
        <welcome‐file>default.htm</welcome‐file>
        <welcome‐file>default.jsp</welcome‐file>
    </welcome‐file‐list>
 
 
</web‐app>

Chạy lại project bằng cách nhấn phải chuột chọn:
Run As/Run on Server

/>
21/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

http://localhost:8080/ServletTutorial/hello

Bạn có thể xem nguyên tắc hoạt động của nó theo hình minh họa dưới đây:


/>
22/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

Khi một Servlet được gọi tới, tùy tình huống mà một trong hai phương thức doGet(..) hoặc doPost(..) sẽ được
gọi.
Cụ thể khi nào gọi doGet(..) và khi nào gọi doPost(..) chúng ta sẽ bàn sau.
Trong doGet() hoặc doPost() bạn có thể lấy ra đối tượng ServletOutputStream, đây là luồng đầu ra gửi dữ liệu
về trình duyệt của người dùng. Gọi ServletOutputStream.println(..) để ghi các dòng text vào trong luồng.
1
2
3

// Luồng đầu ra, gửi dữ liệu về phía trình duyệt của người dùng.
 
ServletOutputStream out = response.getOutputStream();

?

9­ Tham số khởi tạo Servlet
Trong khi khai báo servlet trong web.xml bạn có thể truyền các tham số khởi tạo cho nó.
/>
23/51


1/13/2016


Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

InitParamServlet.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

56
57

?
package org.o7planning.tutorial.servlet;
 
import java.io.IOException;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class InitParamServlet extends HttpServlet {
 
    private static final long serialVersionUID = 1L;
 
    private String emailSupport1;
 
    public InitParamServlet() {
    }
 
    // Method này luôn luôn được gọi 1 lần ngay sau khi đối tượng Servlet được tạo ra.
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
 
        // Lấy ra thông tin tham số khởi tạo của Servlet

        // (Theo Cấu hình của Servlet này trong web.xml).
        this.emailSupport1 = config.getInitParameter("emailSupport1");
    }
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        // Bạn có thể lấy ra tham số khởi tạo theo cách khác.
        String emailSupport2 = this.getServletConfig().getInitParameter("emailSupport2"
 
        ServletOutputStream out = response.getOutputStream();
 
        out.println("<html>");
        out.println("<head><title>Init Param</title></head>");
 
        out.println("<body>");
        out.println("

Init Param

");
        out.println("

emailSupport1 = " + this.emailSupport1 + "

");
        out.println("

emailSupport2 = " + emailSupport2 + "

");
        out.println("</body>");
        out.println("<html>");
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }
 

}

Cấu hình trong web.xml:
?
1
<servlet>
2
    <servlet‐name>initParamServlet</servlet‐name>
3
    <servlet‐class>org.o7planning.tutorial.servlet.InitParamServlet</servlet‐class>
4
     
/>24/51


1/13/2016

Hướng dẫn lập trình Java Servlet cho người mới bắt đầu

4
5
6
7
8
9
10
11
12
13
14

15
16
17
18
19
20
21

     
    <init‐param>
        emailSupport1</param‐name>
        </param‐value>
    </init‐param>
 
    <init‐param>
        emailSupport2</param‐name>
        </param‐value>
    </init‐param>
 
</servlet>    
 
 
<servlet‐mapping>
    <servlet‐name>initParamServlet</servlet‐name>
    <url‐pattern>/initParam</url‐pattern>
</servlet‐mapping>

web.xml

?

1
<?xml version="1.0" encoding="UTF‐8"?>
2
<web‐app xmlns:xsi=" />3
    xmlns=" />4
    xsi:schemaLocation=" />5
    id="WebApp_ID" version="3.0">
6
    <display‐name>ServletTutorial</display‐name>
7
 
8
     
9
    <servlet>
10
        <servlet‐name>helloServlet</servlet‐name>
11
        <servlet‐class>org.o7planning.tutorial.servlet.HelloServlet</servlet‐class>
12
    </servlet>
13
 
14
    <servlet‐mapping>
15
        <servlet‐name>helloServlet</servlet‐name>
16
        <url‐pattern>/hello</url‐pattern>
17

    </servlet‐mapping>
18
 
19
 
20
    <servlet>
21
        <servlet‐name>initParamServlet</servlet‐name>
22
        <servlet‐class>org.o7planning.tutorial.servlet.InitParamServlet23
         
24
        <init‐param>
25
            emailSupport1</param‐name>
26
            </param‐value>
27
        </init‐param>
28
         
29
        <init‐param>
30
            emailSupport2</param‐name>
31
            </param‐value>
32

        </init‐param>
33
         
34
    </servlet>    
35
     
36
     
37
    <servlet‐mapping>
38
        <servlet‐name>initParamServlet</servlet‐name>
39
        <url‐pattern>/initParam</url‐pattern>
40
    </servlet‐mapping>
41
 
42
 
43
     
44
    <welcome‐file‐list>
45
        <welcome‐file>index.html</welcome‐file>
/>25/51



×