Trang JSP: success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Thành công</title>
</head>
<body>
<div>
<h1>Thông tin người dùng</h1>
<div>Họ tên: ${user.name}</div>
<div>Tuổi: ${requestScope.user.age}</div>
</div>
</body>
</html>
1. Trả về kiểu String để điều hướng
@RequestMapping("/stringTest")
public String handleWithString(Model model) {
UserInfo userInfo = new UserInfo();
userInfo.setName("Nguyễn Văn A");
userInfo.setAge(25);
model.addAttribute("user", userInfo);
return "success"; // Tên view (JSP)
}
2. Phương thức trả về void
Khi không trả về giá trị, Spring MVC sẽ không tự động xử lý view. Cần chủ động điều hướng bằng HttpServletRequest hoặc HttpServletResponse.
@RequestMapping("/voidTest")
public void handleWithVoid(HttpServletRequest req, HttpServletResponse res,
@RequestParam String action) throws ServletException, IOException {
UserInfo user = new UserInfo();
user.setName("Lê Thị B");
user.setAge(30);
req.setAttribute("user", user);
if ("forward".equals(action)) {
req.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(req, res);
} else if ("redirect".equals(action)) {
res.sendRedirect(req.getContextPath() + "/stringTest");
} else if ("direct".equals(action)) {
res.setContentType("text/html; charset=UTF-8");
PrintWriter out = res.getWriter();
out.println("<html><head><title>Kết quả trực tiếp</title></head><body>" +
"<h1>Thông tin người dùng</h1>" +
"<p>Họ tên: " + user.getName() + "</p>" +
"<p>Tuổi: " + user.getAge() + "</p>" +
"</body></html>");
}
}
3. Trả dữ liệu JSON qua @ResponseBody
3.1 Cấu hình hỗ trợ JSON
Bước 1: Thêm thư viện Jackson vào pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
Bước 2: Cấu hình tài nguyên tĩnh trong springmvc.xml để tránh chặn file JS/CSS:
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:resources location="/css/" mapping="/css/**"/>
3.2 Triển khai AJAX với jQuery
Trong JSP:
<input type="button" id="btnJson" value="Gửi yêu cầu JSON"/>
<script src="/js/jquery.min.js"></script>
<script>
$(function() {
$("#btnJson").click(function() {
$.ajax({
type: "POST",
url: "${pageContext.request.contextPath}/responseJsonTest",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ name: "Trần Văn C", age: 28 }),
dataType: "json",
success: function(resp) {
alert(`Tên: ${resp.name}, Tuổi: ${resp.age}`);
}
});
});
});
</script>
Controller:
@RequestMapping("/responseJsonTest")
@ResponseBody
public UserInfo handleJsonRequest(@RequestBody UserInfo inputUser) {
System.out.println("Nhận từ client: " + inputUser);
inputUser.setName("Phạm Thị D");
inputUser.setAge(35);
return inputUser; // Tự động chuyển sang JSON
}