第一个实例
导入jar包如下:
jackson-annotations-2.1.5.jar
jackson-core-2.1.5.jar
jackson-databind-2.1.5.jar
1.控制器中的方法
@Controller
public class SpringMVCTestNew {
@Autowired
private EmployeeDao employDao ;
/**
* 测试返回json数据
* @return
*/
@ResponseBody
@RequestMapping("/testJson")
public Collection testJson()
{
return employDao.getAll();
}
}
2.index.jsp
$(function(){
$("#testJson").click(function(){
var url = this.href;
var args = {};
$.post(url, args, function(data){
console.log(data)
for(var i = 0; i < data.length; i++){
var id = data[i].id;
var lastName = data[i].lastName;
alert(id + ": " + lastName);
}
});
return false;
});
})
实现原理
HttpMessageConverter 是 Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息
Paste_Image.png
HttpMessageConverter的实现类
Paste_Image.png
加入 jackson jar 包后, RequestMappingHandlerAdapter
装配的 HttpMessageConverter 如下:
Paste_Image.png
当控制器处理方法使用到 @RequestBody/@ResponseBody 或
HttpEntity/ResponseEntity 时, Spring 首先根据请求头或响应头的
Accept 属性选择匹配的 HttpMessageConverter, 进而根据参数类型或泛型类型的过滤得到匹配的 HttpMessageConverter, 若找不到可用的
HttpMessageConverter 将报错.
@RequestBody 和 @ResponseBody 不需要成对出现
Paste_Image.png
关于国际化:
新建三个国际化资源文件:
i18n.properties文件内容:
Paste_Image.png
i18n_zh_CN.properties中文文件内容:
Paste_Image.png
i18n_en_US.properties英文文件内容:
Paste_Image.png
配置springmvc.xml
在页面上能够根据浏览器语言设置的情况对文本(不是内容), 时间, 数值进行本地化处理, 使用 JSTL 的 fmt 标签
在WEB_INF/views/i18n.jsp中使用fmt标签
配置springmvc.xml文件直接访问i18n.jsp
用户名
此时如果在浏览器改变浏览器的语言设置为英文,再次访问则会显示 username
可以在 bean 中获取国际化资源文件 Locale 对应的消息, 在 bean 中注入 ResourceBundleMessageSource 的示例, 使用其对应的 getMessage 方法即可
在controller的目标方法中获取国际化属性:
@RequestMapping("/i18n")
public String testI18n(Locale locale){
String val = messageSource.getMessage("i18n.user", null, locale);
System.out.println(val);
return "i18n";
}
可以通过超链接切换 Locale, 而不再依赖于浏览器的语言设置情况, 配置 LocalResolver 和 LocaleChangeInterceptor
配置springmvc.xml配置文件
修改 i18n.jsp 页面
Paste_Image.png