bai1 gioi thieu_servlet_va_jsp_8952

Post on 14-Jun-2015

726 Views

Category:

Education

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

Serlvet

TRANSCRIPT

Bài 1. Giới thiệu về

Servlet & JSP

Nội dung

1. Một số khái niệm

2. Giới thiệu về Servlet và JSP

3. Các bước phát triển và triển khai ứng dụng Web

4. File WAR (Web Application Archive)

5. Cấu hình ứng dụng web

6. Web container

2

Web server và client

Số lượng: vô cùng lớn

Mục tiêu:

Xây dựng ứng dụng được truy cập trên toàn cầu

3

Web server và client

4

Server làm những gì?

5

Client làm những gì?

6

HTML, HTTP protocol

7

HTTP Protocol

Giao thức HTTP chạy trên TCP/IP

TCP: đảm bảo file được từ nút mạng này tới nút mạng khác nguyên vẹn

IP: chịu trách nhiệm định tuyến, dịch chuyển gói tin

Cấu trúc HTTP: chuỗi Request và Response

Browser: request

Server: response

8

HTTP Protocol

9

Request:

POST hay GET

Trang request (url)

Tham số

Response

Mã trạng thái

Context type: text, pic..

Nội dung

Phương thức GET và POST

GET POST

Lịch sử,

bookmark

Tham số hiển thị trên URL,

có thể bookmark

Tham số không hiển thị trên

URL, không thể bookmark

Loại dữ

liệu

Chỉ kí tự ASCII Không giới hạn

Giới hạn

về độ dài

Có, vì độ dài URL có giới

hạn, thường 2048 kí tự

Không giới hạn

Sử dụng Không sử dụng khi gửi thông

tin bí mật: password

Sử dụng để gửi các thông tin

bí mật: passowrd

10

GET:

http://phucanh.vn/category-2/laptops.html ?min=10000000&max=12000000

URL

11

Website vs web application

12

2. Giới thiệu về Servlet và JSP

Servlet và JSP: các web component

Cho phép tạo ra các nội dung động

13

Web Components & Container

Các web components chạy trên 1 Web container

Các web containers phổ biến: Tomcat và Resin

Web container cung cấp các dịch vụ hệ thống cho các Web components

Request dispatching, security, và quản lý vòng đời

14

Web Application & Components

Web Application là 1 gói triển khai, gồm:

Web components (Servlets và JSP)

Tài nguyên tĩnh như images

Helper classes (sử dụng bởi web components)

Thư viện Libraries

Deployment descriptor (web.xml file)

Web Application có thể được tổ chức thành

Phân cấp các thư mục và files (dạng chưa đóng gói -unpacked form) hoặc

*.WAR file: có fân cấp như trên (dạng đóng gói-packed form)

15

Web Request Handling

16

3. Các bước phát triển và triển khai ứng dụng Web

17

Các bước phát triển và triển khai ứng dụng Web

Viết code (và biên dịch) cho các Web component Servlet/JSP sử dụng trong web component

Tạo các tài nguyên tĩnh (Images, các trang HTML)

Viết file deployment descriptor (web.xml)

Build ứng dụng Web (Tạo file *.war hoặc thư mục dạng chưa đóng gói nhưng triển khai được)

Triển khai ứng dụng Web trên 1 Web container

Web clients có thể truy cập ứng dụng qua URL

18

Development Tree Structure

Tạo cấu trúc cây thư mục (Development Tree Structure) cho việc viết ứng dụng web

Thư mục gốc bao gồm:

src: Mã nguồn Java cho các servlets và các JavaBeans

web: các trang JSP, HTML, images

Có thể sử dụng IDE Netbeans để hỗ trợ

19

Ví dụ 1: cấu trúc cây project ch1

ch1

src

Ch1Servlet.java

web

WEB-INF

web.xml

20

ch1

websrc

WEB-INF

web.xml

Ch1Servlet.java

Ch1Servlet.java

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class Ch1Servlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse

response) throws ServletException, IOException {

PrintWriter out = response.getWriter();

java.util.Date today = new java.util.Date();

out.println("<html> " + "<body> "

+ "<h1 align=center>Servlet</h1>"

+ "<br>" + today + "</body>" + "</html>" );

}

}21

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<servlet>

<servlet-name>Chuong 1 Servlet</servlet-name>

<servlet-class>Ch1Servlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Chuong 1 Servlet</servlet-name>

<url-pattern>/Serv</url-pattern>

</servlet-mapping>

</web-app>

22

Biên dịch & triển khai trong Netbeans

Biên dịch

Các file được biên dịch thành file .class

23

ch1

web

dist

WEB-INF

web.xml

ch1.war

build

classes

Ch1Servlet.class

Request từ client

Trên trình duyệt gõ: http://localhost:8084/ch1/Serv

24

Cấu trúc triển khai trong Tomcat

25

Request từ client

Run Tomcat

Trên trình duyệt gõ

http://localhost:8080/ch1/Serv

26

Nhận xét

Việc chèn thẻ HTML trong câu lệnh println là dễ dàng?

Giải pháp: JSP

<html>

<body>

<%=new

java.util.Date() %>

</body>

</html>

Ý nghĩa của file web.xml?27

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<servlet>

<servlet-name>Chuong 1 Servlet</servlet-name>

<servlet-class>Ch1Servlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Chuong 1 Servlet</servlet-name>

<url-pattern>/Serv</url-pattern>

</servlet-mapping>

</web-app>

28

Ví dụ 2

Ví dụ hello2 trong tutorial của J2EE 1.4

Mục đích:

Tạo 2 servlet có liên kết với nhau

GreetingServlet chuyển yêu cầu tới ResponseServlet

Tài nguyên tĩnh

File đóng gói war

Hiểu hơn về file web.xml

29

http://localhost:8080/hello2/greeting

30

31

Cấu trúc cây hello2

Hello2

src/servlets

GreetingServlet.java

ResponseServlet.java

web

WEB-INF

web.xml

duke.waving.gif

build.xml

32

Cấu trúc sau khi biên dịch

Hello2

src

web

build.xml

build

WEB-INF

classes

GreetingServlet.class

ResponseServlet.class

web.xml

duke.waving.gif33

GreetingServlet

String username = request.getParameter("username");if ((username != null) && (username.length() > 0)) {

RequestDispatcher dispatcher =getServletContext()

.getRequestDispatcher("/response");

if (dispatcher != null) {dispatcher.include(request, response);

}}

34

ResponseServlet

public class ResponseServlet extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

PrintWriter out = response.getWriter();

String username = request.getParameter("username");

if ((username != null) && (username.length() > 0)) {

out.println("<h2>Hello, " + username + "!</h2>");

}

}

35

web.xml

<servlet>

<servlet-name>GreetingServlet</servlet-name>

<servlet-class>servlets.GreetingServlet</servlet-class>

</servlet>

<servlet>

<servlet-name>ResponseServlet</servlet-name>

<servlet-class>servlets.ResponseServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>GreetingServlet</servlet-name>

<url-pattern>/greeting</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>ResponseServlet</servlet-name>

<url-pattern>/response</url-pattern>

</servlet-mapping>36

4. Web Application Archive (*.WAR)

37

Ứng dụng Web

Ứng dụng Web có thể được triển khai ở 2 dạng

Một file *.war

Một thư mục, cấu trúc giống file *.war file (thư mục build)

Sử dụng dạng file *.war khi muốn triển khai trên 1 remote machine

38

File *.WAR là gì?

Là gói triển khai được trên web container

Tương tự như file *.jar

Chứa tất cả thành phần cần thiết:

Web components (servlets hoặc JSP)

Các Class tiện ích

Nội dung tĩnh (HTML, image, …)

Các lớp phía Client (applets và các lớp tiện ích)

Có nội dung giống như thư mục build

39

Cấu trúc thư mục của 1 file *.WAR

40

Cấu trúc thư mục của 1 file *.WAR

41

Tạo 1 file *.WAR như thế nào?

3 cách khác nhau:

Sử dụng IDE (NetBeans)

Sử dụng công cụ ant

“asant create-war” (J2EE 1.4 tutorial)

Sử dụng lệnh “jar cvf <filename>.war .” khi ở trong thư mục build

42

Ví dụ: Tạo file hello2.war với lệnh “asant create-war”

C:\j2eetutorial14\examples\web\hello2>asant create-war

Buildfile: build.xml

...

create-war:

[echo] Creating the WAR....

[delete] Deleting: C:\j2eetutorial14\examples\web\hello2\assemble\war\hello2.war

[delete] Deleting directory C:\j2eetutorial14\examples\web\hello2\assemble\war\WEB-INF

[copy] Copying 1 file to C:\j2eetutorial14\examples\web\hello2\assemble\war\WEB-INF

[copy] Copying 2 files to C:\j2eetutorial14\examples\web\hello2\assemble\war\WEB-INF\classes

[war] Building war: C:\j2eetutorial14\examples\web\hello2\assemble\war\hello2.war

[copy] Copying 1 file to C:\j2eetutorial14\examples\web\hello243

Ví dụ: Tạo file hello2.war sử dụng lệnh jar

C:\j2eetutorial14\examples\web\hello2\build>jar cvf hello2.war .

added manifest

adding: duke.waving.gif(in = 1305) (out= 1295)(deflated 0%)

adding: servlets/(in = 0) (out= 0)(stored 0%)

adding: servlets/GreetingServlet.class(in = 1680) (out= 887)(deflated 47%)

adding: servlets/ResponseServlet.class(in = 1090) (out= 572)(deflated 47%)

C:\j2eetutorial14\examples\web\hello2\build>jar xvf hello2.war

created: META-INF/

extracted: META-INF/MANIFEST.MF

extracted: duke.waving.gif

created: servlets/

extracted: servlets/GreetingServlet.class

extracted: servlets/ResponseServlet.class

44

Thư mục WEB-INF

Chứa:

web.xml : Web application deployment descriptor

Các file JSP tag library descriptor

Classes : là thư mục chứa các lớp phía server: servlets, lớp tiện ích, các JavaBeans

lib : là thư mục chứa các file thư viện JAR (tag libraries, các thư viện tiện ích được gọi bởi các lớp phía server)

45

5. Cấu hình ứng dụng Web

Thông số cấu hình được đặc tả trong file web.xml (Web Applications Deployment Descriptor)

46

Prolog (web.xml)

Tất cả tài liệu XML cần có prolog<?xml version="1.0" encoding="UTF-8"?>

<web-app

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-

instance"

xsi:schemaLocation=http://java.sun.com/xml/n

s/javaee

http://java.sun.com/xml/ns/javaee/web-

app_3_0.xsd version="3.0">

47

Alias Paths (web.xml)

Khi 1 Servlet container nhận 1 request, nó cần biết Web component nào trong ứng dụng Web sẽ xử lý request này.

Thực hiện map URL path trong request tới 1 Web component

Alias Path có thể có 2 dạng

/alias-string (cho servlet) hoặc

/*.jsp (cho JSP)

48

web.xml

<servlet>

<servlet-name>GreetingServlet</servlet-name>

<servlet-class>servlets.GreetingServlet</servlet-class>

</servlet>

<servlet>

<servlet-name>ResponseServlet</servlet-name>

<servlet-class>servlets.ResponseServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>GreetingServlet</servlet-name>

<url-pattern>/greeting</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>ResponseServlet</servlet-name>

<url-pattern>/response</url-pattern>

</servlet-mapping>49

6. Web Container

50

51

52

Vai trò của Container

Hỗ trợ giao tiếp giữa servlet và web server

Quản lý vòng đời của các servlet: khởi tạo, gọi, hủy

Hỗ trợ đa tuyến

Cấu hình ứng dụng web dễ dàng qua web.xml

Hỗ trợ dịch các trang JSP

53

Thảo luận

54

top related