ĐỀ ÁN MÔN: Xây Dựng Phần Mềm Hướng Đối Tượng pot - Pdf 11

MVC Architecture & Struts Framework in J2EE (Java) 10/2007

Trang 1
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
Y

Z

Xây Dựng Phần Mềm
Hướng Đối Tượng
ĐỀ ÁN MÔN
Tên Đề Án : MVC Architecture
& Struts Framework In
Java(J2EE)

GVHD : Trần Minh Triết
SV thực hiện :

Võ Đức Thiện (06hc418)

Nguyễn Trí Toàn (06hc425)

Nguyễn Thành Trực (06hc437)
Tháng 10/2007
MVC Architecture & Struts Framework in J2EE (Java) 10/2007
Mục Lục

Phần I : Tổng quan ngôn ngữ java 4
1. Lịch sử phát triển của Java 4

2.1. Cơ sở dữ liệu 23
2.2. Bố trí các tập tin trên Eclipse 23
2.3. Kết quả 24
Phần VI : Struts Framework 25
1. Struts 1.0 25
1.1. Khái niệm 25
1.2. Cấu trúc của Struts 26
1.3. Các thành phần chính của một ứng dụng Struts 27
1.4. Các file cấu hình cần thiết để xây dựng một ứng dụng Struts 27
1.5. Ưu điểm của Struts (so với MVC sử dụng RequestDispatcher) 28
1.6. Nhược điểm của Struts 28
2. Struts 2.0 29

Trang 2
MVC Architecture & Struts Framework in J2EE (Java) 10/2007
Phần VI: Áp dụng kiến trúc MVC xây dựng ứng dụng triển khai thực tế 30
1. Qui trình thực hiện 30
1.1. Các trang hiển thị(View) 30
1.2.Action 37
1.3.Bean 40
1.4.Utils 46
1.5.Struts.xml 47
1.6.Build.xml 49
2 . Triển Khai Ứng Dụng 50
2.1.Cơ sở dữ liệu 50
2.2. Bố trí các tập tin trên Eclipse 50


Tổng quan ngôn ngữ java 1. Lịch sử phát triển của Java
• Ra đời tại Sun Microsystems bởi James Gosling
• 1991: Version đầu tiên với tên “Oak”
• 1995: Tên chính thức là Java

2. Mục đích của Java:
• Dùng để phát triển ứng dụng cho các thiết bị điện tử “thông minh”
• Tạo các trang web có nội dung động (web applet)
• Hiện nay, Java được sử dụng để phát triển nhiều loại ứng dụng khác
nhau: cơ sở dữ liệu, mạng, Internet, viễn thông

3. Đặc điểm của Java :
• Giống C/C++
• Đơn giản
• Object-oriented, hướng đối tượng
• Platform-independent, không phụ thuộc nền
• Mạnh
• Secure, bảo mật
• Distributed, phân bố
• Multithreaded, xử lý đa luồng
• Dynamic, động

Chương trình dịch cổ điển


4. Các loại chương trình trong java :
• Applets
• Command Line Applications
• GUI Applications
• Servlets
• Database Applications

5. Các thành phần của Java Environment
• Java language
• Bytecode definitions
• Java/Sun class libraries
• Java Virtual Machine
• Structure of .class files

6. Các loại ứng dụng java :
• J2SE : Java 2 Standard Edition (Dùng để phát triển các ứng dụng vừa và nhỏ)
• J2EE : Java 2 Enterprise Edition (Dùng để phát triển các ứng dụng lớn)
• J2ME : Java 2 Micro Edition (Dụng để phát triển các ứng dụng trên đtdd)
Trang 6
MVC Architecture & Struts Framework in J2EE (Java) 10/2007

3. The Platform runtime :
• Công việc chính của Platform runtime là phát xem plug-in nào đang có
trong thư mục plug-in của Eclipse.Mỗi Plug-in đều có 1 tập tin Manifest liệt
kê những kết nối mà plug-in cần.Pug-in chỉ được tải vào Eclipse mỗi khi
thực sự cần thiết để giảm lượng tài nguyên yêu cầu và thời gian khởi tạo.

4. The workspace :
• Workspace chịu trách nhiệm quản lý tài nguyên người dùng được tồ chức
dưới dạng Project. Mỗi Project là một thư mục con trong thư mục
Workspace.
• Workspace bảo quản cấp thấp lịch sử những sự thay đổi tài nguyên, tránh
thất thoát tài nguyên người dùng.
• Workspace đồng thời chịu trách nhiệm thông bào những công cụ cấn thiết
cho việc thay đổi tài nguyên.

5. The Workbench :
• Workbench là giao diện đồ họa người dùng của Eclipse, gồm có Standard
Widget Toolkit (SWT) và JFace. Eclipse không hòan toàn bắt buộc phải sử
dụng SWT hay Jface để lập trình giao diện, bạn vẫn có thể sử dụng AWT
hay SWING của Java thông qua việc cài đặt các Plug-ins.

6. Team support :
• Trang bị hệ thống quản trị để quản lý dự án của người dùng : Concurrent
Versions System (CVS).


• Một applet có 4 phương thức. Mỗi phương thức được tự động gọi khi có
event tương ứng.
• Methods:
• init( )
• start( )
• stop( )
• destroy( )

Trang 8
MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Sự khác nhau giữa Applet và Application
• Applications chạy bằng Java interpreter, còn applets chạy trên browser có hổ
trợ Java, hoặc dùng ‘AppletViewer’ có trong JDK.
• Việc thực hiện một applications bắt đầu trong hàm ‘main()’. Còn applet thì
không cần hàm main.
• Applications dùng ‘System.out.println()’ để xuất, trong khi applets dùng hàm
‘drawString()’ để hiển thị.

Các hạn chế về Security trên Applets
• Không thể đọc hoặc viết các file trên hệ thống file của user.
• Không thể trao đổi với một site trên.
• Không thể chạy được các chương trình trên hệ thống hiện hành
• Không thể tải bất kỳ chương trình được lưu trữ trên hệ thống của user. 2. JavaBean:
Các bước xử lý của 1 request Trang 10
MVC Architecture & Struts Framework in J2EE (Java) 10/2007
Cấu trúc của trang JSP :
 Các thẻ lệnhHTML.
 Mã lệnh Java. Có 3 thành phần chính:
o Directives
o Scripting Elements
o Actions Cơ chế hoạt động của JSP
4. Servlets :

Lịch sử của Web Application


Vòng đời của 1 Servlet
Cấu trúc của 1 Servlet:
 Là lớp con của lớp HttpServlet
 Override phương thức doGet và doPost nếu cần. Hai phương thức này
đều nhận vào hai tham số HttpServletRequest và HttpServletResponse.
Hai phương thức này đều ném ra IOException và ServletException

Trang 12
MVC Architecture & Struts Framework in J2EE (Java) 10/2007 Phần IV
Kiến trúc MVC (Model _View_Controller)
1. Khái niệm :
Mô hình Model-View-Controller chia các components của ứng dụng thành 3 loại
khác nhau đó là Model (mẫu), View (hiển thị), và Controller điều khiển). Các
components của mô hình MVC đảm nhận một trách nhiệm nhất định và mỗi
components đều độc lập với các components khác. Việc thay đổi 1 components sẽ

chịu trách nhiệm tạo ra các khung nhìn và controller mới.
 Có sự logic rằng các khung nhìn và các controller có quan hệ mạnh mẽ với
nhau, đầu vào và đầu ra của một ứng ụng được liên hệ chặc chẽ với nhau. Hầu
hết các nền GUI MVC, view và controller được trộn trong một đối tượng.
Điều này được gọi là Document View. View và controller được kết hợp thành
view. Model trở nên được biết như là tài liệu.
 Passive model luân phiên chiệu trách nhiệm nhiều hơn về controller, vì nó
phải thông báo cho các view khi nó có sự cập nhật.
 Sự hữu ích web hiện đại của MVC luân phiên thậm chí là nhiều hơn các MVC
truyền thống về việc chiệu trách nhiệm của view đối với controller. Controller
chiệu trách nhiệm tạo ra và lựa chọn các view và view hướng đến việc chiệu
trách nhiệm ít hơn đối với các controller của nó. 3.Mối quan hệ giữa Model và view
 View phụ thuộc vào model. Các sự thay đổi đối với giao diện model đòi hỏi
các sự thay đổi song song trong view.
 Thật khó để có được một sự tách biệt rõ rành giữa model và view. Chẳng hạn
như, xét một yêu cầu “hiển thị một cán cân âm bằng mầu đỏ”. Đầu tiên cán
cân, điều này xuất hiện là yêu cầu đầu ra rõ ràng và sự kiểm tra có thể được
đặt trong view theo một hình thức rõ ràng như sau:
if balance < 0 then red
 Điều này có thể xâm phạm đến sự tách biệt của các thành phần trong MVC.
 Qua sự phân tích ở trên yêu cầu thực sự là “hiển thị sự cân bằng được cường
điệu bằng mầu đỏ” và định nghĩa của cường điệu = cán cân < 0= nên được đặc
trong model vì đó là thuộc về sự mô tả miền. Thật dễ dàng cho tác nghiệp để
chuyển ra của model và chuyển vào view. Trang 14

 Dễ dàng hơn trong việc thay đổi giao diện người sử dụng
 Kiểm thử dễ dàng hơn
 Với MVC thật dễ dàng để kiểm thử chức năng chính của ứng dụng vì nó được
đóng gói bởi model.

5. Hạn chế của MVC
 Gia tăng sự phức tạp
 Sự kết nối chặc chẻ của view và controller đối với model
 Sự thay đổi đối với giao diện model đòi hỏi sự thay đổi song song trong view
và có thể đòi hỏi sự thay đổi thêm đối với controller. Sự thay đổi code nào đó
có thể trở nên khó khăn hơn.
 Tìm ẩn sự cập nhật dư thừa
 Cơ chế truyền sự thay đổi có thể không hiệu quả khi model thay đổi thường
xuyên đòi hỏi nhiều thông báo thay đổi. Đây không phải là vấn đề chung nếu
passive model được sử dụng.
 Sự kết nối chặc chẻ giữa view và controller
 Sự tách biệt rõ ràng là rất khó, đôi khi là không thể Trang 15
MVC Architecture & Struts Framework in J2EE (Java) 10/2007

Phần V
Áp dụng kiến trúc MVC xây dựng ứng dụng
triển khai thực tế

Chương trình : Java WebMail

</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td><input type="submit" value="Submit" /></td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>
Trang 16
MVC Architecture & Struts Framework in J2EE (Java) 10/2007

 Trang login.jsp để người dùng nhập vào username và password, thường gọi là
trang JSP front-end. Thông tin này được chuyển đến Controller Servlet, báo
controller triệu gọi action là login
Trang Welcome.jsp <jsp:useBean id="user" class="mvc.model.UserBean" scope="request" />
<html>

Trang 17
MVC Architecture & Struts Framework in J2EE (Java) 10/2007
import javax.servlet.ServletException;
import javax.servlet.RequestDispatcher;
import java.io.IOException;

public class Controller extends HttpServlet
{
protected void doGet( HttpServletRequest
httpServletRequest,HttpServletResponse httpServletResponse ) throws
ServletException, IOException
{
doPost( httpServletRequest, httpServletResponse );
}
protected void doPost( HttpServletRequest
httpServletRequest,HttpServletResponse httpServletResponse ) throws
ServletException, IOException
{
//Lay thuoc tinh action tu request
String theAction = httpServletRequest.getParameter(
"action" );
Action action = null;
if ( theAction.equalsIgnoreCase( "login" ) )
{
action = new LoginAction( httpServletRequest,
httpServletResponse );
}
// Thuc hien phuong thuc execute cua doi tuong lop
Action, tra ve mot duong dan page kieu string
String page = action.execute( httpServletRequest,

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public interface Action
{
public String execute( HttpServletRequest req, HttpServletResponse res );
}

LoginAction.class

package mvc.controller.actions;
import mvc.controller.Action;
import mvc.model.UserBean;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginAction implements Action
{
public LoginAction( HttpServletRequest request, HttpServletResponse response )
{

}

public String execute( HttpServletRequest req, HttpServletResponse res )
{
String username = req.getParameter( "username" );
String password = req.getParameter( "password" );
// Tao mot UserBean
try


import java.sql.ResultSet;
import mvc.util.*;

public class UserBean
{
private String user = "";
private String password = "";
private String name = "";
private String path = "";

public UserBean() throws ClassNotFoundException
{

}

public void setUser( String user )
{
this.user = user.toUpperCase();
}

public String getUser()
{
return user;
}

public void setPassword( String password )
{
this.password = password;
}

}
} DataUtil.class

package mvc.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.sql.*;

public class DataUtil
{
public static ResultSet ReadData(String SQL,String path) throws
Exception
{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
Connection connect = DriverManager.getConnection
("jdbc:odbc:Driver={Microsoft Access Driver
(*.mdb)};"
+ "DBQ=" + path,
"", "" );
Statement stmt = connect.createStatement();
ResultSet result = stmt.executeQuery( SQL );
return result;
}
}

</path>

<target name="prepare">
<mkdir dir="${build.home}" />
<mkdir dir="${dist.home}" />

</target>

<target name="compile" depends="prepare" description="Compile Java sources">
<javac srcdir="${src.home}"
destdir="${build.home}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
optimize="${compile.optimize}">
<classpath refid="compile.classpath"/>
</javac>
<copy todir="${build.home}">
<fileset dir="${src.home}" excludes="**/*.java"/>
</copy>
</target>

<target name="dist" depends="compile" description="Create binary distribution">
<war destfile="${dist.home}/${ant.project.name}.war" webxml="${web.home}/WEB-
INF/web.xml">
<webinf dir="${web.home}/WEB-INF"/>
<lib dir="${lib.home}"/>
<classes dir="${build.home}"/>
<fileset dir="${web.home}" includes="*.*"/>
<fileset dir="${database.home}" includes="*.*"/>
</war>

Cơ sở dữ liệu Access: members.mdb có một bảng accounts
2.1. Bố trí các tập tin trên Eclipse : Trang 23
MVC Architecture & Struts Framework in J2EE (Java) 10/2007
2.3. Kết quả:
hợp các thẻ JSP, các thẻ tùy chọn JSP (custom JSP tag), và các Java servlet.
Dưới đây chúng ta sẽ mô tả ngắn gọn cách mà Struts Framework ánh xạ đến
mỗi thành phần trong mô hình MVC. 9 Hình trên mô tả tiến trình mà hầu hết các ứng dụng Struts phải tuân theo.
Tiến trình này có thể được chia thành 5 bước căn bản:
1. Request được tạo ra từ một View
2. Request được tiếp nhận bởi một ActionServlet (đóng vai trò là một
Controller), và ActionServlet này sẽ lookup URI cần thiết trong file XML
và xác định tên của lớp Action sẽ thực hiện các bussiness logic cần thiết.

Trang 25


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status