InternalResourceViewResolver视图解析器默认使用的是JSTL解析器,要使用JSTL标签库需要导入JSTL的依赖。
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
jsp页面导入jstl标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<table border="1px" width="500px" cellspacing="0px">
<tr>
<td>userId</td>
<td>username</td>
<td>age</td>
<td>sex</td>
<td>createTime</td>
</tr>
<c:forEach items="${users }" var="user">
<tr>
<td>${user.userId }</td>
<td>${user.username }</td>
<td>${user.age }</td>
<td>${user.sex }</td>
<td>${user.createTime }</td>
</tr>
</c:forEach>
</table>
</body>
</html>
Controller代码:
@RequestMapping(value = "/test14")
public ModelAndView test14() {
ModelAndView mv = new ModelAndView("users2");
List<User> users = new ArrayList<User>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setUserId(Long.valueOf(i));
user.setUsername("user_" + i);
user.setPassword("12345" + i);
user.setSex(i % 2);
user.setAge(20 + i);
user.setCreateTime(new Date());
user.setUpdatedTime(user.getCreateTime());
users.add(user);
}
mv.addObject("users", users);
return mv;
}
测试结果:
@ResponseBody:将响应的数据以json格式返回。
示例:
Controller代码:
@RequestMapping("/test15")
@ResponseBody // 将数据以json格式返回
public List<User> test15() {
List<User> users = new ArrayList<User>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setUserId(Long.valueOf(i));
user.setUsername("user_" + i);
user.setPassword("12345" + i);
user.setSex(i % 2);
user.setAge(20 + i);
user.setCreateTime(new Date());
user.setUpdatedTime(user.getCreateTime());
users.add(user);
}
return users;
}
测试:浏览器访问,查看返回结果
通过以上测试可以得知,@ResponseBody注解可以将返回的结果进行json序列化。
Jackson:json处理工具包
添加maven依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
原理:
当一个处理请求的方法标记为@ResponseBody时,就说明该方法要输出其它视图(json、xml),SpringMVC通过已定义的转化器做转发输出,默认输出json。
@RequestBody:可以将请求的json数据转化为POJO对象(和@ResponseBody相反)。
示例:
/**
* 测试@RequestBody:将接收的json数据反序列化成User对象
*
* @param user
* @return
*/
@RequestMapping("/test17")
public ModelAndView test17(@RequestBody User user) {
ModelAndView mv = new ModelAndView("hello");
mv.addObject("msg", "user=" + user);
return mv;
}
测试结果: