65
Trang 1 TÌM HIỂU CÔNG NGHỆ SERVLET + JSP TRÊN ECLIPSE + TOMCAT + MYSQL Nhóm 7: Hồng Thị Mỹ Anh – 11110002 Đậu Thị Ngọc Linh – 11110068 BÁO CÁO GIỮA KỲ MÔN CC & MT PHÁT TRIỂN PHẦN MỀM

JSP Servlet

Embed Size (px)

Citation preview

Page 1: JSP Servlet

Trang 1

TÌM HIỂU CÔNG NGHỆ SERVLET + JSP TRÊN ECLIPSE + TOMCAT + MYSQL

Nhóm 7:Hồng Thị Mỹ Anh – 11110002Đậu Thị Ngọc Linh – 11110068

BÁO CÁO GIỮA KỲMÔN CC & MT PHÁT TRIỂN PHẦN MỀM

Page 2: JSP Servlet

Trang 205/01/2023

Khái niệm

Là công cụ hỗ trợ lập trình đa ngôn ngữ:

C/C++/C#, php, Java,…

Có thể kết hợp nhiều công cụ hỗ trợ khác.

Gồm 3 phần: Platform, JDT, PDE.

Eclipse

Page 3: JSP Servlet

Trang 305/01/2023

Dự án Eclipse ban đầu được IBM thành lập vào 11/2001 và được hiệp hội các nhà cung cấp phần mềm hỗ trợ.

Quỹ Eclipse thành lập vào 1/2004 là tổ chức phi lợi nhuận độc lập hoạt động như người quản lý của cộng đồng Eclipse. Hiện nay, cộng đồng Eclipse bao gồm các cá nhân và các tổ chức từ nhiều lĩnh vực của công nghiệp phần mềm.

Lịch sử phát triển

Page 4: JSP Servlet

Trang 405/01/2023

Lịch sử phát triển

Page 5: JSP Servlet

Trang 505/01/2023

Các phiên bản của Eclipse với version mới nhất

Page 6: JSP Servlet

Trang 605/01/2023

Các phiên bản của Eclipse cho từng ứng dụng riêng biệt:

Page 7: JSP Servlet

Trang 705/01/2023

Các phiên bản của Eclipse cho từng ứng dụng riêng biệt:

Page 8: JSP Servlet

Trang 805/01/2023

Ưu nhược điểm của Eclipse Ưu điểm: Quick Fix (Sửa lỗi nhanh)

Eclipse của IBM - IBM có thư viện SWT để tạo

ứng dụng, Eclipse được phát triển trên thư viện

này.

Nhiều plugin,... hỗ trợ hầu như đầy đủ các loại

ứng dụng Java.

Eclipse hỗ trợ tốt trong các dự án lớn.

Page 9: JSP Servlet

Trang 905/01/2023

Nhược điểm:Nhiều plugin nhưng đôi lúc gây khó khăn khi

config.

Thiếu tính nhất quán vì có nhiều plugin quá.

Eclipse nhiều plugin nhưng chất lượng đa phần là

không đạt.

Ưu nhược điểm của Eclipse

Page 10: JSP Servlet

Trang 1005/01/2023

Apache TomcatKhái niệmLà một Java Servlet được phát triển bởi Apache Software Fondation(ASF). Tomcat thi hành các ứng dụng Java Servlet và JavaServer Pages (JSP) từ Sun Microsystems, và cung cấp một máy chủ HTTP cho ngôn ngữ Java thuần túy để thực thi các chương trình lệnh viết bằng ngôn ngữ Java.

Page 11: JSP Servlet

Trang 1105/01/2023

Tình trạng phát triển

Các thành viên của ASF và các tình nguyện viên riêng lẻ vẫn đang phát triển và duy trì Tomcat.

Phiên bản Tomcat đầu tiên được công bố là phiên bản 3.0.x (các phiên bản trước không được Sun phát hành rộng rãi ra ngoài).

Phiên bản mới nhất của Apache Tomcat là 8.0.15, phát hành vào ngày 07/11/2014.

Page 12: JSP Servlet

Trang 1205/01/2023

Thành phầnTomcat phiên bản 4.x xuất hiện bao gồm Catalina (thiết kế lại của bộ Servlet) và Coyote (một trình kết nối HTTP), Jasper (một thiết kế lại của bộ công cụ JSP)

CatalinaCatalina chính là bộ servlet container của Tomcat. Catalina thực hiện các chi tiết kỹ thuật của Sun Microsystems' đối với servlet và các trang JavaServer (JSP). Người đã xây dựng lên Catalina là Craig McClanahan.

Page 13: JSP Servlet

Trang 1305/01/2023

CoyoteCoyote là bộ phận kết nối HTTP của Tomcat, có cung cấp giao thức HTTP 1.1 cho các máy chủ web hoặc các ứng dụng khác. Coyote nghe ngóng các kết nối đến nó trên cổng TCP được định sẵn trên máy chủ và sau đó trả lời các yêu cầu đến Tomcat để thực thi các yêu cầu và gửi lại trả lời cho máy trạm đã yêu cầu.

Page 14: JSP Servlet

Trang 1405/01/2023

JasperJasper là công cụ JSP của Tomcat. Tomcat 5.x sử dụng Jasper 2 là một thực thi các trang JSP được chỉ rõ của Sun Microsystems. Jasper phân tích các file JSP để biên dịch chúng trong code Java như là các servlets. Tại thời điểm thực thi, Jasper có khả năng tự động dò ra các file JSP và biên dịch chúng.

Page 15: JSP Servlet

Trang 1505/01/2023

MySQL là hệ quản trị cơ sở dữ liệu(CSDL) mã nguồn mở nằm trong nhóm LAMP (Linux – Apache -MySQL – PHP) ,vì MySQL được tích hợp sử dụng chung với apache, PHP. MySQL hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.

MySQLKhái niệm

Page 16: JSP Servlet

Trang 1605/01/2023

• MySQL là một phần mềm quản trị CSDL dạng server-based (gần tương đương với SQL Server của Microsoft).

• MySQL có cơ chế phân quyền người sử dụng riêng, mỗi người dùng có thể được quản lý một hoặc nhiều CSDL khác nhau, mỗi người dùng có một tên truy cập và mật khẩu tương ứng để truy xuất đến CSDL.

Một số đặc điểm của MySQL

Page 17: JSP Servlet

Trang 1705/01/2023

• MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu

• Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập và mật khẩu của tài khỏan có quyền sử dụng CSDL đó.

Một số đặc điểm của MySQL

Page 18: JSP Servlet

Trang 1805/01/2023

• Ưu điểm : Mysql có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL chính vì thế nên MySQL được sử dụng và hỗ trợ của những lập trình viên yêu thích mã nguồn mở.

Ưu nhược điểm của MySQL

Page 19: JSP Servlet

Trang 1905/01/2023

• Khuyết điểm: Không bao quát toàn bộ những câu truy vấn cao cấp như SQL Server. Vì vậy Mysql chỉ đáp ứng việc truy xuất đơn giản trong quá trình vận hành của website, thích hợp cho các ứng dụng có truy cập CSDL trên internet.

Ưu nhược điểm của MySQL

Page 20: JSP Servlet

Trang 2005/01/2023

Servlet là gì?

• Nhận client request.• Lấy thông tin từ request.• Xử lý nghiệp vụ và phát sinh nội dung(bằng

cách truy cập database,….).• Tạo và gửi request tới client hoặc gửi request

tới servlet hoặc JSP khác.

Page 21: JSP Servlet

Trang 2105/01/2023

Ưu điểm Servlet

• Có nhiều web servers hỗ trợ servlet.• Truy cập được mọi java APIs.• Độ tin cậy cao,hiệu năng tốt,dễ mở rộng.• Độc lập flatform và server.• An toàn.• Hầu hết server cho phép load lại server khi có

sự thay đổi.

Page 22: JSP Servlet

Trang 2205/01/2023

Mô hình Servlet request và response

Page 23: JSP Servlet

Trang 2305/01/2023

Request và response

• Request là gì?o Thông tin được gửi từ client đến server.

Ai tạo ra request. Dữ liệu người dùng nhập vào và gửi đi. HTTP header.

• Response là gì?o Thông tin được gửi đến client từ server.

Dữ liệu text,image…HTTP headers,cookies…..

Page 24: JSP Servlet

Trang 2405/01/2023

HTTP Get và Post

• Các client requests thông dụng nhất:o HTTP Get & HTTP Post.

• Get requests:o Thông tin người dùng nhập vào đính kèm trong URL

dưới dạng 1 query string.o Chỉ gửi được lượng dữ liệu giới hạn.

• Post requests:o Thông tin người dùng nhập vào được gửi dưới dạng dữ

liệu(không đính kèm vào URL).o Gửi được lượng dữ liệu bất kỳ.

Page 25: JSP Servlet

Trang 2505/01/2023

Kiến trúc của servlet

Page 26: JSP Servlet

Trang 2605/01/2023

Vòng đời servlet

Page 27: JSP Servlet

Trang 2705/01/2023

Thiết lập servlet

• Phương thức init có tham số kiểu servletConfig.

• ServletConfig có phương thức đọc tham số được thiết lập web.xml

• Để thiết lập,viết đè phương thức init(),nhưng init(ServletConfig) thì không.

Page 28: JSP Servlet

Trang 2805/01/2023

Hàm service()

• Gọi hàm service của servlet và truyền hai đối tượng truy vấn và trả lời (request, reponse objects) vào hàm này. Hàm service, sẽ xem truy vấn được gửi đến tương ứng với phương thức HTTP nào để từ đó phân bổ (dispatch) truy vấn này đến phương thức xử lý tương ứng của servlet, tức các phương thức doXXX đề cập dưới đây.

Page 29: JSP Servlet

Trang 2905/01/2023

Hủy servlet

• Loại bỏ servlet khi:o Server shutdown.o Servlet không hoạt động trong thời gian dài.o Server cần giải phóng tài nguyên.

• Trước khi giải phóng phương thức destroy()sẽ được goi.o Có thể sử dụng để xoa,đóng kết nối cơ sở dữ liệu.

Page 30: JSP Servlet

Trang 3005/01/2023

Các bước hiện thực servlet

• Tạo 1 lớp kế thừa HttpServlet• Ghi đè phương thức doGet() hay doPost()• HttpServletRequest

o getParameter(“name”);• HttpServletResponse

o Thiết lập nội dungo Lấy đối tượng PrintWriter.oGửi text về client nhờ PrintWriter.

Page 31: JSP Servlet

Trang 3105/01/2023

Page 32: JSP Servlet

Trang 3205/01/2023

Lấy thông tin từ truy vấn-Request

Page 33: JSP Servlet

Trang 3305/01/2023

Lấy dữ liệu

• Sử dụng đối tượng HttpServletRequest• Lấy giá trị thông tin phần header

hrd:getHeader(“hdr”).• Lấy tất cả các tên biến chứa thông tin trong

phần header:getHeaderNames().• Các phương thức cho các thông tin

khác:getCookies,getContentType,getMethod…

Page 34: JSP Servlet

Trang 3405/01/2023

Nhập dữ liêu từ form

• Dùng html form để gửi dữ liệu lên server.<form action=……,method

=….>…</form>o action:địa chỉ trang web hay servlet nhận dữ liệu

của form.o method:phương thức gửi dữ liệu lên trang web xử

lý ở server.(Get hay Post).

Page 35: JSP Servlet

Trang 3505/01/2023

Ví dụ về get

Page 36: JSP Servlet

Trang 3605/01/2023

Lấy giá trị gửi lên từ client

• HttpServletRequest requesto Lấy giá trị của x:request.getParameter(“x”);o Lấy nhiều giá trị của x:

request.getParameterValues(“x”);o Lấy các tên biến gửi lên từ client:Request.getParameterNames();

Page 37: JSP Servlet

Trang 3705/01/2023

Gửi trả dữ liệu về client-response

Page 38: JSP Servlet

Trang 3805/01/2023

Thiết lập thông tin trạng thái đáp trả

• Sử dụng HttpServletResponseo setStatus(int sc):o sendError(sc),sendError(sc,message):sử dụng khi

có lỗi.Ví dụ:400,không tìm thấy.o sendRedirect(String location):chuyển trang.Ví dụ: response.sendRedirect(“hello.html”);

Page 39: JSP Servlet

Trang 3905/01/2023

Thiết lập responseHeader

• Sử dụng HTTPServletResponse:o setHeader(String hdr,String

value),setIntHeader(String hdr,int value).oVídụ:response.setHeader(“refresh”,”10;url=http://

127.0.0.1/sv.html”);• addHeader(String hdr,String

value),addIntHeader(String hdr,int value).

Page 40: JSP Servlet

Trang 4005/01/2023

Các responseHeader khác

• Lớp HTTPServletResponse cung cấp các setters cho một số header khác:o setContentTypeo setContentLengtho setDateHeadero setCharacterEncoding

• Ngoài ra còn có:addCookies(Cookie),sendRedirect(String url).

Page 41: JSP Servlet

Trang 4105/01/2023

Trang JSP là gì?

• Là 1 tài liệu text có thể trả về cả static và dynamic content cho trình duyệt.

• Static content và dynamic content có thể được ghép lẫn với nhau.

• Static content:HTML,XML,Text.• Dynamic content:

oMã java,các thẻ Custom tags.o Các thuộc tính hiển thị của javabean.

Page 42: JSP Servlet

Trang 4205/01/2023

Trang JSP là gì?

• JSP là mở rộng của Servlet.trong thực tế, JSP và servlet được sử dụng đồng thời để phát triển ứng dụng.

• Trong mô hình MVC,JSP xử lý phần view,Servlet xử lý phần controller.

Page 43: JSP Servlet

Trang 4305/01/2023

Ưu điểm của JSP

• Trong Servlet,viết thẻ HTML không tách biệt với code ->sửa đổi giao diện phức tạp.

• JSP được phát triển để khắc phục điều này.o Tách biệt nội dung và cách trình bày.oĐơn giản hóa việc phát triển ứng dụng web với

JSP,Javabean,Custom tags.oHỗ trợ tái sử dụng phần mềm qua các

components(javaBean,Custom tags).o Tự động biên dịch lại các trang JSP khi có sự thay đổi.

Page 44: JSP Servlet

Trang 4405/01/2023

Vòng đời của JSP

Page 45: JSP Servlet

Trang 4505/01/2023

JSP làm việc như thế nào?

Page 46: JSP Servlet

Trang 4605/01/2023

Các bước xử lý trang JSP

Page 47: JSP Servlet

Trang 4705/01/2023

Ví dụ HelloWorld.jsp

<html><head><title>Hello world</title></head><body>

<% out.println("Hello World"); %></body></html>

Page 48: JSP Servlet

Trang 4805/01/2023

Các thành phần chính của JSP

• Dẫn hướng_Directo Cho phép điều khiển cấu trúc servlet

• Các phần tử kịch bản-script elementso Dùng viết code java.

• Hành động-Actiono Dùng để kiểm soát các servlet.

Page 49: JSP Servlet

Trang 4905/01/2023

Ví dụ

Page 50: JSP Servlet

Trang 5005/01/2023

Các phần tử Scripting(1)

• Có 3 cách nhúng code vào HTML.o Thẻ khai báo (declaration)o Thẻ văn lệnh con (scriptlet)o Thẻ biểu thức (expression) 

Page 51: JSP Servlet

Trang 5105/01/2023

Các phần tử Scripting(2)

•  Thẻ biểu thức (expression) : dùng để hiển thị kết quả của một biểu thức.

• Cú pháp:<% = expression%> hay<jsp:expression>expression</jsp:expression>• Ví dụ: <body>

<p> Today's date: <%= (new java.util.Date()).toLocaleString()%> </p> </body>

Page 52: JSP Servlet

Trang 5205/01/2023

Các phần tử Scripting(3)

• Thẻ khai báo (declaration):định nghĩa biến hoặc phương thức trong JSP.

• Cú pháp: <%! declaration; %>Hay

<jsp:declaration> code fragment </jsp:declaration>• Ví dụ:

<%! int i = 0; %> Gia tri cua i la:<%= i %>

Page 53: JSP Servlet

Trang 5305/01/2023

Các phần tử Scripting(4)

• Thẻ văn lệnh con (scriptlet): dùng để chứa code java.

• Cú pháp: <% code fragment %>Hay <jsp:scriptlet> code fragment

</jsp:scriptlet>• Ví dụ: <body> Hello World!<br/> <% out.println("Your IP address is " + request.getRemoteAddr()); %> </body>

Page 54: JSP Servlet

Trang 5405/01/2023

JSP directives(1)

• Cú pháp:<%@ directive attribute="value" %>• Có 3 loại thẻ chính:o Chỉ thị page.o Chỉ thị include.o Chỉ thị taglib.

Page 55: JSP Servlet

Trang 5505/01/2023

JSP directives(2)

• Chỉ thị page:có nhiều tuỳ chọn, trong đó có :- import : nhập một gói (package) java. Chỉ thị này sẽ được chuyển thành chỉ dẫn import trong servlet.- contentType : định nghĩa loại nội dung của trang sẽ được phát sinh.- pageEncoding : định nghĩa chuẩn mã hoá trang phát sinh sử dụng.- language : định nghĩa ngôn ngữ sử dụng.

Page 56: JSP Servlet

Trang 5605/01/2023

JSP directives(3)

• Cú pháp: <%@ page ... %>• Ví dụ: <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.List, java.util.Date" language="java" %><html><tilte> JSP Elements</title><head><h1>JSP Elements</h1></head><body></body> </html>

Page 57: JSP Servlet

Trang 5705/01/2023

JSP directives(4)

•  Chỉ thị include : chỉ định cho trình biên dịch gộp tập tin vào trang.

• Cú pháp: <%@ include ... %>Hay  <jsp:include ... />

Page 58: JSP Servlet

Trang 5805/01/2023

JSP directives(5)

• Chỉ thị taglib : khai báo việc dùng một thư viện thẻ trong trang.

• Cú pháp: <%@ taglib ... %>• Ví dụ:<%@taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

Page 59: JSP Servlet

Trang 5905/01/2023

Các JSP action chuẩn(1)

• <jsp: forward>:cho phép jsp gửi request hiện tại đến servlet hay jsp khác.o Cú pháp: <jsp:forward page="Relative URL" />o Ví dụ: <jsp:forward page="date.jsp" />

• <jsp:param>: được sử dụng là thuộc tính con của các action jsp:include,jsp:plugin….o Cú pháp:

Page 60: JSP Servlet

Trang 6005/01/2023

Các JSP action chuẩn(2)

•  <jsp:plugin> : thực thi hay hiển thị một đối tượng, đối tượng này có thể là một applet hay bean. 

• <jsp:use bean>:khởi tạo hay tái sử dụng javabean đã tồn tại để dùng trong trang jsp.o <jsp:useBean id="name" class="package.class" />

• <jsp:setProperty>:gán giá trị cho một thuộc tính của java bean.o <jsp:setProperty name = "myName"property =

"someProperty" .../>

Page 61: JSP Servlet

Trang 6105/01/2023

Các JSP action chuẩn(3)

• <jsp:getProperty>:lấy giá trị một thuộc tính của một JavaBean.o <jsp:getProperty property="username"

name="userBean" />• Ví dụ:

Page 62: JSP Servlet

Trang 6205/01/2023

Ví dụ(1)

Page 63: JSP Servlet

Trang 6305/01/2023

Ví dụ(2)

Page 64: JSP Servlet

Trang 6405/01/2023

DEMO CHƯƠNG TRÌNH

Page 65: JSP Servlet

Trang 6505/01/2023

Cảm ơn Thầy và các bạn đã theo dõi!