NEW
Font size
WorksheetsJava-web session11
Total questions: 19
Worksheet time: 10mins
Cơ chế Data Binding trong Spring MVC có chức năng chính là gì?
Tự động chuyển đổi dữ liệu từ form HTML thành các đối tượng JSON.
Tự động ánh xạ dữ liệu từ request parameters (hoặc body) vào các thuộc tính của đối tượng Java (Model).
Thực hiện kiểm tra tính hợp lệ của dữ liệu trước khi lưu vào database.
Quản lý phiên làm việc (session) giữa client và server.
Để sử dụng các thẻ form của Spring (Spring Form Tag Library) trong JSP, chúng ta cần khai báo namespace nào?
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
Giả sử bạn có một đối tượng User với thuộc tính username. Để tạo một trường input tương ứng với thuộc tính này trong form HTML sử dụng Spring Form Tag Library, bạn sẽ dùng thẻ nào?
<input type="text" name="user.username"/>
<form:input path="username"/>
<form:text name="username"/>
<form:input path="user.username"/>
Annotation @ModelAttribute trong Controller của Spring MVC được sử dụng để làm gì trong ngữ cảnh Data Binding?
Xác định đường dẫn cơ sở cho Controller.
Liên kết dữ liệu từ request parameters vào một đối tượng Model (hoặc đối tượng lệnh).
Tạo một đối tượng Model mới và thêm nó vào View.
Đánh dấu một phương thức là handler cho các yêu cầu HTTP GET.
Khi sử dụng @ModelAttribute để binding dữ liệu từ form, nếu tên các trường trong form không khớp với tên thuộc tính trong đối tượng Model, điều gì sẽ xảy ra?
Spring MVC sẽ tự động chuyển đổi tên để khớp.
Dữ liệu của các trường không khớp sẽ bị bỏ qua và không được bind.
Ứng dụng sẽ ném ra lỗi IllegalArgumentException.
Spring MVC sẽ tạo ra các thuộc tính mới trong đối tượng Model để chứa dữ liệu không khớp.
Lớp MultipartFile trong Spring Framework được sử dụng để làm gì?
Nén nhiều file thành một file duy nhất trước khi upload.
Đại diện cho một file được upload lên từ form HTML.
Xử lý các lỗi xảy ra trong quá trình upload file.
Biểu diễn một phần của yêu cầu HTTP (ví dụ: một trường form thông thường).
Để cho phép Controller nhận MultipartFile, bạn cần cấu hình gì trong Spring MVC?
Không cần cấu hình gì đặc biệt, Spring MVC tự động hỗ trợ.
Khai báo @EnableMultipart trên Controller.
Cấu hình CommonsMultipartResolver hoặc StandardServletMultipartResolver trong cấu hình Spring.
Thêm dependency spring-webmvc vào build.gradle.
Việc upload file lên Cloud (ví dụ: Cloudinary, Amazon S3) thường mang lại lợi ích gì so với upload lên server cục bộ?
Không cần quan tâm đến băng thông mạng.
Giảm tải cho server, dễ dàng mở rộng, và cung cấp khả năng truy cập toàn cầu.
Đảm bảo an toàn dữ liệu tuyệt đối ngay cả khi server bị tấn công.
Tăng tốc độ xử lý của server ứng dụng.
Trong ngữ cảnh ứng dụng web, Validation (kiểm tra tính hợp lệ) có vai trò chính là gì?
Quản lý các phiên đăng nhập của người dùng.
Mã hóa dữ liệu trước khi gửi đến server.
Đảm bảo dữ liệu người dùng nhập vào là chính xác và tuân thủ các quy tắc nghiệp vụ.
Tăng tốc độ phản hồi của server.
Bean Validation trong Spring là một tiêu chuẩn của Java để làm gì?
Xử lý các lỗi ngoại lệ trong ứng dụng.
Tạo ra các Bean trong Spring IoC Container.
Cung cấp API và các annotation để định nghĩa và thực thi các ràng buộc kiểm tra dữ liệu trên các đối tượng Java (Beans
Định nghĩa các quy tắc để biên dịch các Bean Java.
Để tích hợp Bean Validation với Spring MVC, chúng ta thường sử dụng dependency nào để cung cấp triển khai của tiêu chuẩn Bean Validation?
spring-validation
hibernate-validator
validation-api
spring-webmvc
Giả sử bạn muốn một trường email trong đối tượng Model phải có định dạng email hợp lệ. Bạn sẽ sử dụng annotation nào từ Bean Validation?
@NotBlank
@Size
@NotEmpty
Để kích hoạt quá trình validation cho một đối tượng được bind trong Spring MVC Controller, bạn cần đặt annotation nào trước @ModelAttribute?
@Constraint
@Check
@Valid
@Validated
Để hiển thị các lỗi validation từ BindingResult lên view (JSP) sử dụng Spring Form Tag Library, bạn có thể dùng thẻ nào?
<label for="fieldName" class="error">
<c:if test="${bindingResult.hasErrors()}">
<spring:error message="fieldName"/>
<form:errors path="fieldName"/>
Để tạo một Custom Annotation Validator, bạn cần thực hiện những bước chính nào?
Tạo một file XML cấu hình riêng cho validator tùy chỉnh.
Định nghĩa một annotation mới, tạo một lớp Validator triển khai interface ConstraintValidator, và liên kết chúng.
Định nghĩa một annotation mới, tạo một lớp Validator triển khai interface Validator, và đăng ký nó với Spring.
Chỉ cần định nghĩa một annotation mới và sử dụng nó.
Bạn đang xây dựng một form đăng ký người dùng. Bạn muốn trường password phải có ít nhất 8 ký tự và chứa ít nhất một chữ số. Bạn sẽ kết hợp những annotation nào để đạt được yêu cầu này (giả sử bạn không tạo custom validator riêng cho toàn bộ logic)?
Không thể làm được mà phải sử dụng custom validator
@NotEmpty và @Pattern(regexp="\\d{1,}")
@Length(min=8) và @Digits
@Size(min=8) và @Pattern(regexp=".*[0-9].*")
Khi sử dụng BindingResult trong Controller, bạn muốn kiểm tra xem có bất kỳ lỗi validation nào không. Bạn sẽ sử dụng phương thức nào của BindingResult?
bindingResult.getErrors().isEmpty()
bindingResult.isError()
bindingResult.hasErrors()
bindingResult.isValid()
Giả sử bạn có một đối tượng Product với trường price. Bạn muốn price phải lớn hơn 0. Annotation Bean Validation nào phù hợp nhất cho yêu cầu này?
@Range(min=1)
@Positive
@PositiveOrZero
@Min(1)
iều gì sẽ xảy ra nếu bạn không có BindingResult ngay sau đối tượng được đánh dấu @Valid trong Controller method signature, và quá trình validation thất bại (có lỗi)?
Spring sẽ cố gắng tự động sửa các lỗi validation.
Spring MVC sẽ ném ra một ngoại lệ MethodArgumentNotValidException (hoặc BindException), dẫn đến lỗi 500 hoặc 400.
Các lỗi validation sẽ được bỏ qua và dữ liệu vẫn được xử lý.
Spring MVC sẽ tự động chuyển hướng người dùng đến một trang lỗi mặc định.
