mô hình mvc 2 (model-view-controller)
DESCRIPTION
Tài liệu về MVC 2 quater 7 NIITTRANSCRIPT
![Page 1: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/1.jpg)
![Page 2: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/2.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Nội dung trình bày
Giới thiệu mô hình MVC 2
BookOnline MVC 2
2
![Page 4: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/4.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Java Web
Servlet mạnh về xử lý nghiệp vụ và điều phối nhưng
lại rất yếu về hiển thị
JSP mạnh về xử lý hiển thị nhưng lại yếu về xử lý
nghiệp vụ và điều phối
4
![Page 5: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/5.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Java Web
Thường thì chúng ta sẽ kết hợp sức mạnh của Servlet
và JSP vào mô hình MVC 2 (Model-View-Controller)
– Các Servlet đóng vai trò làm Controller
– Các trang JSP đóng vai trò làm View
5
![Page 6: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/6.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
MVC 1
Model: DAO + POJO
View: JSP
Controller: JSP
6
![Page 7: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/7.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
MVC 2
Model: DAO + POJO
View: JSP
Controller: Servlet
7
![Page 8: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/8.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
MVC 2
Model: DAO + POJO
– Cập nhật dữ liệu + Rút trích dữ liệu
Controller : SERVLET
– Gọi Model cập nhật dữ liệu + rút trích dữ liệu
– Chọn View và gửi dữ liệu cho View
View: JSP
– Gửi các sự kiện cho Controller
– Nhận dữ liệu từ Controller và hiển thị
8
![Page 9: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/9.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
MVC 2
9
VIEW
JSP
CONTROLLER
SERVLET
MODEL
DAO POJO
Gửi sự kiện
Chọn View Gửi dữ liệu
Cập nhật dữ liệu
Rút trích dữ liệu Hiển thị dữ liệu
![Page 10: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/10.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) gửi dữ liệu cho View (JSP)
Request
Session
Application (ServletContext)
10
![Page 11: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/11.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) REQUEST View (JSP)
11
Forward
Forward
URL người dùng nhìn thấy: Page1
Chứa các thuộc tính trong request của Page1
Attribute1, Attribute2
URL người dùng nhìn thấy: Page1
Chứa thuộc tính trong request của Page1 + Page2
Attribute1, Attribute2
Attribute3
URL người dùng nhìn thấy: Page1
Chứa thuộc tính trong request của
+ Page1 + Page2 + Page 3
Attribute1, Attribute2, Attribute3
Attrubute4, Attribute5
Page1
Page2
Page3
![Page 12: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/12.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) REQUEST View (JSP)
12
CONTROLLER
SERVLET
VIEW
JSP
Forward
Object value1 = ...
Object value2 = ...
request.setAttribute (“Key1”, value)
request.setAttribute (“Key2”, value)
...
Object value1 = request.getAttribute (“Key1”)
Object value2 = request.setAttribute (“Key2”)
...
![Page 13: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/13.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) REQUEST View (JSP)
Controller (Servlet)
POJO pojo = . . .
request.setAttribute("key", pojo);
String url="url view";
RequestDispatcher rd =
request.getRequestDispatcher(url);
rd.forward(request, response);
13
![Page 14: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/14.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) REQUEST View (JSP)
View (JSP)
– Java Bean
<jsp:useBean id="key"
type="POJO" scope="request"/>
. . .
– Scriptlet
<%
POJO pojo=(POJO)request.getAttribute(“Key”);
%>
14
![Page 15: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/15.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) REQUEST View (JSP)
Controller (Servlet)
ArrayList<POJO> ds = . . .
request.setAttribute("key", ds);
String url="url view";
RequestDispatcher rd =
request.getRequestDispatcher(url);
rd.forward(request, response);
15
![Page 16: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/16.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) REQUEST View (JSP)
View (JSP)
– Java Bean
<jsp:useBean id="key"
type="ArrayList<POJO>" scope="request"/>
. . .
– Scriptlet
<% ArrayList<POJO> ds=
(ArrayList<POJO>)request.getAttribute(“Key”);
%>
16
![Page 17: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/17.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) SESSION View (JSP)
Session
17
Server
Client 1
Client 2
Session ID 1
Session ID 2
Session 1
Session 2
![Page 18: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/18.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) SESSION View (JSP)
Forward
– Người dùng không nhìn thấy URL thay đổi
– Người dùng không thể Bookmark
– Quá trình chuyển dữ liệu Servlet JSP
SendRedirect
– Người dùng nhìn thấy URL thay đổi
– Người dùng có thể Bookmark trang JSP
– Quá trình chuyển dữ liệu JSP Servlet JSP
– Bên View cần kiểm tra dữ liệu đã tồn tại chưa
18
![Page 19: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/19.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) SESSION View (JSP)
19
CONTROLLER
SERVLET
VIEW
JSP
Forward
Object value1 = ...
Object value2 = ...
HttpSession session = request.getSesssion();
session.setAttribute (“Key1”, value)
session.setAttribute (“Key2”, value)
...
Object value1 = session.getAttribute (“Key1”)
Object value2 = session.setAttribute (“Key2”)
...
![Page 20: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/20.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) SESSION View (JSP)
Controller (Servlet)
POJO pojo = . . .
HttpSession session = request.getSession();
session.setAttribute("key", pojo);
String url="url view";
RequestDispatcher rd =
request.getRequestDispatcher(url);
rd.forward(request, response);
20
![Page 21: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/21.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) SESSION View (JSP)
View (JSP)
– Java Bean
<jsp:useBean id="key"
type="POJO" scope="session"/>
. . .
– Scriptlet
<%
POJO pojo=(POJO)session.getAttribute(“Key”);
%>
21
![Page 22: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/22.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) SESSION View (JSP)
Controller (Servlet)
ArrayList<POJO> ds = . . .
HttpSession session = request.getSession();
session.setAttribute("key", ds);
String url="url view";
RequestDispatcher rd =
request.getRequestDispatcher(url);
rd.forward(request, response);
22
![Page 23: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/23.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) SESSION View (JSP)
View (JSP)
– Java Bean
<jsp:useBean id="key"
type="ArrayList<POJO>" scope="session"/>
. . .
– Scriptlet
<% ArrayList<POJO> ds=
(ArrayList<POJO>)session.getAttribute(“Key”);
%>
23
![Page 24: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/24.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) APPLICATION View (JSP)
Session
24
Server
Client 1
Client 2
Session ID 1
Session ID 2
Application
(ServletContext)
![Page 25: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/25.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) APPLICATION View (JSP)
Forward
– Người dùng không nhìn thấy URL thay đổi
– Người dùng không thể Bookmark
– Quá trình chuyển dữ liệu Servlet JSP
SendRedirect
– Người dùng nhìn thấy URL thay đổi
– Người dùng có thể Bookmark trang JSP
– Quá trình chuyển dữ liệu JSP Servlet JSP
– Bên View cần kiểm tra dữ liệu đã tồn tại chưa
25
![Page 26: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/26.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) APPLICATION View (JSP)
26
CONTROLLER
SERVLET
VIEW
JSP
Forward
synchronized(this) {
Object value1 = ...
Object value2 = ...
ServletContext application
= this.getServletContext();
application.setAttribute (“Key1”, value)
application.setAttribute (“Key2”, value)
...
}
Object v1 = application.getAttribute (“Key1”)
Object v2 = application.setAttribute (“Key2”)
...
![Page 27: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/27.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) APPLICATION View (JSP)
Controller (Servlet)
synchronized(this) {
POJO pojo = . . .
ServletContext application
= this.getServletContext();
application.setAttribute("key", pojo);
String url="url view";
RequestDispatcher rd =
request.getRequestDispatcher(url);
rd.forward(request, response);
27
![Page 28: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/28.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) APPLICATION View (JSP)
View (JSP)
– Java Bean
<jsp:useBean id="key"
type="POJO" scope="application"/>
. . .
– Scriptlet
<% POJO pojo=
(POJO)application.getAttribute(“Key”);
%>
28
![Page 29: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/29.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) APPLICATION View (JSP)
Controller (Servlet)
synchronized(this) {
ArrayList<POJO> ds = . . .
ServletContext application
= this.getServletContext();
application.setAttribute("key", ds);
String url="url view";
RequestDispatcher rd =
request.getRequestDispatcher(url);
rd.forward(request, response);
29
![Page 30: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/30.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Controller (Servlet) APPLICATION View (JSP)
View (JSP)
– Java Bean
<jsp:useBean id="key" type="ArrayList<POJO>"
scope="application"/>
– Scriptlet
<% ArrayList<POJO> ds=
(ArrayList<POJO>)application.getAttribute(“Key”);
%>
30
![Page 33: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/33.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Trang đăng nhập MVC 2
Controller - Servlet
– DangNhap.do
Controller - JSP
– DangNhap.jsp
URL người dùng chọn từ website
– DangNhap.do?action=Nap
33
![Page 34: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/34.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Trang đăng nhập MVC 2
34
VIEW
DangNhap.jsp
CONTROLLER
DangNhap.do
MODEL
DAO POJO
Gửi sự kiện
Chọn View Gửi dữ liệu
Rút trích dữ liệu Hiển thị dữ liệu
URL: DangNhap.do?action=Nap
![Page 35: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/35.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Trang đăng nhập MVC 2
Người dùng chọn trang đăng nhập bằng cách chọn
URL
<a href=“DangNhap.do?action=Nap”>
Đăng nhập
</a>
35
![Page 36: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/36.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Trang đăng nhập MVC 2 – DangNhap.do
36
1
2
3
4
5
6
7
8
9
String action = request.getParameter(“action”);
String url="";
if (action.equals(“Nap”)){
url = “DangNhap.jsp”;
}
RequestDispatcher rd =
request.getRequestDispatcher(url);
rd.forward(request, response);
![Page 37: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/37.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Trang đăng nhập MVC 2 – DangNhap.jsp
37
1
2
3
4
5
6
7
8
9
<form name=“frmDangNhap”
action=“DangNhap.do”
method=“post”>
. . .
<input type=“submit”
name = “btdn” value = “Đăng nhập”/>
<input type=“hidden”
name=“action” value=“DangNhap”/>
</form>
action
![Page 38: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/38.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Trang đăng nhập MVC 2 – DangNhap.jsp
38
CONTROLLER
DangNhap.do
![Page 39: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/39.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Trang đăng nhập MVC 2 – DangNhap.do
39
CONTROLLER
DangNhap.do
VIEW
DangNhap.jsp
CONTROLLER
TrangXXX.do
![Page 40: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/40.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Trang đăng nhập MVC 2 – DangNhap.do
40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
String action = request.getParameter(“action”); String url="";
if (action.equals(“Nap”)){ url = “DangNhap.jsp”;}
else if (action.equals(“DangNhap”)){ //Sử dụng hidden
String tenDangNhap = request.getParameter(“tenDangNhap”);
String matKhau = request.getParameter(“matKhau”);
KhachHang kh = KhachHangDAO.dangNhap(tenDangNhap, matKhau);
if(kh==null){
String loi =“Tên đăng nhập hoặc mật khẩu không đúng”;
request.setAttribute(“loi”, loi);
url = “DangNhap.jsp”;
}else{
HttpSession session = request.getSession();
session.setAttribute(“KhachHang”, kh);
String url=“TrangXXX.do”;
response.sendRedirect(url”);
return;
}
}
RequestDispatcher rd = request.getRequestDispatcher(url);
rd.forward(request, response);
![Page 41: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/41.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Trang đăng nhập MVC 2 – DangNhap.jsp
41
1
2
3
4
5
6
7
8
9
<form> ... </form>
<%
if (request.getAttribute(“loi”)!=null){
String loi = request.getAttribute(“loi”);
%>
<p><font color=“red”><%=loi%></font></p>
<%>
}
%>
![Page 42: Mô hình MVC 2 (Model-View-Controller)](https://reader034.vdocuments.site/reader034/viewer/2022042507/553076de550346dd568b4789/html5/thumbnails/42.jpg)
Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2012
Tài liệu tham khảo
Nguyễn Hoàng Anh, Tập bài giảng môn chuyên đề
Java, 2011
Marty Hall, Tập bài giảng J2EE, 2010
42