Download - Servlet + JSP on TomCat mysql
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
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
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
Trang 405/01/2023
Lịch sử phát triển
Trang 505/01/2023
Các phiên bản của Eclipse với version mới nhất
Trang 605/01/2023
Các phiên bản của Eclipse cho từng ứng dụng riêng biệt:
Trang 705/01/2023
Các phiên bản của Eclipse cho từng ứng dụng riêng biệt:
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.
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
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.
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.
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.
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.
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.
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
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
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
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
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
Trang 2005/01/2023
So sánh MySQL, SQL Server và Oracle Tên Microsoft SQL
Server MySQL Oracle
Miêu tả Microsofts DBMS quan hệ
Sử dụng rộng rãi mã nguồn mởRDBMS
Rộng rãi được sử dụng RDBMS
Website www.microsoft.com/sqlserver
www.mysql.com www.oracle.com/us/products/database
Tài liệu kỹ thuật
www.microsoft.com/sqlserver/en/us/default.aspx
dev.mysql.com/doc www.oracle.com/technetwork/indexes/documentation/index.html
Trang 2105/01/2023
Nhà phát triển
Microsoft Oracle Oracle
Phiên bản đầu tiên
1989 1995 1980
Sư dung Thương mai Nguồn mở Thương mai Cơ sở dữ liệu như một dịch vu (DBaaS)
không không không
Ngôn ngữ thực hiện
C ++ C và C ++ C và C ++
Server operating systems
Windows FreeBSDLinuxOS XSolarisWindows
AIXHP-UXLinuxOS XSolarisWindowsz/OS
Mô hình cơ sở dữ liệu
DBMS quan hệ DBMS quan hệ DBMS quan hệ
Trang 2205/01/2023
Sơ đồ dữ liệu co co co
SQL co co co
API và các access methods khác
OLE DBTabular Data Stream (TDS)ADO.NETJDBCODBC
ADO.NETJDBCODBC
ODP.NETOracle Call Interface (OCI)JDBCODBC
Trang 2305/01/2023
Ngôn ngữ lập trình được hỗ trợ
.NetJavaPHPPythonRubyVisual Basic
AdaCC#C++DEiffelErlangHaskellJavaObjective-COCamlPerlPHPPythonRubySchemeTcl
CC#C++ClojureCobolEiffelErlangFortranGroovyHaskellJavaJavaScriptLispObjective COCamlPerlPHPPythonRRubyScalaTclVisual Basic
Trang 2405/01/2023
Server-side scripts
Transact-SQL and .NET languages
có PL/SQL
Triggers có có có
Phương pháp phân vùng
bảng có thể được phân phối qua một số tập tin (phân vùng ngang), nhưng không có sharding
phân vùng ngang trong MySQL Cluster
phân vùng ngang
Phương pháp Replication
có, nhưng tùy thuộc vào phiên bản SQL-Server
Nhân rộng master-master Master-slave nhân rộng MySQL Cluster
Nhân rộng master-master nhân rộng Master-slave
Trang 2505/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.
Trang 2605/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.
Trang 2705/01/2023
Mô hình Servlet request và response
Trang 2805/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…..
Trang 2905/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ỳ.
Trang 3005/01/2023
Kiến trúc của servlet
Trang 3105/01/2023
Vòng đời servlet
Trang 3205/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.
Trang 3305/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.
Trang 3405/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.
Trang 3505/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.
Trang 3605/01/2023
Trang 3705/01/2023
Lấy thông tin từ truy vấn-Request
Trang 3805/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…
Trang 3905/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).
Trang 4005/01/2023
Ví du về get
Trang 4105/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();
Trang 4205/01/2023
Gưi trả dữ liệu về client-response
Trang 4305/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”);
Trang 4405/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).
Trang 4505/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).
Trang 4605/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.
Trang 4705/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.
Trang 4805/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.
Trang 4905/01/2023
So sánh JSP, ASP, PHPJSP ASP PHP-Phần động được viết bằng java, chứ không phải bằng những ngôn ngữ script:VBScript,JavaScript.-Hỗ trợ tốt hơn với các ứng dung phức tạp cần các thành phần sư dung lại.- JSP hỗ trợ mở rộng tag với custom tag.
-ASP là công nghệ của Microsoft.-Phần động được viết bằng những ngôn ngữ script.
-Đòi hỏi chúng ta phải học như một ngôn ngữ mới.
-JSP chạy được trên nhiều hệ điều hành và web server khác nhau.
- chay được trên ít hệ điều hành và web server khác nhau.
Trang 5005/01/2023
-Tốc độ xư lý hơi chậm. Tốc độ xư lý rất chậm. Tốc độ xư lý nhanh, hiệu quả cao.
- Số lượng nhà cung cấp hosting ít, kho tìm
- Số lượng nhà cung cấp hosting không nhiều, vì vậy kho cho việc lựa chọn
- Số lượng nhà cung cấp hosting nhiều, dễ lựa chọn
- Chi phí giá thành cao - Chi phí giá thành trung bình (do một phần phải mua bản quền)
- Chi phí giá thành thấp (ngôn ngữ free không tốn chi phí mua bản quyền)
- Công cu và công nghệ hỗ trợ tương đối nhiều.
- Công cụ và công nghệ hỗ trợ ít, kho tìm
- Các công cụ và công nghệ hỗ trợ phong phú, đa dang
Trang 5105/01/2023
Vòng đời của JSP
Trang 5205/01/2023
JSP làm việc như thế nào?
Trang 5305/01/2023
Các bước xư lý trang JSP
Trang 5405/01/2023
Ví du HelloWorld.jsp
<html><head><title>Hello world</title></head><body>
<% out.println("Hello World"); %></body></html>
Trang 5505/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.
Trang 5605/01/2023
Ví du
Trang 5705/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)
Trang 5805/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>
Trang 5905/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 %>
Trang 6005/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>
Trang 6105/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.
Trang 6205/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.
Trang 6305/01/2023
JSP directives(3)
• Cú pháp: <%@ page ... %>• Ví du: <%@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>
Trang 6405/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 ... />
Trang 6505/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í du:<%@taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
Trang 6605/01/2023
Các JSP action chuẩn(1)
• <jsp: forward>:cho phép jsp gửi request hiện tai đến servlet hay jsp khác.o Cú pháp: <jsp:forward page="Relative URL" />o Ví du: <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:
Trang 6705/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" .../>
Trang 6805/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ụ:
Trang 6905/01/2023
Ví dụ(1)
Trang 7005/01/2023
Ví dụ(2)
Trang 7105/01/2023
DEMO CHƯƠNG TRÌNH
Trang 7205/01/2023
Cảm ơn Thầy và các bạn đã theo dõi!