Tài liệu Giới thiệu Spring Roo, Phần 2: Phát triển một ứng dụng bằng Spring Roo pptx

12 478 1
Tài liệu Giới thiệu Spring Roo, Phần 2: Phát triển một ứng dụng bằng Spring Roo pptx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giới thiệu Spring Roo, Phần 2: Phát triển ứng dụng Spring Roo Để mở rộng ứng dụng hội nghị mình, cần tạo lại ứng dụng từ Phần Bạn làm theo hướng dẫn trước sử dụng lệnh script (tạo kịch lệnh) Roo Lệnh script thực tất lệnh quy định tệp tài nguyên Nếu bạn làm theo Phần 1, bạn nhận thấy Roo tạo tệp tên log.roo, có tất lệnh thực trình vỏ Roo Chúng ta thực tệp log.roo tạo lại ứng dụng Tệp bao gồm mã mẫu Bạn đổi tên conference.roo Tạo thư mục có tên conference chép conference.roo vào thư mục Mở trình vỏ dịng lệnh hệ điều hành bạn Chuyển đến thư mục conference mà bạn vừa tạo Thực lệnh script file conference.roo Lệnh script tạo lại ứng dụng vài giây bạn có JAR cần thiết kho lưu trữ Maven Nếu khơng, nhiều thời gian phải tải tất JAR Lệnh script có ích theo cách bạn sử dụng khn mẫu để tạo dự án Spring quản lý Trước tiến lên, nhập dự án Maven STS STS có đóng gói sẵn với trình cắm thêm Eclipse Maven Bạn nên nhập dự án cách chọn File > Import > Maven > Existing Maven Projects (Các dự án Maven có), sau chọn thư mục dự án Chúng ta nhập dự án STS viết số mã tùy chỉnh sau Ứng dụng web mà tạo hoạt động kiểm tra thủ cơng nhờ tạo, đọc, cập nhật xóa thực thể Speaker (Người nói) Talk (Cuộc thảo luận) Nhưng khơng cịn thú vị phải khơng tự động hố q trình này? Về đầu trang Kiểm tra web tự động hóa Ở có kèm tính Spring Roo là: hỗ trợ kiểm tra Selen Selen tập công cụ mạnh hỗ trợ phát triển nhanh tự động hóa kiểm tra cho ứng dụng dựa web Để bổ sung hỗ trợ kiểm tra Selen vào ứng dụng bạn, thực lệnh sau: selenium test controller ~.web.SpeakerController selenium test controller ~.web.TalkController Lệnh selenium test tạo kiểm tra Selen cho điều khiển Speaker Talk Lệnh có thuộc tính bắt buộc tên controller (bộ điều khiển) để rõ tên điều khiển để tạo kiểm tra Selen Lệnh có hai thuộc tính tuỳ chọn tên name serverUrl để rõ tên kiểm tra Selen máy chủ nơi ứng dụng web có sẵn Spring Roo bổ sung trình cắm thêm Selenium Maven bạn thực lệnh selenium test Ở trên, tạo trường hợp kiểm tra Selen cho điều khiển mình, trước chạy chúng, cần phải sửa chữa lỗi nhỏ kiểm tra Selen Spring Roo tạo Chúng ta thêm ràng buộc thực thể Speaker tuổi nên 25 60, kiểm tra không lưu tâm đến ràng buộc Nó sử dụng giá trị tuổi 1, đó, việc kiểm tra thất bại Chúng ta cần sửa đổi tệp có tên test-speaker.xhtml cập nhật tệp Liệt kê Liệt kê Sửa đổi tệp test-speaker.xhtml type _age_id 1 thành type _age_id 26 Lỗi sửa chữa phát hành sau Spring Roo Để chạy trường hợp kiểm tra Selen, cần khởi động máy chủ Tomcat Bạn khởi động cách sử dụng lệnh Maven mvn tomcat:run Theo mặc định, tất ứng dụng web tạo cách sử dụng Roo có trình cắm thêm Maven cho máy chủ web Tomcat Jetty Để chạy selenium test, thực lệnh Maven mvn selenium:selenese Lệnh khởi động trình duyệt Firefox để chạy trường hợp kiểm tra Selen Trong trình thực kiểm tra này, bạn thấy hình ảnh tương tự Hình Hình Các kiểm tra Selen Hiện nay, truy cập ứng dụng thực tạo, cập nhật xóa Speaker Talk Trong ứng dụng thời gian thực, có vấn đề bảo mật người thực hoạt động Về đầu trang Bảo mật ứng dụng web Roo sử dụng Spring Security (Bảo mật Spring) để bổ sung bảo mật vào ứng dụng bạn dòng Spring Security xác thực tùy chỉnh cao mạnh mẽ khung cơng tác kiểm sốt truy cập Nó tiêu chuẩn thực tế để bảo mật ứng dụng dựa Spring Bổ sung Spring Security Để thêm Spring Security, gõ lệnh sau: security setup (thiết lập bảo mật) Lệnh thêm tất tệp JAR Spring Security cần thiết thiết lập bảo mật cho ứng dụng bạn Lệnh tạo tệp khác, có tệp quan trọng tệp applicationContext security.xml, có tất định nghĩa bean liên quan đến bảo mật Ngữ cảnh tệp applicationContext-security.xml trông giống nội dung Liệt kê Tôi thay mật băm nhỏ với dấu chấm chấm để làm cho dễ đọc Liệt kê Ngữ cảnh applicationContext-security.xml these elements to secure URIs in your application > pattern="/choices/**" access="hasRole('ROLE_ADMIN')"/> pattern="/member/**" access="isAuthenticated()" /> pattern="/resources/**" access="permitAll" /> pattern="/**" access="permitAll" /> Bảo mật Roo cấu hình tổng qt khơng có tài liệu tham khảo cho ứng dụng Hãy nhớ Roo trợ giúp thiết lập cấu hình ứng dụng để khởi đầu nhanh chóng, trách nhiệm nhà phát triển tùy chỉnh sản phẩm cuối Trong trường hợp này, Roo cung cấp khuôn mẫu cho Spring Security trách nhiệm tùy chỉnh theo nhu cầu Tùy chỉnh Spring Security Trong ứng dụng chúng ta, tạo Speaker, có Speaker tạo Talk Chúng ta cần sửa đổi tệp applicationContext-security.xml Liệt kê cho thấy phần XML cần sửa đổi Liệt kê Sửa đổi tệp applicationContext-security.xml pattern="/talks/**" access="hasRole('ROLE_USER')"/> pattern="/speakers/**" access="permitAll" /> pattern="/resources/**" access="permitAll" /> pattern="/**" access="permitAll" /> Tôi cập nhật intercept-url cho người dùng có vai trị người dùng tạo Talk tất người dùng phép tự đăng ký Speaker Spring Security Roo-tạo hiển thị sử dụng trình cung cấp xác thực nhớ cấu hình thẻ Kể từ ứng dụng quản lý thực thể Speaker, nên xây dựng trình cung cấp xác thực tùy chỉnh, sử dụng liệu Speaker Để xác thực, sử dụng email Speaker làm tên người dùng thêm trường mật cho thực thể Speaker, mà sử dụng làm mật xác thực Một lần nữa, tơi sử dụng trình vỏ Roo để thêm trường password (mật khẩu) cho thực thể Speaker: field string class ~.domain.Speaker fieldName password notNull sizeMin –sizeMax 10 Tôi thêm ràng buộc mật nên không rỗng mật phải có chiều dài từ đến 10 ký tự Do sử dụng email mật làm tham số xác thực, muốn tìm Speaker với email mật cụ thể Spring Roo cung cấp phương tiện để tạo finder (bộ dị tìm) cho ứng dụng bạn sử dụng lệnh finder add (thêm dò tìm): finder add finderName findSpeakersByEmailAndPasswordEquals class ~.domain.Speaker Bạn tìm thấy tất dị tìm cho thực thể cách sử dụng lệnh finder list (liệt kê dị tìm) Lệnh finder add (thêm dị tìm) viết mã dị tìm tệp Speaker_Roo_Finder.aj viết số tệp có liên quan đến khung nhìn Điều cho phép bạn tìm kiếm người nói-Speaker từ giao diện đồ họa (GUI) Viết AuthenticationProvider tùy chỉnh Chúng ta viết trình cung cấp xác thực (Authentication provider) tùy chỉnh cách mở rộng lớp tên AbstractUserDetailsAuthenticationProvider, làm việc với tên người dùng/mật giống xác thực Các lớp mở rộng AbstractUserDetailsAuthenticationProvider phải cung cấp công cụ cho hai phương thức trừu tượng nó: additionalAuthenticationChecks retrieveUser Trình cung cấp gọi phương thức retrieveUser để xác thực Speaker cách sử dụng email mật nhập vào Việc tra cứu sở liệu cho Speaker thực sử dụng dị tìm tạo Nếu tìm thấy Speaker, GrantedAuthority ROLE_USER gán cho Speaker Phương thức cuối trả đối tượng UserDetails điền vào đăng nhập thành công hay không đưa BadCredentialsException với thông báo phù hợp (xem Liệt kê 4) Liệt kê Xác thực tuỳ chỉnh package com.dw.roo.conference.security; import java.util.ArrayList; import java.util.List; import javax.persistence.EntityNotFoundException; import javax.persistence.NonUniqueResultException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationTok en; import org.springframework.security.authentication.\ dao.AbstractUserDetailsAuthenticationProvider; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.GrantedAuthorityImpl; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.util.StringUtils; import com.dw.roo.conference.domain.Speaker; public class ConferenceAuthenticationProvider extends \ AbstractUserDetailsAuthenticationProvider { @Override protected void additionalAuthenticationChecks(UserDetails userDetails, \ UsernamePasswordAuthenticationToken authentication) throws AuthenticationException { // TODO Auto-generated method stub } @Override protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken \ authentication) throws AuthenticationException { String password = (String) authentication.getCredentials(); if (!StringUtils.hasText(password)) { throw new BadCredentialsException("Please enter password"); } List authorities = new ArrayList(); try { Speaker speaker = Speaker.findSpeakersByEmailAndPasswordEquals(username, \ password).getSingleResult(); authorities.add(new GrantedAuthorityImpl("ROLE_USER")); } catch (EmptyResultDataAccessException e) { throw new BadCredentialsException("Invalid username or password"); } catch (EntityNotFoundException e) { throw new BadCredentialsException("Invalid user"); } catch (NonUniqueResultException e) { throw new BadCredentialsException("Non-unique user, contact administrator"); } return new User(username, password, true, // enabled true, // account not expired true, // credentials not expired true, // account not locked authorities); } } Trong tệp applicationContext-security.xml, phải định nghĩa bean conferenceAuthenticationProvider (trình cung cấp xác thực hội nghị) thay trình cung cấp xác thực nhớ Roo tạo conferenceAuthenticationProvider Liệt kê Liệt kê conferenceAuthenticationProvider Bây bạn khởi động máy chủ cố gắng tạo Talk, hình đăng nhập mở trước bạn, bạn phải nhập email mật Speaker mà bạn tạo Mục đích việc xây dựng trình cung cấp xác thực tùy chỉnh khơng phải để xây dựng trình cung cấp xác thực lý tưởng mà bạn thấy Roo làm bạn phải tự làm Về đầu trang Thông báo email Trong ứng dụng chúng ta, Speaker nhận email họ tạo Talk, thêm hỗ trợ email cho ứng dụng Chúng ta sử dụng Gmail làm máy chủ SMTP để tập trung vào việc gửi email sử dụng Roo Việc thêm hỗ trợ cho ứng dụng thực lệnh sau: email sender setup hostServer smtp.gmail.com username \ password port 587 protocol SMTP Lệnh email sender (người gửi email) cài đặt JavaMailSender (Người gửi email Java) Spring dự án bạn Bạn thay đổi đặc tính liên quan đến email tệp email.properties Sau tạo Talk, cần gửi email Để làm việc đó, cần thêm trường email TalkController (Bộ điều khiển thảo luận) Để thêm trường email, gõ: field email template class ~.web.TalkController Lệnh thêm khuôn mẫu MailSender phương thức sendMessage (Gửi thông báo) tới TalkController Bây cần khởi động phương thức sendMessage sau Talk lưu giữ lâu bền sở liệu Khi tất mã dùng cho TalkController tồn tệp TalkController_Roo_Controller.aj, cách dễ để thực nhiệm vụ tạo phương thức encodeUrlPathSegment từ tệp aj cho lớp TalkController thêm gọi đến phương thức sendMessage sau dòng talk.persist(), Liệt kê Liệt kê Tạo phương thức encodeUrlPathSegment từ tệp aj cho lớp TalkController public class TalkController { @Autowired private transient MailSender mailTemplate; public void sendMessage(String mailFrom, String subject, String mailTo, String message) { org.springframework.mail.SimpleMailMessage \ simpleMailMessage = new org.springframework.mail.SimpleMailMessage(); simpleMailMessage.setFrom(mailFrom); simpleMailMessage.setSubject(subject); simpleMailMessage.setTo(mailTo); simpleMailMessage.setText(message); mailTemplate.send(simpleMailMessage); } @RequestMapping(method = RequestMethod.POST) public String create(@Valid Talk talk, BindingResult result, Model model, HttpServletRequest request) { if (result.hasErrors()) { model.addAttribute("talk", talk); return "talks/create"; } talk.persist(); sendMessage("spring.roo.playground@gmail.com", "Your talk is created", talk.getSpeaker().getEmail(), \ "Congrats your talk is created"); return "redirect:/talks/" + encodeUrlPathSegment(talk.getId().toString(), request); } private String encodeUrlPathSegment(String pathSegment, HttpServletRequest request) { String enc = request.getCharacterEncoding(); if (enc == null) { enc = WebUtils.DEFAULT_CHARACTER_ENCODING; } try { pathSegment = UriUtils.encodePathSegment(pathSegment, enc); } catch (UnsupportedEncodingException uee) { } return pathSegment; } } Sau đây, Speaker nhận email tài khoản định sau Talk tạo Về đầu trang Hỗ trợ quốc tế Khi xây dựng ứng dụng web dựa Internet, điều quan trọng hỗ trợ ngôn ngữ khác cho người dùng từ khu vực địa lý khác sử dụng ứng dụng Spring Roo bổ sung hỗ trợ quốc tế lệnh web mvc install language, cài đặt ngơn ngữ ứng dụng bạn Ví dụ, lệnh cho ngôn ngữ Tây Ban Nha Ý là: web mvc install language code es web mvc install language code it Roo hỗ trợ sáu ngơn ngữ bạn viết ngơn ngữ bổ sung cho ngôn ngữ khác theo lựa chọn bạn Bây chạy ứng dụng này, cờ (của Italy Tây Ban Nha) hiển thị, với cờ Anh Nếu bạn nhấn chuột vào cờ cờ đó, bạn xem ứng dụng web theo ngơn ngữ tương ứng với cờ Về đầu trang Xã hội hóa ứng dụng web bạn Đây kỷ nguyên phương tiện truyền thông xã hội tính xã hội thường thêm vào ứng dụng Để thêm đoạn video Talk thường có ý nghĩa Roo cung cấp hỗ trợ để nhúng đoạn video tải lên YouTube, Vimeo, Viddler Google Video, v.v Để nhúng đoạn video, sử dụng lệnh sau: web mvc embed video provider VIMEO videoId 16069687 Nếu bạn khởi động máy chủ khởi chạy ứng dụng trình duyệt, bạn xem đoạn video nhúng nói Tương tự vậy, bạn thêm vào đoạn video YouTube Viddler Roo cung cấp cho bạn tùy chọn để nhúng thông báo Twitter, tài liệu, ticker, đồ, ảnh luồng video ứng dụng bạn Các lệnh khác Liệt kê Liệt kê Các lệnh nhúng web web web web web web web mvc mvc mvc mvc mvc mvc mvc embed embed embed embed embed embed embed document finances map photos stream video twitter video Về đầu trang Kỹ thuật đảo ngược sở liệu Kỹ thuật đảo ngược sở liệu (DBRE) cho phép bạn tự xem xét sở liệu có trưng ứng dụng Để hiển thị cách DBRE làm việc, tạo ứng dụng liên hệ ngược từ lược đồ liên hệ ngược có Tơi sử dụng MySQL làm sở liệu Trước khởi chạy Roo, phải tạo lược đồ cài đặt MySQL Chạy kịch SQL Liệt kê để tạo lược đồ liên hệ ngược sở liệu MySQL bạn Liệt kê Kịch lệnh SQL để tạo lược đồ liên hệ ngược create database feedback_schema; use feedback_schema; CREATE TABLE feedback ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, TalkTitle VARCHAR(45) NOT NULL, SpeakerName VARCHAR(45) NOT NULL, Feedback VARCHAR(4000) NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB; Đây lược đồ đơn giản có bảng khơng có mối quan hệ nào, Roo thực thành cơng kỹ thuật-đảo ngược lược đồ phức tạp có nhiều bảng mối quan hệ Sau bạn chạy kịch lệnh SQL tạo lược đồ mình, tạo ứng dụng liên hệ ngược: Tạo thư mục gọi feedback (liên hệ ngược) Từ dòng lệnh hệ điều hành bạn, vào thư mục feedback Mở trình vỏ Roo cách gõ lệnh roo Gõ project topLevelPackage com.dw.roo.feedback để tạo dự án Maven Trong ứng dụng này, sử dụng MySQL làm sở liệu Để thiết lập tồn lâu bền cho ứng dụng bạn, sử dụng: persistence setup provider HIBERNATE database MYSQL databaseName feedback_schema userName root password password Khi tạo lược đồ với người dùng chủ, sử dụng root làm tên người dùng Xin nhập tên người dùng mật mà bạn dùng chúng để tạo lược đồ Lệnh thêm tất JAR cần thiết cho tồn lâu bền Bạn tự xem xét lược đồ sở liệu lệnh database introspect schema feedback_schema Lệnh database introspect (tự xem xét sở liệu) cho thấy siêu liệu liên quan đến lược đồ sở liệu Lệnh cho bạn thấy siêu liệu cho lược đồ bạn giao diện điều khiển trình vỏ Roo Bạn xuất xml siêu liệu vào tệp sử dụng lệnh file attribute 9 Khi bạn hoàn thành việc tự xem xét cho lược đồ sở liệu mình, bạn sử dụng kỹ thuật-đảo ngược lược đồ cách sử dụng lệnh database reverse engineer schema feedback_schema package ~.domain Lệnh database reverse engineer (kỹ thuật đảo ngược sở liệu) có hai thuộc tính bắt buộc schema (lược đồ) package (gói), để rõ tên lược đồ bạn muốn dùng kỹ thuật đảo ngược gói Roo tạo mã nguồn Lệnh tạo tất thực thể gói com.dw.roo.feedback.domain 10 Bước tạo điều khiển cho ứng dụng bạn Bạn làm bước cách thực lệnh controller all package ~.web 11 Trước chạy ứng dụng mình, cần thực thay đổi nhỏ cho đặc tính persistence.xml Đặc tính hibernate.ejb.naming_strategy sử dụng ImprovedNamingStrategy, khơng làm việc với sở liệu MySQL bạn nhận ngoại lệ bạn thực lệnh mvn clean install tomcat:run Để làm cho hoạt động, phải thay đổi đặc tính hiberate.ejb.naming_strategy thành DefaultNamingStrategy, sau: 12 13 Bây bạn chạy ứng dụng liên hệ ngược lệnh Maven mvn clean install tomcat:run Bạn tải mã nguồn cho ứng dụng hội nghị liên hệ ngược (xem phần Tải về) ... cập ứng dụng thực tạo, cập nhật xóa Speaker Talk Trong ứng dụng thời gian thực, có vấn đề bảo mật người thực hoạt động Về đầu trang Bảo mật ứng dụng web Roo sử dụng Spring Security (Bảo mật Spring) ... Bảo mật Roo cấu hình tổng qt khơng có tài liệu tham khảo cho ứng dụng Hãy nhớ Roo trợ giúp thiết lập cấu hình ứng dụng để khởi đầu nhanh chóng, trách nhiệm nhà phát triển tùy chỉnh sản... trình vỏ Roo cách gõ lệnh roo Gõ project topLevelPackage com.dw .roo. feedback để tạo dự án Maven Trong ứng dụng này, sử dụng MySQL làm sở liệu Để thiết lập tồn lâu bền cho ứng dụng bạn, sử dụng:

Ngày đăng: 22/02/2014, 15:20

Hình ảnh liên quan

Hình 1. Các bài kiểm tra Selen - Tài liệu Giới thiệu Spring Roo, Phần 2: Phát triển một ứng dụng bằng Spring Roo pptx

Hình 1..

Các bài kiểm tra Selen Xem tại trang 3 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan