Rất nhiều dự án lớn đã ra đời từ cộng đồng mã nguồn mở, có thể kể đến một số framework nổi tiếng như : Struts, Hibernate, Spring, JSF … Ở Việt Nam, phát triển các ứng dụng web là hướng
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
Trang 2Nghệ An, tháng 12 năm 2012
TRƯỜNG ĐẠI HỌC VINH
KHOA CÔNG NGHỆ THÔNG TIN
Giáo viên hướng dẫn: ThS Nguyễn Công Nhật
Trang 3LỜI MỞ ĐẦU
Ngày nay, ngành công nghệ thông tin đang phát triển như vũ bão và đi vào mọi mặt của đời sống, kinh tế, xã hội của con người Đóng góp vào sự phát triển đó, vai trò của web ngày càng trở nên quan trọng và là một công cụ đắc lực dẫn tới mọi thành công trong nhiều lĩnh vực trọng điểm
Với sự bùng nổ của truyền thông như hiện nay thì web là phương thức lan truyền thông tin nhanh chóng, hiệu quả và kinh tế nhất Rất nhiều tập đoàn sản xuất phần mềm lớn như IBM, Microsoft, Sun MicroSystem … đã tham gia vào lĩnh vực xây dựng và phát triển các ứng dụng web Tuy nhiên, các ứng dụng web phát triển nhanh và mạnh mẽ như hiện nay không thể không kể đến một cộng đồng, đó là cộng đồng mã nguồn mở Sự đóng góp của họ là vô cùng lớn lao với mục đích cao cả là phát triển công nghệ và phục vụ cộng đồng Rất nhiều dự án lớn đã ra đời từ cộng đồng mã nguồn mở, có thể kể đến một số framework nổi tiếng như : Struts, Hibernate, Spring, JSF …
Ở Việt Nam, phát triển các ứng dụng web là hướng đi đầy tiềm năng và hứa hẹn cho tất cả những ai yêu thích công nghệ thông tin nói chung và những kỹ sư phần mềm nói riêng.
Cùng với niềm đam mê công nghệ web, đặc biệt là các công nghệ mã nguồn
mở, em đã chọn cho mình đề tài “Tìm hiểu công nghệ Struts1 Framework và xây dựng website Ẩm thực Nghệ an” Trong thời gian thực hiện đồ án, nghiên
cứu, tìm hiểu công nghệ em đã đạt được một số kết quả nhất định Đó là cơ sơ quan trọng giúp em nắm bắt công nghệ và có thể làm việc tốt sau này.
Nội dung cơ bản của đồ án gồm bốn chương:
Chương 1: Tổng quan về ngôn ngữ java và các thành phần
Chương 2: Kiến trúc MVC ( Model-View-Controler ).
Chương 3: Struts1 Framework.
Chương 4: Áp dụng Struts1 Framework demo ứng dụng triển khai thực tế.
Trang 4Vinh nói chung và các thầy cô trong khoa Công nghệ Thông tin nói riêng.
Em xin gửi tới các thầy cô lời cám ơn chân thành nhất.
Em xin cám ơn thầy Th.s Nguyễn Công Nhật người đã nhiệt tình giúp đỡ,
hướng dẫn, chỉ bảo tận tình trong suốt thời gian em làm đồ án tốt nghiệp.
Em cũng xin gửi lời cám ơn đến Công ty FPT Đà Nẵng, các anh chị trong
công ty đã tạo mọi điều kiện, giúp đỡ và góp ý để em có thể hoàn thành tốt đồ án.
Cuối cùng, em xin gửi lời cám ơn chân thành tới gia đình, bạn bè đã động viên, chăm sóc, đóng góp ý kiến và giúp đỡ trong quá trình học tập, nghiên cứu
và thực hiện tốt đồ án tốt nghiệp.
Vinh, tháng 12 năm 2012 Sinh viên thực hiên:
Đậu Trần Thành.
Trang 5Mục lục
PHẦN NỘI DUNG 6
CHƯƠNG 1: TỔNG QUAN NGÔN NGỮ JAVA VÀ CÁC THÀNH PHẦN 6
1.1 Tổng quan về ngôn ngữ java 6
1.1.1 Lịch sử phát triển của Java 6
1.1.2 Mục đích của Java 6
1.1.3 Đặc điểm của Java 6
1.1.4 Các loại chương trình trong java 7
1.1.5 Các thành phần của Java Environment 7
1.1.6 Các loại ứng dụng java 7
1.2 Giới thiệu môi trường phát triển ứng dụng java Eclipse 8
1.2.1 Giới thiệu Eclipse, download và cài đặt 8
1.2.2 Kiến trúc Eclipse 9
1.2.3 The Platform runtime 9
1.2.5 The workspace 9
1.2.6 The Workbench 9
1.2.7 Team support 9
1.2.8 SWT 9
1.2.9 JFace 10
1.2.10 Help 10
1.3 Giới thiệu J2EE và các thành phần liên quan 11
1.3.1 Apple 11
1.3.2 JavaBean 12
1.3.3 JSP (Java Server Pages) 13
1.3.4 Servlet 15
CHƯƠNG 2 17
KIẾN TRÚC MÔ HÌNH MVC (MODEL _VIEW_CONTROLER) 17
2.1 Thế nào là mô hình MVC 17 2.2 Các thành phần trong MVC 17
Trang 62.4 Mối quan hệ giữa View và Controller 18
2.5 Mối quan hệ giữa Model và View 19 2.6 Mối quan hệ giữa Model và Controller 19
2.7 Ưu điểm và nhược điểm của MVC 20
CHƯƠNG 3 21
STRUTS 1 FRAMEWORK 21
3.1 Khái niệm 21 3.2 Cấu trúc của Struts bao gồm 22 3.3 Các thành phần chính của một ứng dụng Struts 23 3.4 Các file cấu hình cần thiết để xây dựng một ứng dụng Struts 23 3.5 Hoạt động của struct1 Framework 24 3.3.1 Kiến trúc tầng controller trong struct1 25
3.3.2 Các thành phần Model (Model Components) 29
3.3.3 Các thành phần View (View Components) 31
3.4 Ưu điểm và Nhược điểm của Struts (so với MVC RequestDispatcher) 31
3.4.1 Ưu điểm 31
3.4.2 Nhược điểmcủa Struts 32
CHƯƠNG 4 33
ÁP DỤNG STRUTS 1 FRAMEWORK VÀ ỨNG DỤNG DEMO TRIỂN KHAI THỰC TẾ 33
4.1 Quá trình thực hiện 34
4.1.1 Các trang hiển thị (View) 34 4.1.2 Action35 4.1.3 ActionForm 35 4.1.4 Model 36 4.1.5 struts-config.xml 36 4.2 Triển Khai Ứng Dụng 36
Trang 7KẾT LUẬN 38
i Kết quả đạt được 38
ii Hạn chế 38
iii Khắc phục và hướng phát triển đề tài 38
Tài Liệu Tham Khảo 39
Trang 8CHƯƠNG 1: TỔNG QUAN NGÔN NGỮ JAVA VÀ CÁC THÀNH
PHẦN 1.1 Tổng quan về ngôn ngữ java
1.1.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
1.1.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
1.1.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
Trang 9Chương trình dịch trong java
1.1.4 Các loại chương trình trong java
• Java/Sun class libraries
• Java Virtual Machine
• Structure of class files
Trang 101.2 Giới thiệu môi trường phát triển ứng dụng java Eclipse
1.2.1 Giới thiệu Eclipse, download và cài đặt
Eclipse là một nền tảng phát triển mã nguồn mở dựa trên Java, được cácnhà phát triển sử dụng để xây dựng những ứng dụng J2EE, sử dụng Eclipsenhà phát triển có thể tích hợp với nhiều công cụ hỗ trợ khác để có được một
bộ công cụ hòan chỉnh mà không cần dùng đến phần mềm riêng nào khác.Eclipse SDK (Java Development Kit) bao gồm 3 phần chính: Platform, JavaDevelopment Toolkit (JDT), Plug-in Development Environment (PDE) VớiJDT, Eclipse được xem như là một môi trường hỗ trợ phát triển Java mạnh
mẽ PDE hỗ trợ việc mở rộng Eclipse, tích hợp các Plug-in vào EclipsePlatform
Eclipse Platform là nền tảng của toàn bộ phần mềm Eclipse, mục đích của
nó là cung cấp những dịch vụ cần thiết cho việc tích hợp những bộ công cụphát triển phần mềm khác dưới dạng Plug-in, bản thân JDT cũng có thểđược coi như là một Plug-in làm cho Eclipse như là một Java IDE(Integrated Development Enviroment)
Dự án Eclipse (Eclipse Project) ban đầu được IBM thành lập vào tháng
11 2001 và được hiệp hội các nhà cung cấp phần mềm hỗ trợ Quỹ Eclipse
đã được thành lập vào tháng 1 năm 2004 như là một tổ chức phi lợi nhuậnđộc lập hoạt động như là người quản lý của cộng đồng Eclipse Nó đượcthành lập nhằm cho phép một cộng đồng minh bạch, mở và trung lập với cácnhà cung cấp phần mềm, phát triển nở rộ quanh 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ôngnghiệp phần mềm
Download, cài đặt: http://www.eclipse.org/downloads/
Trang 111.2.2 Kiến trúc Eclipse
1.2.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ó một tập tinManifest liệt kê những kết nối mà plug-in cần Pug-in chỉ được tải vàoEclipse 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
1.2.5 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ụcWorkspace
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ấnthiết cho việc thay đổi tài nguyên
1.2.6 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ắtbuộ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
1.2.7 Team support
Trang bị cho hệ thống quản trị để quản lý các dự án của người dùng viếttắt là CVS (Concurrent Versions System )
Trang 121.2.8 SWT
Standard Widget Toolkit (SWT) cung cấp các Application ProgrammingInterface (giao diện lập trình ứng dụng) viết tắt là API độc lập nền tảng chocác widget và công cụ đồ họa bằng cách cho phép tích hợp chặt chẽ với hệđiều hành bên dưới Giao diện Eclipse Platform sử dụng SWT để trình bàythông tin cho người dùng, cho dù người dùng đang làm việc trên hệ điềuhành Linux, Window hay hệ điều hành nào khác có giao diện đồ họa
1.2.9 JFace
JFace là tookit để xây dựng giao diện người dùng cấp cao, JFace là tầngtrên cùng của SWT, cung cấp các lớp thuộc mô hình MVC để phát triển cácứng dụng đồ họa dễ dàng hơn
Trang 131.3 Giới thiệu J2EE và các thành phần liên quan
Là 1 thành phần rất quan trọng và rộng lớn trong lĩnh vực java, J2EEđược dùng để phát triển các ứng dụng lớn mang tính chất phân tán rộng khắp.Đây là lĩnh vực được chú trọng và ứng dụng nhiều nhất của java trong thực tế
Sơ đồ các thành phần trong J2EE
1.3.1 Apple
• Là một chương trình Java chạy trên web browser
• Tất cả các applets phải là lớp con của lớp Applet hoặc JApplet
• Để tạo ra một applet, ta phải import:
java.applet java.awt
Trang 14destroy( )
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ònapplet thì không cần hàm main
• Applications dùng ‘System.out.println()’ để xuất, trong khi applets dùnghà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
1.3.2 JavaBean
JavaBeans là software component model Nó có thể tương tác với cácđối tượng của các software khác và có thể được dùng lại Các softwarecomponents mà có thể dùng lại này được gọi là ‘beans’ Componentsđược dùng trong môi trường phân tán (distributed environments).JavaBeans được thiết kế để dùng khi cần Java thường xây dựng các
Trang 15software thông qua các JavaBeans Khi mà Java Beans được tạo ra, thìchúng có thể được dùng như một thư viện không phụ thuộc nền
Các qui tắc để tạo ra một Beans
1.3.3 JSP (Java Server Pages)
JSP (viết tắt của tiếng Anh JavaServer Pages) còn được biết đến với một cái tên khác là Java Scripting Preprocessor - tạm dịch là "Bộ tiền xử lý
văn lệnh Java" - là một công nghệ Java cho phép các nhà phát triển tạo nộidung HTML, XML hay một số định dạng khác của trang web một cách năngđộng, trong khi hồi âm yêu cầu của trình khách Công nghệ này cho phépngười ta nhúng mã Java và một số hành động xử lý đã được định trước (pre-defined actions) vào trong nội dung tĩnh của trang
Cú pháp của JSP cho thêm các thẻ XML mới, gọi là JSP actions - hànhđộng JSP Những "hành động JSP" này được dùng để khởi động chức năngsẵn có, là những chức năng đã được xây dựng trước Cộng thêm vào đó,công nghệ còn cho phép chúng ta tạo ra các thư viện thẻ JSP (JSP taglibraries), là những cái đóng vai trò vào việc mở rộng các thẻ HTML hayXML tiêu chuẩn Thư viện thẻ (Tag libraries) là phương pháp mở rộng khảnăng của một máy chủ web trong khi những mở rộng đó không phụ thuộcvào hệ nền (về cả cấu trúc máy cũng như hệ điều hành được dùng)
Trước khi hiển thị ra trình duyệt, tập tin JSP phải được biên dịchthành Servlet, dùng bộ biên dịch JSP (JSP compiler) Bộ biên dịch JSP cóthể tạo servlet thành mã nguồn Java trước, rồi biên dịch mã nguồn ra tậptin class dùng bộ biên dịch Java, hoặc có thể trực tiếp tạo mã bytecode cho servlet từ trang JSP
Nó thừa kế tất cả các ưu điểm cũng như các đặc tính của ngôn ngữ Java JSP có thể dùng trên tất cả các platforms
Cách làm việc của JSP
Trang 16Các bước xử lý của 1 request
Cấu trúc của trang JSP
Các thẻ lệnh HTML
Mã lệnh Java Có 3 thành phần chính:
1 Directives
2 Scripting Elements
Trang 17Cơ chế hoạt động của JSP
Cơ chế hoạt động của JSP có thể mô tả như sau Các đoạn mã Java được nhúng trong trang web dưới các thẻ (tag) đặc biệt được qui định gần giống như thẻ của ngôn ngữ HTML Khi có yêu cầu gửi tới một trang JSP, webserver sẽ chuyển yêu cầu cho JSP Engine để lấy trang JSP từ hệ thống tập tin Bộ biên dịch JSP (JSP Page Compiler) sẽ chuyển các mã lệnh Java và toàn bộ nội dung trang JSP thành một Servlet Servlet này sẽ được thực thi trong môi trường máy chủ Java để trả lại các thông tin cho webserver và webserver chuyển lại cho web client
1.3.4 Servlet
Ngoài JSP là công nghệ tạo trang web động bằng java chúng ta còn cóServlet Nhưng khi viết bằng JSP thì code java và các tag html trộn lẫn với nhau, vì vậy khi chương trình mở rộng thì chúng ta rất khó quản lý cácđoạn code này, hơn nữa code jsp để bị người khác đọc vì nó nhúng chung với html dẫn đến kém bão mật Ngược lại khi viết bằng Servlet thì khác, mọi vấn đề trên sẽ được giải quyết một cách đễ dàng
Servlet đơn giản chỉ là một lớp java (*.java) chúng ta phải biên dịch thành file class sau đó sẽ chạy bằng file class này, vì thế code sẽ được bãomật hơn so với cách trên
Một Servlet khi khởi tạo thì nói sống mãi trong bộ nhớ của server Luôn lắng nghe và chờ đợi khi người dùng yêu cầu đến nó thì sẽ sẵn dùng chứ không cần khởi tạo một lần nữa Servlet chỉ ngừng lại khi chúng ta Stop hay Restart lại server
Servlet đươc dùng để mở rộng các chức năng của Java-enabled serverTrước servlet, chúng ta có các công nghệ để tạo ra web applications:
Trang 18• Common Gateway Interface (CGI)
• FastCGI
• ASP
• Server-side Java Script
Chạy trong Java Virtual Machine
Không bắt buộc Web browser phải hỗ trợ Java
Đặc điểm Servlet
Không phụ thuộc nềnLàm việc trên nhiều web servers
La công nghệ đầu tiên của java để tạo ra web ApplicationKhông nằm trong core Java API mà nằm trong hai package
javax.servlet va javax.servlet.http của Java Servlet Development Kit
(JSDK)
Kiến trúc Servels
Vòng đời của 1 Servels
Trang 19Cấu trúc của 1 Servlet
Là lớp con của lớp HttpServlet Override phương thức doGet và doPostnế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
So sánh Servlet và JSP
Trang 20
CHƯƠNG 2 KIẾN TRÚC MÔ HÌNH MVC (MODEL _VIEW_CONTROLER)
2.1 Thế nào là mô hình MVC
Mô hình MVC (Model - View - Controller) là một kiến trúc phần mềm hay
mô hình thiết kế được sử dụng trong kỹ thuật phần mềm Nó giúp cho các
developer tách ứng dụng của họ ra 3 thành phần khác nhau Model, View và Controller Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các
thành phần khác
2.2 Các thành phần trong MVC
Model (Tầng dữ liệu): Đây là thành phần chứa tất cả các nghiệp vụ logic,
phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như cácclass, hàm xử lý
View (Tầng giao diện): Đảm nhận việc hiển thị thông tin, tương tác với
người dùng, nơi chứa tất cả các đối tượng GUI như textbox, images Hiểu
Trang 21Controller (Tầng điều khiển): Giữ nhiệm vụ nhận điều hướng các yêu
cầu từ người dùng và gọi đúng những phương thức xử lý chúng Chẳng hạnthành phần này sẽ nhận request từ url và form để thao tác trực tiếp vớiModel
2.3 Mối quan hệ giữa các thành phần
2.4 Mối quan hệ giữa View và Controller
Trong MVC truyền thống, các view và controller được kết hợp chặc chẽvới nhau Mỗi view được kết hợp với một controller duy nhất Controller đượcxem như một Strategy (sự quản lý) mà view sử dụng cho đầu vào View cũngchịu trách nhiệm tạo ra các view và controller mới
Có sự logic rằng các view và các controller có quan hệ mạnh mẽ vớinhau,đầ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ácnề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ácMVC 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 đếnviệc chiệu trách nhiệm ít hơn đối với các controller của nó