servlet + jsp on tomcat mysql

Post on 08-Feb-2017

173 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 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!

top related