快速开始-用Controller-Interface提交Get请求
在Spring中不支持控制器接口的验证或绑定。它却能容易地处理来自Get方式的请求。
这个示例在Controller中仅仅返回一个Model-Map的Json字符串,没有包含错误或者格式转换。
下面显示了创建一个简单的Json GET 控制器的所有代码。
Spring ApplicationContext
<beans>
<bean name="simpleJsonGetController"
class="org.thing.spring.json.controller.SimpleJsonGetController"/>
<bean name="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.json">simpleJsonGetController</prop>
</props>
</property>
</bean>
<bean name="viewResolver"
class="org.springframework.web.servlet.view.XmlViewResolver" />
</beans>
Spring view.xml
<beans>
<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView"/>
</beans>
form.html
<head>
<title>
First Test Spring Json Demo
</title>
<script type="text/javascript" src="script/prototype.js"></script>
<script type="text/javascript" src="script/behaviour.js"></script>
<script type="text/javascript" src="script/behaviour-roles.js"></script>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"/>
</head>
<body>
<h1>Spring JSON DEMO</h1>
<h2>Spring Ajax Get (ControlerInterface)</h2>
<b>firstname : </b><span id="firstname"></span><br/>
<b>secondname : </b><span id="secondname"></span><br/>
</br>
<button id="getName">get name</button>
<button id="clearName">clear name</button><br/>
</body>
JavaScript behaviour-roles.js
var printResult = function(transport){
var result =
"Status : " + transport.status
+ "\n"
+ "\n"
+ "Json-Result:"
+ "\n" + transport.responseText;
alert(result);
};
var myrules = {
'button#getName' : function(element){
element.onclick = function(){
new Ajax.Request('hello.json', { method:'get',
onSuccess: function(transport, json){
var json = transport.responseText.evalJSON();
printResult(transport);
$('firstname').innerHTML = json.firstname;
$('secondname').innerHTML = json.secondname;
}
});
}
},
'button#clearName' : function(element){
element.onclick = function(){
$('firstname').innerHTML = '';
$('secondname').innerHTML = '';
}
}
};
Behaviour.register(myrules);
Controller 源码
public class SimpleJsonGetController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Map model = new HashMap();
model.put("firstname", "Peter");
model.put("secondname", "Schmitt");
return new ModelAndView("jsonView", model);
}
}
效果:
Status : 200
Result:
{"firstname":"Peter","secondname":"Schmitt"}
快速开始- 用Command-Controller提交Post请求
Command-Controller提供一个完整的CommandBean,Spring对它提供校验和绑定支持。但是你必须在你的控制器类里添加校验和绑定结果。它处理简单的Post请求非常容易。这个示例在Command-Controller中仅仅返回一个Model-Map的Json字符串,没有包含错误或者格式转换。
Spring ApplicationContext
<beans>
<bean name="simpleJsonPostFormController"
class="org.thing.spring.json.controller.SimpleJsonPostFormController">
<property name="commandClass"> <value>org.thing.spring.json.controller.SpringJsonForm</value>
</property>
</bean>
<bean name="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.json">simpleJsonPostCommandController</prop>
</props>
</property>
</bean>
<bean name="viewResolver"
class="org.springframework.web.servlet.view.XmlViewResolver" />
</beans>
Spring view.xml
<beans>
<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView"/>
</beans>
form.html
<head>
<title>
First Test Spring Json Demo
</title>
<script type="text/javascript" src="script/prototype.js"></script>
<script type="text/javascript" src="script/behaviour.js"></script>
<script type="text/javascript" src="script/behaviour-roles.js"></script>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"/>
</head>
<body>
<h1>Spring JSON DEMO</h1>
<h2>Spring Ajax Post (SimpleFormControler and CommandController)</h2>
<form method="post" id="form">
<input id="placeofbirth" type="text" name="placeofbirth" ><br>
<input id="birthday" type="text" name="birthday" ><br/>
<br/>
<b>place of birth : </b><span id="t_placeofbirth"></span><br/>
<b>birthday : </b><span id="t_birthday"></span><br/>
</form>
<br/>
<button id="clearData">clear name</button>
<button id="cc_postData">send data to CommandController</button>
</body>
JavaScript behaviour-roles.js
var printResult = function(transport){
var result =
"Status : " + transport.status
+ "\n"
+ "\n"
+ "Json-Result:"
+ "\n" + transport.responseText;
alert(result);
};
var myrules = {
'button#clearData' : function(element){
element.onclick = function(){
$('t_placeofbirth').innerHTML = '';
$('t_birthday').innerHTML = '';
$('error').innerHTML = '';
},
'button#cc_postData' : function(element){
element.onclick = function(){
new Ajax.Request('hello.json', {
method:'post',
parameters: $('form').serialize(false),
onSuccess: function(transport){
var json = transport.responseText.evalJSON();
printResult(transport);
$('t_placeofbirth').innerHTML = json.placeofbirth;
$('t_birthday').innerHTML = json.birthday;
$('error').innerHTML = '';
},
onFailure: function(transport){
printResult(transport);
addErrors(transport);
}
});
}
}
};
Behaviour.register(myrules);
CommandBean
public class SpringJsonForm {
private String placeofbirth;
private Date birthday;
public String getPlaceofbirth() {
return placeofbirth;
}
public void setPlaceofbirth(String placeofbirth) {
this.placeofbirth = placeofbirth;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
控制器源码
public class SimpleJsonPostCommandController extends AbstractCommandController {
@Override
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception{
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
CustomDateEditor editor = new CustomDateEditor(dateFormat, true);
binder.registerCustomEditor(Date.class, editor);
}
@Override
protected ModelAndView handle(HttpServletRequest request,
HttpServletResponse response, Object command,
BindException exception) throws Exception {
SpringJsonForm bean = (SpringJsonForm) command;
ModelAndView modelAndView = new ModelAndView("jsonView");
modelAndView.addObject("birthday", bean.getBirthday());
modelAndView.addObject("placeofbirth", bean.getPlaceofbirth());
return modelAndView;
}
}
结果
Status : 200
Result:
{"placeofbirth":"Sydney","birthday":"Wed Jan 30 00:00:00 GMT 2008"}
分享到:
相关推荐
"ext + spring Json view + springMVC + Freemaker"的组合提供了一种强大的解决方案,它整合了多种技术,以实现丰富的用户界面、灵活的数据处理和高效的视图渲染。下面我们将深入探讨这些技术及其相互作用。 1. **...
标题中的“spring配置JSON拦截器VIEW”指的是在Spring框架中设置JSON数据的处理方式,特别是通过拦截器(Interceptor)来优化视图层(View)的响应。在Web开发中,拦截器是一种常用的机制,用于在请求被实际处理之前...
本篇文章将通过解析“spring-mvc-jsonview”源代码,深入探讨Spring MVC如何支持AJAX请求,并提供一个实际的使用教程。 一、JSON视图解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...
Spring4.1开始直接支持@JsonView注解。要使用@JsonView,首先我们需要定义视图,我们可以定义多个视图。一个视图定义可以继承其他视图定义。我们的POJO使用@JsonView注解属性传递已经定义的视图。在Spring的...
【标题】"spring data jpa + spring + json demo"揭示了这个项目是关于使用Spring Data JPA、Spring框架以及JSON处理的一个示例应用。Spring Data JPA是Spring框架的一个模块,它简化了JPA(Java Persistence API)...
2. 配置Spring MVC的视图解析器,例如使用`MappingJackson2JsonView`或`JacksonJsonView`(如果使用Jackson库)来处理JSON视图。 3. 在控制器方法上使用`@RequestMapping`和`@ResponseBody`注解,指定处理HTTP请求并...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)模式的 Web 应用程序。在现代 Web 开发中,JSON(JavaScript Object Notation)作为一种...
3. **ModelAndView与JsonView**:在Spring MVC中,可以创建一个`ModelAndView`对象,并设置`JsonView`,这样在视图解析时会自动将模型数据转化为JSON。 4. **HTTP消息转换器**:Spring MVC通过`...
Spring MVC还提供了`@JsonView`注解来控制JSON响应中的数据粒度,以及`@JsonProperty`和`@JsonIgnore`来控制哪些字段应包含在JSON中。 **jQuery和JavaScript** jQuery是一个流行的JavaScript库,简化了DOM操作、...
最后,Spring MVC还提供了一些高级特性,如自定义JSON序列化和反序列化行为,或者使用`@JsonView`注解来控制哪些字段应被包含在JSON中。你也可以利用`@JsonInclude`和`@JsonExclude`来控制哪些属性应该在序列化时被...
【Spring-JSON项目】是一个基于Eclipse开发的项目,它主要关注的是如何在Spring框架中有效地集成和使用JSON(JavaScript Object Notation)进行数据交换。这个项目的核心目标是利用Spring MVC来构建RESTful Web服务...
在实际开发中,你可能还需要处理JSON安全问题,例如使用`@JsonView`来限制返回的字段,或者使用`@JsonFormat`来控制日期格式等。同时,随着版本的更新,确保始终使用最新的稳定版本以获取最佳性能和安全性。
3. **视图解析器**:如果你的返回类型是`ModelAndView`,你可以配置一个`MappingJackson2JsonView`,这样视图会自动将模型数据转换为JSON。 4. **JSON与Ajax**:Spring MVC 3与jQuery或其他JavaScript库配合,可以...
在标题和描述中提到的"struts2_spring_json.rar"是一个关于如何在Liferay中利用Struts2和Spring框架处理JSON数据的示例应用。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端交互,...
8. **自定义JSON视图**:如果需要对JSON的生成进行更精细的控制,可以创建自定义的`JsonView`,并在返回类型上指定该视图。 总之,JSON在Spring中的应用是多方面的,它简化了数据交换,提高了开发效率。无论是简单...
结合以上技术,"struts2+spring+hibernate+jquery+json"的整合使用意味着开发一个完整的、高效的Web应用。Struts2负责处理HTTP请求并调用业务逻辑,Spring提供依赖管理和数据访问支持,Hibernate作为持久化层与...
Spring MVC是Spring框架的一部分,专用于构建Web应用程序的Model-View-Controller(MVC)架构。MyBatis则是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。JSON(JavaScript Object Notation)是一...
此外,Spring Boot还支持使用`@JsonView`注解来控制哪些字段应该在序列化时包含,这对于构建API时非常有用,可以根据不同的客户端需求暴露不同的数据。 至于标签“源码”和“工具”,这表明视频可能还会涉及阅读和...
在本文中,我们将深入探讨如何使用Spring框架返回JSON视图,并通过一个简单的示例来演示这一过程。这个示例是基于Eclipse IDE开发的Java Web项目,最终在Tomcat服务器上进行部署和发布。 首先,我们需要理解Spring...
在实际开发中,还可以利用Spring Data REST自动创建RESTful服务,或者使用`@JsonInclude`和`@JsonView`等注解控制JSON序列化的细节。通过深入理解和掌握这些知识点,开发者能够更高效地构建和维护JSON接口。