Giải pháp ++: sử dụng MVCtrong Model – các lớp Java có thể sử dụng lại phương thức theo tác trên dữ liệu... Hiển thị thông tin tùy thuộc vào loại client Biểu diễn kết quả của tầng bu
Trang 1Bài 2 Tổng quan MVC
Trang 2Nội dung
dụng Web
3.1 Model 1
3.2 Model 2
3.3 Application frameworks
Trang 3Bài toán
3
Trang 4Giải pháp ban đầu
Trong servlet: xử lý nghiệp vụ (business
Trang 5Giải pháp +: sử dụng JSP
5
Trang 6Giải pháp ++: sử dụng MVC
trong Model – các lớp Java có thể sử dụng lại
phương thức theo tác trên dữ liệu
Trang 7Giải pháp ++: sử dụng MVC
7
Trang 8Ví dụ 1 Tư vấn bia
Trang JSP Trang html
Trang 99
Trang 10web src
WEB-INF
web.xml
result.htmlform.html
Trang 11WEB-INF beer_v1
classes
webapps
web.xml
result.htmlform.html
com
BeerExpert.class
example web model
BeerSelect
.class
Cấu trúc thư mục triển khai
tomcat
Trang 13<servlet-name> ServletBeer </servlet-name>
<url-pattern> /SelectBeer.do </url-pattern>
</servlet-mapping>
</web-app>
13
Trang 14Servlet BeerSelect – version 1
public class BeerSelect extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Beer Selection Advice<br>");
String c = request.getParameter("color");
out.println("<br>Got beer color "+c);
}
}
Trang 15Test ứng dụng
15
Trang 16Model BeerExpert
public class BeerExpert {
public List getBrands(String color){
List brands = new ArrayList();
Trang 17Servlet BeerSelect – version 2
import package com.example.web;
…
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String c = request.getParameter("color");
BeerExpert be = new BeerExpert();
List result = be.getBrands(c);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Beer Selection Advice<br>");
Trang 18Test ứng dụng
Trang 19Kiến trúc hiện tại
19
Trang 20Kiến trúc mong muốn
Trang 22Servlet BeerSelect – version 3
import package com.example.web;
…
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String c = request.getParameter("color");
BeerExpert be = new BeerExpert();
List result = be.getBrands(c);
request.setAttribute("styles", result);
RequestDispatcher view = request.getRequestDispatcher("result.jsp"); view.forward(request, response);
}
Trang 23Test lại ứng dụng
23
Trang 24Nội dung
dụng Web
2.1 Model 1
2.2 Model 2
2.3 Application frameworks
Trang 252 Giới thiệu MVC
25
Trang 26MVC Pattern
Trang 27Model
Mô hình hóa dữ liệu và hành vi ( data & behavior ) trong xử lý nghiệp vụ ( business process )
Trang 28 Hiển thị thông tin tùy thuộc vào loại client
Biểu diễn kết quả của tầng business logic
Không cần quan tâm làm thế nào có được thông tin, hoặc thông tin ở đâu (Model chịu trách
nhiệm)
Trang 29 Kết nối tương tác của người dùng với các nghiệp
vụ cung cấp phía sau
Tầng này quyết định request được xử lý như thế nào,
và thông tin sẽ được trả lại như thế nào
29
Trang 303 Quá trình phát triển của
kiến trúc ứng dụng Web
Trang 313 Quá trình phát triển của kiến trúc MVC
Trang 323 Quá trình phát triển của kiến trúc ứng dụng Web cho đến khi Model 1 ra đời
Model 1 architecture
No MVC
Trang 333.1 Model 1
(Page-Centric Architecture)
33
Trang 343.1 Model 1 Architecture (Page-centric)
Request
1
JSP pages
Trang 35 Dưới dạng JavaBeans, scriptlets, expression
Chuyển trang được thực hiện
Khi user click vào 1 liên kết Ví dụ: <A HERF="find.jsp>
Qua hành động submit form Ví dụ: <FORM
ACTION="search.jsp">
35
Trang 36Kiến trúc Page-centric
dataBase
Trang 37Kịch bản sử dụng trong kiến trúc
find.jsp
delete.jsp
redirect
forward Request 1
Trang 383.2 Model 2
(Servlet-Centric Architecture)
Trang 39Model 2 Architecture (Servlet-centric)
Request
1
( Controller ) Servlet
( View ) JSP
MVC Design Pattern
39
Trang 40Tại sao sử dụng kiến trúc Model 2?
nhau, tùy theo dữ liệu nhận được?
Riêng JSP với JavaBeans và custom tags
(Model 1) chưa xử lý tốt được
Sử dụng đồng thời Servlet và JSP (Model 2)
Servlet xử lý request gửi tới, xử lý 1 phần dữ
liệu, thiết lập các beans, forward kết quả cho 1 trong nhiều trang JSP nào đó
Trang 41Servlet-centric Architecture
JSP chỉ được sử dụng để biểu diễn kết quả
Xử lý điều khiển (Control) thực hiện bởi servlets
Servlet hoạt động như một gatekeeper
Cung cấp các services thông dụng, như authentication ,
authorization , login , error handling , …
Servlet hoạt động như một central controller
Quyết định logic phù hợp để xử lý các request, sẽ gửi
request đến những nơi nào, …
Thực hiện việc điều hướng (redirecting)
41
Trang 433.3 Web Application
Frameworks
43
Trang 44Web Application Frameworks
các chức năng
Nhận ( receive ) và gửi tiếp ( Dispatching ) HTTP requests
Gọi các phương thức từ tầng model
Tổng hợp và chọn ra các views trả về cho client
trình viên sử dụng/mở rộng
Trang 45Tại sao sử dụng các Web Application Framework?
45
Trang 46Tại sao sử dụng các Web Application Framework?
chuẩn, cho phép tái sử dụng.
các components trong 1 ứng dụng
Trang 47Một số Web Application Frameworks