Tải bản đầy đủ (.docx) (62 trang)

Báo cáo phân tích hệ thống quản lý và giới thiệu tư vấn việc làm xây dựng bằng java

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.74 MB, 62 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>BỘ GIÁO DỤC VÀ ĐÀO TẠO</b>

<b>TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>BỘ GIÁO DỤC VÀ ĐÀO TẠO</b>

<b>TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH</b>

<b><PHẠM ANH PHÁT><LÊ HỒNG PHÚC></b>

<b>< HỆ THỐNG QUẢN LÝ VIỆC LÀM ></b>

<b>Mã số sinh viên: <2051050342>Mã số sinh viên: <2051050360></b>

<b>ĐỒ ÁN NGÀNH</b>

<b>NGÀNH <CÔNG NGHỆ THÔNG TIN></b>

<b>Giảng viên hướng dẫn: <Dương Hữu Thành></b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN</b>

Trong q trình thực hiện mơn học đồ án này, em đã nhận được rất nhiều sự giúp đỡtừ thầy cô trong khoa Công nghệ thông tin của Trường Đại học Mở thành phố Hồ ChíMinh. Em xin giành lời cảm ơn chân thành nhất đến với giảng viên hướng dẫn Thạc SĩDương Hữu Thành đã giành thời gian để giải đáp những thắc mắc, vướng mắc trongbài tập của em. Ngồi ra, thầy cịn hết mình hỗ trợ em trong việc tìm kiếm, khắc phục,sửa chữa những lỗi lầm và vấn đề mà em mắc phải trong lúc thực hiện đồ án. Thầy còndạy cho em những kỹ năng cần phải có khi trở thành một lập trình viên khi đi làm. Emcũng xin giành lời cảm ơn này đến với các thầy cô trong khoa Công nghệ thơng tin đãcho chúng em một mơn học có thể thử sức với bản thân mình. Cuối cùng, em xin cảmơn đến Trường Đại học Mở thành phố Hồ Chí Minh đã cho em một môi trường tốt,đầy đủ cơ sở vật chất và nhiều môn học thú vị cho em tiếp thu nhiều kiến thức mới,giúp cho chúng em dễ dàng trong việc suy nghĩ và sáng tạo trong suốt quá trình họctập đến nay.

During the period of doing project subject, I received a lot of helpful and usefulknowledge from teaching staff in Information Technology faculty of Open University.Especially, I want to express my sincere thanks to my faculty advisor Dương HữuThành because teacher Thành always took a lot of his time to help his students tofigure out the problems and taught them the way to repair it. In addition, teacherThành always listen and answer the student’s question and indicate the suitable way tofor his student’s main major. I also give this sincere thanks to the teaching staff infaculty Information Technology for creating a subject that helps me cultivate myexperience and develop my competence. Finally, I want to thank Open Universitywhere I have a wonderful learning environment and have full facilities. Furthermore,Open University also have a lot of subject that very interesting, it’s help me absorb alot new knowledge and feel comfortable in all the period that I’ve learned.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN</b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>TÓM TẮT ĐỐ ÁN NGÀNH</b>

Hệ thống quản lý việc làm được tạo ra nhằm mục đích quản lý những cơng việc đượctuyển dụng, ứng tuyển một cách dễ sử dụng, dễ quản lý . Hệ thống sẽ bao gồm cácchức năng như đăng tin tuyển dụng, tìm kiếm việc làm theo nhiều tiêu chí, ứng tuyển,xem thống kê qua từng năm, xác nhận những nhà tuyển dụng. Nhà tuyển dụng cũng cóthể xem được những đánh giá mà ứng viên đã bình luận trước đó.

Người dùng trong quyền nhà tuyển dụng có thể sử dụng chức năng đăng tin tuyểndụng bằng cách điền thông tin ứng tuyển lên và những yêu cầu trong việc tuyển dụngđó. Nhà tuyển dụng cịn có thể xem thơng tin của các ứng viên khác.

Khi đăng ký người dùng thì sẽ điền đầy đủ thơng tin hồ sơ của mình. Sau khi đăng kýngười dùng trong quyền ứng viên có thể cập nhật hồ sơ thơng tin cá nhân của mình,tìm kiếm việc làm theo nhiều thiêu chí, tìm kiếm tên công việc muốn ứng tuyển và nộpđơn ứng tuyển. Ngồi ra, người dùng ứng viên cịn có thể xem và đánh giá các nhàtuyển dụng mà họ muốn. Ứng viên khi vào sẽ thấy các công việc được hiển thị theongày mới nhất của hiện tại.

Người dùng trong quyền Quản trị có quyền xem biểu đồ thống kê các đơn ứng tuyểnqua các năm theo từng ngành nghề mà ứng viên đã chọn hoặc xác thực quyền của nhàtuyển dụng để nhà tuyển dụng có thể đăng bài tuyển dụng lên trang tìm việc làm.Đồ án này sẽ giúp cho việc quản lý việc làm trở nên hiệu quả hơn, tiết kiệm thời gianvà tăng sự tương tác giữa Quản trị và nhà tuyển dụng,ứng viên.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Hệ thống quản lý việc làm của chúng em được tạo ra sẽ phù hợp với các ứng viên nhưhọc sinh, sinh viên đang có nhu cầu tìm kiếm việc làm để thực tập và các ứng viênđang trong giai đoạn tìm kiếm việc làm mới cho bản thân.

Hệ thống khi phát triển sẽ có các chức năng cơ bản như một trang Web việc làm thậtnhư việc tìm kiếm việc làm theo các tiêu chí, xem thơng tin chi tiết từng công việctuyển dụng, nộp đơn ứng tuyển và cũng như tạo File CV khi ứng viên cần. Giúp nhàtuyển dụng tạo cơ hội việc làm cho các ứng viên bằng cách đăng tin tuyển dụng. Quảntrị viên thì quan sát, kiểm tra về thơng tin của các nhà tuyển dụng đã đăng ký trêntrang Web từ đó có thể xác minh được nhà tuyển dụng để cho phép họ đăng tin tuyểndụng. Quản trị cịn có thể xuất báo cáo thống kê dưới dạng Excel hoặc PDF.

Hệ thống đã có thể thành cơng xử lý logic các chức năng cơ bản cũng như phụ trợ kểtrên. Tuy vậy nhưng hệ thống sẽ cần phải cải tiến thêm về mặt logic vì đơi khi hệthống xử lý lỗi khá thô sơ và cần phải chi tiết về nhiều trường hợp khác nhau cũng nhưthiếu logic về một vài phần nhỏ bên trong.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

2.1.1. Tổng quan về Spring Framework...15

2.1.2. Kiến trúc Spring Framework...16

2.1.3. Tổng quan về Spring Boot...17

2.1.4. Kiến trúc về Spring Boot...19

2.1.5. Hibernate...20

2.1.6. Tổng quan về Spring MVC...23

2.1.7. Các thành phần cấu hình khác...28

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

2.2. ReactJS...28

2.2.1. Giới thiệu ReactJS...28

2.2.2. Kết hợp ReactJS với Java Spring Boot...31

Chương 3. HỆ THỐNG QUẢN LÝ VIỆC LÀM...33

3.4.2. Tìm kiếm và đánh giá nhà tuyển dụng...40

3.4.3. Tìm kiếm việc theo nhiều tiêu chí...43

3.4.4. Thống kê...46

3.4.5. Xuất Excel...48

3.4.6. Tạo File CV...49

3.4.7. Thêm đơn ứng tuyển...50

3.4.8. Lưu ID cơng việc để thêm Application...54

3.4.9. Xố và xem đơn ứng tuyển Application...55

Chương 4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN...57

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

OXM – Object-XML Mapping – Ánh xạ XML

JPA – Java Persistence API- Giao diện Lập trình ứng dụng lưu trữ JavaJMS- Java Message Service – Dịch vụ tin nhắn

DOM- Document Object Model- Đại diện cho giao diện người dùng

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Hình 2.1.5.7. Minh hoạ Hibernate...22

Hình 2.1.6.1. Thư viện JSTL - Spring Security...23

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Hình 2.2.2.1. Kiến trúc hệ thống quản lý việc làm...33

Hình 3.3.1.1. Lược đồ Use Case...34

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Hình 3.4.4.4. Lấy dữ liệu thống kê...47

Hình 3.4.5.1. Thư viện Excel Poi...48

Hình 3.4.5.2. Tạo thuộc tính Excel...48

Hình 3.4.7.3. Thơng tin nộp đơn...51

Hình 3.4.7.4. Kết quả nộp trùng cơng việc...51

Hình 3.4.7.10. Truyền dữ liệu Json...54

Hình 3.4.7.11. Kết quả Application Reactjs...54

Hình 3.4.8.1. Endpoint JobID...54

Hình 3.4.8.2. Lưu JobID vào Cookie...55

Hình 3.4.9.1. Xố và xem Application...55

Hình 3.4.9.2. Ajax deleteApp...56

Hình 3.4.9.3. Hàm xố...56

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>DANH MỤC BẢNG</b>

Bảng 2.1. phân biệt RequestParam và PathVariable...23

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>MỞ ĐẦU</b>

Trong cuộc sống hiện đại ngày nay, ngày càng có nhiều doanh nghiệp thì đi cùng vớiđó chính là sự gia tăng nguồn nhân lực của mỗi cơng ty của doanh nghiệp đó nhưng vìcơng nghệ cũng phát triển theo thời đại nên cũng có rất nhiều trang Website giả mạomọc lên thu hút nhiều bạn trẻ học sinh, sinh viên tìm kiếm việc làm để trang trải cuộcsống hoặc mới ra trường để tìm kiếm cơng việc phù hợp với ngành nghề của mình . Vìvậy việc tạo ra một trang Web quản lý việc làm để phục vụ cho nhu cầu ứng tuyển củacác nhà tuyển dụng cũng như nhu cầu tìm kiếm và ứng tuyển việc làm của các bạnsinh viên khi vừa mới ra trường. Website sẽ cung cấp cho các bạn một nơi có thể tìmthấy được việc làm ưng ý và cũng như cung cấp thông tin của các nhà tuyển dụng đểcác bạn có thể đảm bảo chất lượng cũng như tính chân thật để khơng bị lừa đảo dẫnđến những hậu quả không mong muốn. Trong trang Web này các bạn ngồi việc xemthơng tin của nhà tuyển dụng đó, các bạn cịn có thể xem được những đánh giá trướcđó về nhà tuyển dụng mà các bạn đang ứng tuyển để tìm hiểu xem cơng ty đó, nhàtuyển dụng đó ra sao và có thơng tin của nhà tuyển dụng để dễ tra cứu hơn.

Đối với các nhà tuyển dụng thì khi đăng tin tuyển dụng thì đặc biệt cần phải có sựchấp nhận của quản trị viên để xác nhận thông tin của nhà tuyển dụng đó, quản trịviên sẽ xem xét thơng tin nhà tuyển dụng đang đăng ký và kiểm trả thông tin thật kỹcàng trước khi chấp thuận cho nhà tuyển dụng đó đăng tin tuyển ứng viên. Việc nàynhằm tạo kết nối chặt chẽ giữa sinh viên và các nhà tuyển dụng, tránh trường hợp gặpcác nhà tuyển dụng lừa đảo hoặc đa cấp lừa sinh viên nên việc này giúp cho các bạnhọc sinh, sinh viên có thể bớt một phần lo lắng trong việc ứng tuyển không bị lừa mấttiền hoặc hậu quả khác.

Website quản lý việc làm có nhiều cơng dụng và có thể dễ dàng mở rộng trong tươnglai. Tuy hiện nay cũng có một số trang Web tìm kiếm việc làm nổi như TopCV, Chợtốt… nhưng chúng em sẽ cố gắng tạo nên một trang Web quản lý việc làm hoàn thiệndễ sử dụng .

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>Chương 1. GIỚI THIỆU ĐỀ TÀI</b>

<b>1.1. Giới thiệu</b>

Hệ thống quản lý việc làm là một phần mềm được thiết kế để phát triển và hỗ trợ cácứng viên dễ dàng tìm được các việc phù hợp với bản thân. Hệ thống cịn là một mơitrường tạo kết nối giữa ứng viên và các nhà tuyển dụng với nhau. Hệ thống sẽ cungcấp một giao diện trực quan từ đó người sử dụng có thể dễ dàng hiểu và sử dụng đượcmột cách linh hoạt. Ngồi ra nó cịn cung cấp nhưng tính năng hỗ trợ đi kèm trong khisử dụng như việc xem các đánh giá về các nhà tuyển dụng, cập nhật thông tin hồ sơ,đưa lên những tin tuyển dụng mới để ứng viên có thể nắm bắt được những cơ hội mớinhất cho bản thân hoặc tìm kiếm nâng cao theo nhiều tiêu chí giúp việc tìm kiếm tintuyển dụng trở nên nhanh chóng hơn, phù hợp với nhiều nhu cầu hơn.

<b>1.2. Mục tiêu đề tài1.2.1. Mục tiêu</b>

Mục tiêu chính của đề tài quản lý việc làm này khi em xây dựng nên đó chính là giúpcho những người tìm việc (ứng viên) có thể tương tác với các công việc của nhà tuyểndụng một cách dễ hiểu và thuận lợi nhất. Hệ thống cũng sẽ cung cấp chức năng xácnhận quyền của nhà tuyển dụng để tăng sự tương tác giữa quản trị viên và nhà tuyểndụng. Ngồi ra hệ thống cịn có chức năng tìm kiếm, đăng tin tuyển dụng để tăng khảnăng kết nối giữa người tuyển dụng và ứng viên.

<b>1.2.2. Đối tượng nghiên cứu</b>

Đối tượng nghiên cứu của đề tài nghiên cứu việc làm bao gồm các cá nhân, hoặc cáccông ty, các doanh nghiệp có liên quan đến việc cung cấp và tìm kiếm nhân lực và việclàm. Đó có thể là người tìm việc như học sinh, sinh viên… muốn tìm kiếm cơng việcđể trang trải cuộc sống hoặc nhà tuyển dụng, trung tâm việc làm, cơ quan, tổ chức đàotạo việc làm.

<b>1.3. Lý do chọn đề tài</b>

Trong nhu cầu thực tế hiện nay, tìm kiếm việc làm có tầm ảnh hưởng rất lớn đếnnhững thế hệ trẻ hiện này vì số lượng các bạn trẻ ngày càng tăng nên nhu cầu tìm kiếmviệc làm cũng tăng cao theo đó. Đặc biệt là các bạn học sinh, sinh viên hiện ở các vùng

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

xa lại càng không biết đâu là trang Website lừa đảo hoặc đâu là trang Website tìmkiếm việc làm chính chủ. Nhiều học sinh, sinh viên đã hoặc từng bị lừa vào nhưngtrang Website lừa đảo, đa cấp khiến cho khơng ít những sinh viên ấy rơi vào tình trạngkhó khăn trong việc trang trải cuộc sống. Từ đó chúng em có suy nghĩ tạo ra mộtWebsite tạo việc làm có thể đăng những bài tuyển dụng đã được người quản lý xácthực những nhà tuyển dụng một cách kỹ càng nhất để khơng xuất hiện những nhàtuyển dụng ảo hoặc đa cấp.

Ngồi ra còn do thị trường việc làm phong phú ngày càng có nhiều loại cơng việc phùhợp cho nhiều người, đặc biệt là trong thị trường hiện nay thì nổi nhất đó chính làngành Cơng nghệ thơng tin vì ngành nó có thể có nhiều hướng đi cho sinh viên. MộtWebsite quản lý việc làm thì có thể thu hút được nhiều người dùng và nhà tuyển dụngbiết đến để đăng bài, ứng tuyển tạo cơ hội kinh doanh giữa doanh nghiệp và ứng viên,tăng cao năng lực bản thân ứng viên. Việc xây dựng Website quản lý việc làm cịn cótính dễ mở rộng, tạo ra những chức năng tiện ích cho người dùng, có thể mở rộng ra vềnhững mục đích khác nhau liên quan đến việc làm.

Xây dựng một Website quản lý việc làm giúp cho em có thêm kinh nghiệm và rènluyện thêm về kỹ năng lập trình của chính bản thân mình, hiểu biết và học hỏi thêmnhiều điều từ việc tham khảo các Website quản lý việc làm khác để nâng cao kiến thứcvốn có của mình. Hiểu và khác phục được những vấn đề trong khi phát triển sản phẩm,rút kinh nghiệm từ những sai sót đó để bù đắp vào sau này.

<b>1.4. Bố cục báo cáo</b>

Bố cục được chia thành 3 phần. Phần 1 giới thiệu về các loại ngôn ngữ mà chúng emsử dụng và áp dụng vào môn Đồ án ngành như Spring Boot, ReactJS. Phần tiếp theo sẽgiới thiệu về những chức năng của hệ thống, đồng thời giới thiệu về kiến trúc và qtrình phân tích hệ thống quản lý việc làm. Cuối cùng là sự kết luận về hệ thống củabản thân và nêu ra những hướng đi và phát triển trong tương lai.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>Chương 2. CƠ SỞ LÝ THUYẾT</b>

<b>2.1. Spring Boot</b>

Trong quá trình phát triển Website quản lý việc làm, chúng em sử dụng ngơn ngữchính cho trang Website đó là Spring Boot vì ngơn ngữ này khá tiện lợi trong việc sửdụng qua lại giữa các lớp (class) persistence và Controller, Service qua Hibernate.

<b>2.1.1. Tổng quan về Spring Framework</b>

Spring Framework là một loại Framework được phát triển trên ứng dụng Web Java rấtlinh hoạt và mạnh mẽ, dễ sử dụng. Vì vậy việc phát triển ứng dụng được đơn giản hố,nó cịn cung cấp các đặc tính, cung cấp các cấu hình mặc định và các tính năng diđộng. Khi sử dụng Framework thì sẽ giúp cho chương trình giảm bớt những mã nguồnphức tạp, giúp chương trình xử lý và bắt đầu nhanh hơn vì Spring Framework là mộtloại framework trong suốt, khơng cần phải cấu hình và cài đặt q nhiều thông số màchỉ cần tập trung vào logic của mã nguồn.

Đặc biệt trong Spring Framework cịn có kỹ thuật mốc nối IoC (Inversion of Control)giúp cho chương trình dễ mở rộng, dễ khai báo các biến từ các gói hoặc các lớp khácnhau. Ví dụ sau về việc mốc nối từ các class từ trong Package Service qua bên lớpindexController trong Package Controller chỉ bằng các Annotation @Autowire.

Hình 2.1.1.1. Minh hoạ IoC

Ngồi ra, Spring Framework cịn cung cấp cho chúng ta các Annotation, là cách đểgắn kết với metadata vào trong mã nguồn Java. Annotation cung cấp dịch vụ phổ biểncho trình duyệt, phân biệt các tác vụ với nhau ví dụ như các Annotation thường gặpnhư @Controller để biểu thị cho lớp đó là một lớp Spring Controller, là lớp có trách

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

nhiệm xử lý các yêu cầu từ HTTP và tương tác với người dùng, @Service biểu thị cholớp Service(lớp tác vụ) Spring Service trung gian thực hiện kết nối giữa lớpRepository và Controller xử lý logic mã nguồn. Cuối cùng là @Repository biểu thị choSpring Repository, là lớp tương tác với dữ liệu và thực hiện các chức năngCRUD(Create, Read, Update, Deletete) dữ liệu.

Hình 2.1.1.2. Annotation @Repository

<b>2.1.2. Kiến trúc Spring Framework</b>

Kiến trúc của Spring Framework gồm 3 thành phần chính là Data Access/Intergraiton,Web và Core Container. Ngồi 3 thành phần chính trên cịn có AOP (Aspect -OrientedProgramming) là lập trình hướng khía cạnh giúp và bổ trợ cho lập trình hướng đốitượng trong Java.

Hình 2.1.2.3. Kiến trúc Spring Framework Runtime

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Data Access/intergration là nhóm bao gồm JDBC, ORM, OXM, JMS là những kỹthuật cung cấp giao tiếp với Database ví dụ như ORM sẽ cung cấp cho chúng ta JPAvà Hibernate để tương tác với các lớp persistence trong Java. Trong ví dụ Hibernatedưới đây, câu lệnh query đã “FROM City” là lấy đối tượng City từ trong lớp POJOchứ không phải lấy từ bảng City trong cơ sở dữ liệu.

Phần quan trọng nhất của kiến trúc Spring Framework đó chính là Core Container.Thành phần Core module là nơi cung ứng cho chúng ta các chức năng như IoC, DI(Dependency Injection) [3]. Beans sẽ cung cấp 1 BeanFactory là nơi tạo ra các @Beandùng để cấu hình, tạo mới hoặc xố các Bean đó. Beans được cấu hình thơng qua FileXML. Context hay cịn gọi là giao diện ApplicationContext, là nơi cấu hình và kết hợpcác Bean lại với nhau.

Hình 2.1.2.4. Cấu hình context:annotation-config

<b>2.1.3. Tổng quan về Spring Boot</b>

Khi nói về Sring Framework thì ta khơng thể khơng nhắc đến Spring Boot, đây có thểxem là một phần dự án nhỏ trong Spring Framework được tạo ra để việc vận hànhcũng như cấu hình hệ thống của dự án trở nên dễ dàng hơn và đáp ứng nhiều nhu cầucủa lập trình viên hiện nay. Ngoài ra cấu trúc của Spring Boot cũng được xây dựngdựa trên nền tảng của Spring Framework vì vậy khi sử dụng Spring Boot sẽ giúpchúng ta càng hiểu hơn về những cấu trúc bên trong của Spring Framework.

Spring Boot được phát triển bới công ty Pivotal Software có trụ sở tại San Francisco.Spring Boot là một dự án về mà nguồn mở và được phát triển mạnh mẽ bởi cộng đồnglập trình viên trên tồn thế giới.

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Hình 2.1.3.5 Cơng ty Pivotal Software

Khi sử dụng Spring Boot chúng ta sẽ cảm thấy nó thực thi chương trình được mượt màhơn mà khơng cần thực hiện quá nhiều bước. Vì khi cài đặt và sử dụng, nó đã tạo ranhiều lợi ích mà chúng ta khơng cần phải làm.

Auto Config: Thay vì người dùng tự cấu hình sẽ tốn nhiều thời gian nhưng khi dùngSpring Boot sẽ tự động cấu hình các phần cần thiết cho người sử dụng vì vậy ngườidùng chỉ cần Build Code sau đó là chạy chương trình bình thường.

Xây dựng Annotation: Thay vì sử dụng các File XML thì ở Spring Boot sẽ thay thếngắn gọn bằng các @Bean sử dụng kỹ thuật IoC giúp cho việc khai báo trở nên nhanhchóng và bớt phức tạp. Trong ví dụ ta thấy được một Annotation Bean của Cloudinarychỉ cần cấu hình các thuộc tính của biến cloudinary một cách dễ dàng và dễ hiểu. Saukhi cấu hình xong thì có thể gọi và sử dụng biến đó trong các lớp khác.

Hình 2.1.3.6. Annotation @Bean

Sử dụng Server Tomcat: Khi sử dụng Tomcat chúng ta chỉ cần cài đặt Server Tomcatlà có thể đơn giản hoá việc triển khai các File JAR vì giảm bớt việc cấu hình. Nó cịngiúp cho các File JAR được tối ưu tài nguyên vì chỉ cần đưa ra các thư viên và tàinguyên cần thiết khi sử dụng ứng dụng đó, việc này giúp tăng hiệu suất cho chươngtrình.

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Hình 2.1.3.7. Server Tomcat

Tuy Spring Boot có rất nhiều tiện lợi nhưng đi cùng với đó là khơng ngừng học hỏi vềSpring Boot vì để sử dụng thành thạo và dễ dàng bạn cần phải có các kiển thức cơ bảncủa phần Java Core như Java, OOP, API,… ,việc quản lý các Package và cuối cùng làJPA để có thể kết nối và tương tác giữa cơ sở dữ liệu với phần Java Core kể trên.

<b>2.1.4. Kiến trúc về Spring Boot</b>

Kiến trúc Spring Boot được tạo ra dựa trên Spring Framework vì vậy nó sẽ bao gồmcác module trong Framework. Kiến trúc gồm 4 tầng với các tác vụ khác nhau.

Hình 2.1.4.8. Kiến trúc Spring Boot

Presentation Layer hay còn gọi là Controller layer (lớp điều khiển) là lớp trên cùng củaSpring Boot được dùng để xử lý các HTTP và các Request được gửi từ server vềclient.

Business Layer hoặc là Lớp xử lý Logic, là lớp xử lý các dữ liệu và thức hiện các yêucầu phức tạp của mã nguồn. Business Layer đảm bảo rằng các hàm xử phải đúng vớitác vụ khi được gọi ở lớp Presentation Layer. Lớp này giúp cho mã nguỗn có thể dễbảo trì và mở rộng.

Persistence Layer là tầng tương tác và quản lý cơ sở dữ liệu. Lớp này cũng giống nhưData Access/Intergration trong kiến trúc của Spring Framework.

<b>2.1.5. Hibernate</b>

Hibernate là một Framework đã được giới thiệu ở phần cấu trúc Spring Frameworktrước đó ở Hình 2.1.2 .3. Hibernate sử dụng ORM giúp Java đặt được năng suất cao

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

trong việc truy vấn dữ liệu trong Database . Hibernate hỗ trợ những ứng dụng liênquan đến cơ sở dữ liệu như MySQL, SSMS…

Chúng ta cần phải cấu hình Hibernate để tạo sự liên kết giữa database và các lớp trongPOJO. Một phần sẽ từ hàm kết nối các bảng trong POJO và một phần sẽ từ hàm kháclấy dữ liệu và đóng vai trị kết nối đến database của máy tính sẽ bao gồm các thànhphần như driverClass, username, password…

Hình 2.1.5.9. Kết nối database

Khi sử dụng Hibernate sẽ giúp cho người sử dụng dễ dàng ánh xạ đến các thuộc tínhcủa đối tượng hiện tại trong lớp persistence mà không cần nhìn vào trong các bảng củacơ sở dữ liệu [4]. Chúng ta có thể tạo ra các lớp Persistence dựa vào lớp có sẵn củachương trình.

Hình 2.1.5.10. Class persistence từ Database

Sau khi chọn các bảng từ trong Database thì chúng ta sẽ nhận được các lớp trong góiPOJO đúng theo tên các bảng trong Database.

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

Hình 2.1.5.11. Kết quả từ persistence

Bên trong các lớp sẽ có các biến tương ứng với các cột/thuộc tính trong cơ sở dữ liệuvà được gắn các Annotation để xác định các mối quan hệ như một-nhiều, nhiều-nhiềutrong Database, khi tạo ra các lớp sẽ có những câu truy vấn cơ bản có sẵn do hàm tạora trong Anntation @NamedQuery [4].

Hình 2.1.5.12. Class trong Persistence

Hibernate có cấu trúc khá đơn giản. Cơ sở dữ liệu sẽ tương tác với JDBC và được gọiqua các Session Factory hoặc các câu Query để tương tác với các Persistence Objectvà trả về các kết quả tìm được. Trong Java khi mọi người thường dùng từ POJO (PlainOld Java Object) hơn là Persistence Object, thì khi Hibernate tương tác với các đốitượng trong mỗi lớp của POJO thì những đối tượng trong lớp đó cần phải có nhữngyêu cầu sau để Hibernate có thể tương tác dễ dàng hơn như các phương thức không cótham số, phải khai báo Private và phải có phương thức Getter và Setter và các lớpkhông kế thừa tường minh.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Hình 2.1.5.15. Minh hoạ Hibernate

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<b>2.1.6. Tổng quan về Spring MVC</b>

Web (MVC -Remoting) hay còn được biết đến là Spring MVC. Đây là phần nổi trộinhất của Spring Framework vì nó là nơi thực hiện các đặc trưng của Core module ởCore Container đó là IoC và DI. Mơ hình MVC bao gồm có Model-View-Controller.Model là nơi lưu trữ và xử lý logic các đối tượng trong Persistence Class (các lớptương tác với cơ sở dữ liệu)

View là nơi đại diện cho người dùng ứng dụng, sử dụng khuôn mẫu JSP cùng vớiJSTL (Java Standard Tag Library) để có thể sử dụng các Restful của Service. Ví dụ vềTag Library về Spring Security và JSTL trong File JSP

Hình 2.1.6.16. Thư viện JSTL - Spring Security

Một số thẻ thông dụng thường thấy khi sử dụng thư viện tag lib như của JSTL Core tacó thẻ <c:if> để chứa điều kiện hoặc <c:forEach> để tạo vòng lặp xuất ra các dữ liệucủa nhiều đối tượng.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

DispatcherServlet sẽ gọi những phương thức phù hợp trong Controller để xử lý yêucầu của người dùng như GET, POST, DELETE…DispatcherServlet sẽ dùngViewResolver để tìm đến những File JSP tương ứng với Controller của trang Web đóvà những lớp Controller khi được DispatcherServlet gọi thì phải gắn @Controller hoặc@RestController để nó có thể nhận diện được đó là lớp thuộc Controller.

Hình 2.1.6.18. Load .jsp

Trong hình minh hoạ trên ngoài return “index” để trả về đúng yêu cầu người là vềtrang index.jsp thì cịn có @RequestMapping để vào trang /index.jsp cịn có@RequestParam để hiển thị các tham số lên thanh URL

Hình 2.1.6.19. @RequestParam

Ngồi RequestMapping để chuyển trang và RequestParam chúng ta cịn có mộtAnnotation được sử dụng thường xuyên đó là @PathVariable để hiển thị phần chúngta lên trên thanh URL, nó cũng có cơng dụng cũng khá giống với RequestParam nhưngkhông được sử dụng như RequestParam.

Hình 2.1.6.20. @PathVariable

Trong Hình 2.1.6 .20 ta thấy được trong @GetMapping chúng ta có /JobDetail/{id}thì {id} đó sẽ được nhận dạng từ biến int id bên dưới truyền lên và phần AnnotationPathVariable để nhận diện rằng biến int id bên dưới đó sẽ truyền vào đâu thì thuộc tínhvalue sẽ gán biến int id vào trong {id} đó.

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

RequestParam PathVariableCách sử dụng Dưới dạng câu lệnh

Query hoặc URL <sup>Dưới dạng URL</sup>Kiểu tham số Dưới dạng Query String/

Form Data

Dưới dạng URLBắt buộc truyền giá trị NOT NULL NOT NULL

Số lượng tham số Một hoặc nhiều tham số Duy nhất một tham sốBảng 2.1. phân biệt RequestParam và PathVariable

Khi sử dụng Spring MVC chúng ta sử dụng thành phần Apache Tiles (mộtFramework) giúp cho việc tái sử dụng mã nguồn của các trang Web trở nên tối ưu hơnvà tiết kiệm tài nguyên hơn khi xây dựng phần Front-End. Tiles giúp cho chúng ta táchra những phần dùng chung cho tất cả các trang Web như Header, Footer hoặc các khaibáo <script> của bootstrap hoặc jquery ở một trang chung sau đó lắp ghép sẵn vào các

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

trang Web mới trong chương trình. Đầu tiên tạo thư mục Tiles.XML để khai báo cáctrang Web để sử dụng các thành phần chung kể trên.

Hình 2.1.6.23. Phần chung

Ở đây chúng ta dùng thẻ <definition> để định nghĩa từng phần cũng như định nghĩatrang Web nào sẽ hiện các thành phần đó lên khi chạy chương trình.Trong hình ảnhtrên là định nghĩa 3 thành phần base, header và footer của mỗi trang Web sẽ có 3 thànhphần dùng chung đó, cịn dưới đây là định nghĩa để từng trang Web có thể sử dụng 3thành phần trên.

Hình 2.1.6.24. Khai báo

Khi khai báo 1 trang Web dùng những thành phần chung đó thì chúng ta sẽ cho trangWeb đó kế thừa (extends) lại thành phần baseLayout đã khai báo ở phần ví dụ trước đóvà gán đường dẫn dẫn đến trang Web đó trong thư mục của chương trình ở phần“value”.

Thêm vào đó Spring MVC cịn có phần đọc File Properties giúp cho lập trình viên tăngphần bảo mật các thơng tin cần thiết hoặc cũng như kết hợp với khác như việc thôngbáo các Message khác nhau. Đầu tiên chúng ta tạo 1 File Properties để chứa các thôngtin cần thiết để gọi ra

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

Hình 2.1.6.25. File Properties

Khi khai báo ở đây thì chúng ta chỉ cần gọi phần bên trái ra chứ không cần khai báotrực tiếp phần bên phải ra trong chương trình, nó góp phần bảo mật những phần quantrọng mà chúng ta không muốn bị lộ ra từ bên ngoài. Sau đây là một ví dụ để lấy ra cácthành phần của cloudinary có trong File Properties (lưu ý cần phải khai báo@PropertiesSource để đọc được File có đi là properties)

Hình 2.1.6.26. Khai báo Properties

Ta thấy được chúng ta không cần gọi trực tiếp các dữ liệu ra mà chỉ cần gọi trong câulệnh getProperty() đúng tên với phần bên trái thì chương trình sẽ được ánh xạ đúngvào thành phần bên trái của File Properties.Trong Spring MVC, khi muốn kết nối dữliệu lấy được giữa các hàm với View (jsp) thì chúng ta sẽ có một hàm “addAttribute”.

Hình 2.1.6.27. addAttribute

Đầu tiên, chúng ta sẽ khai báo một biến Model để nhận dữ liệu và sử dụng hàmaddAttribute từ Spring Framework có sẵn, biến Model này sẽ giúp chúng ta kết nốigiữa View và Controller với nhau. Như trong hình 2.1.6.12 ta thấy được khi gọi hàmgetCity để lấy toàn bộ các Thành phố trong cơ sở dữ liệu thì tất cả các dữ liệu lấy đượcsẽ được đưa vào trong model có tên là “CITY”. Nếu như muốn lấy các dữ liệu đó ra

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

thì bên View chúng ta sẽ sử dụng thư viện TagLib đã ví dụ về các TagLib thơng dụngđã nói ở bên trên Hình 2.1.6 .17.

Hình 2.1.6.28. Sử dụng Model

Chúng ta sẽ sử dụng thư viện của JSTL để tạo ra vòng lặp forEach với items mà chúngta truyền vào đó là tên model CITY mà chúng ta đã tạo ra trước đó bên Controller dướidạng 1 tên khai báo là var=”ct”. Khi đó tất cả các dữ liệu trong model CITY sẽ đượcthay thế ngắn gọn bằng ct để lập trình viên dễ gọi ra những thuộc tính trong bảng City.Trong từng thẻ option sẽ được gán 1 giá trị value đó là id của City hiện tại vàct.nameCity sẽ hiển thị ra tên của từng thành phố vào trong thanh select đó.

<b>2.1.7. Các thành phần cấu hình khác2.2. ReactJS</b>

<b>2.2.1. Giới thiệu ReactJS</b>

ReactJS là một thư viện mở rộng của JavaScript được sử dụng phổ biến rộng rãi trênthế giới, ReactJS được sử dụng để tạo ra giao diện người dùng và được phát triển bởiFacebook [5].

ReactJS sử dụng kiến trúc dựa trên các thành phần (components) để xây dựng nên giaodiện người dùng. Điều này giúp cho việc bảo trì và mở rộng của ReactJS trở nên dễdàng và tiện lợi vì nó giúp cho mã nguồn trong khi viết bằng ReactJS có thể dễ đọchơn vì đa phần các ngơn ngữ khác sẽ cảm thấy rất khó để đọc được các thành phần đãliên kết nằm ở đâu và đã được gọi ra khi nào.

ReactJS sử dụng cú pháp JSX (JavaScript XML) là một cú pháp để viết những thànhphần và thẻ trong HTML trong cùng 1 File JavaScript [5]. Điều này giúp cho việc đọcmã nguồn khi vừa viết HTML vừa chỉnh sửa các chức năng trong JavaScript trở nêndễ đọc và dễ hiểu rằng chúng đang được gọi ra ở đâu.

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

Hình 2.2.1.29. HTML và Javascrip

Cấu trúc ReactJS của một Project cơ bản sẽ gồm các một nơi để chứa các componentđể gọi lên các View và một nơi để cấu hình các API gọi từ Axios.

Hình 2.2.1.30. Cấu trúc Project ReactJS

Khi cấu hình xong các component thì chúng ta phải khai báo vào trong App.js đểchương trình ánh xạ đến các component đó và trả ra View của từng component. Lưukhi sử dụng thẻ có liên quan đến Router thì chúng ta cần phải cài đặt react router trướcbằng cách mở một Terminal CMD và gõ lệnh “install react-router-dom@6” để sửdụng các thư viện router để ánh xạ đến từng đường dẫn path dựa vào từng thành phầnđược khai báo trong element như trong ví dụ thì đường dẫn mặc định path=”/” sẽ dẫnđến thành phần thẻ <Home> là component được tạo ra từ Home.js cũng chính là trangWeb Home.

Hình 2.2.1.31. Khai báo component Home và Login

</div>

×