- 浏览: 514380 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (563)
- 工作经验 (12)
- 数据库 (13)
- Servlet (10)
- Struts2 (1)
- Spring (25)
- Eclipse (5)
- Hibernate (5)
- Eclips (8)
- HTTP (7)
- J2EE (21)
- EHcache (1)
- HTML (11)
- 工具插件使用 (20)
- JPA (2)
- 杂谈 (17)
- 数据结构与算法 (3)
- Cloud Foundry (1)
- 安全 (10)
- J2SE (57)
- SQL (9)
- DB2 (6)
- 操作系统 (2)
- 设计模式 (1)
- 版本代码管理工具 (13)
- 面试 (10)
- 代码规范 (3)
- Tomcat (12)
- Ajax (5)
- 异常总结 (11)
- REST (2)
- 云 (2)
- RMI (3)
- SOA (1)
- Oracle (12)
- Javascript (20)
- jquery (7)
- JSP自定义标签 (2)
- 电脑知识 (5)
- 浏览器 (3)
- 正则表达式 (3)
- 建站解决问题 (38)
- 数据库设计 (3)
- git (16)
- log4j (1)
- 每天100行代码 (1)
- socket (0)
- java设计模式 耿祥义著 (0)
- Maven (14)
- ibatis (7)
- bug整理 (2)
- 邮件服务器 (8)
- Linux (32)
- TCP/IP协议 (5)
- java多线程并发 (7)
- IO (1)
- 网页小工具 (2)
- Flash (2)
- 爬虫 (1)
- CSS (6)
- JSON (1)
- 触发器 (1)
- java并发 (12)
- ajaxfileupload (1)
- js验证 (1)
- discuz (2)
- Mysql (14)
- jvm (2)
- MyBatis (10)
- POI (1)
- 金融 (1)
- VMWare (0)
- Redis (4)
- 性能测试 (2)
- PostgreSQL (1)
- 分布式 (2)
- Easy UI (1)
- C (1)
- 加密 (6)
- Node.js (1)
- 事务 (2)
- zookeeper (3)
- Spring MVC (2)
- 动态代理 (3)
- 日志 (2)
- 微信公众号 (2)
- IDEA (1)
- 保存他人遇到的问题 (1)
- webservice (11)
- memcached (3)
- nginx (6)
- 抓包 (1)
- java规范 (1)
- dubbo (3)
- xwiki (1)
- quartz (2)
- 数字证书 (1)
- spi (1)
- 学习编程 (6)
- dom4j (1)
- 计算机系统知识 (2)
- JAVA系统知识 (1)
- rpcf (1)
- 单元测试 (2)
- php (1)
- 内存泄漏cpu100%outofmemery (5)
- zero_copy (2)
- mac (3)
- hive (3)
- 分享资料整理 (0)
- 计算机网络 (1)
- 编写操作系统 (1)
- springboot (1)
最新评论
-
masuweng:
亦论一次OutOfMemoryError的定位与解错 -
变脸小伙:
引用[color=red][/color]百度推广中运用的技术 ...
Spring 3 mvc中返回pdf,json,xml等不同的view -
Vanillva:
不同之处是什么??
Mybatis中的like查询 -
thrillerzw:
转了。做个有理想的程序员
有理想的程序员必须知道的15件事 -
liujunhui1988:
觉得很有概括力
15 个必须知道的 Java 面试问题(2年工作经验)
源:http://jackyrong.iteye.com/blog/1874918
评:
spring mvc就是好,特别是rest风格的话,一个
org.springframework.web.servlet.view.ContentNegotiatingViewResolver就可以根据不同的场景返回不同的view了,比如返回json,xml,pdf等.马上看代码实现
先是一个简单的pojo
Java代码 收藏代码
package com.hmkcode.vo;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "person")
public class Person {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString(){
return "ID: "+id+" - Name: "+name;
}
}
注意使用@XmlRootElement标签之。
然后是controller:
Java代码 收藏代码
@Controller
public class MyController {
@RequestMapping("/view")
public Person getPerson(Model model){
Person person = new Person();
person.setId(1);
person.setName("test");
model.addAttribute("person",person);
return person;
}
然后分别假设要导出为PDF的view,引入著名的itext了;
Java代码 收藏代码
public class PdfView extends AbstractPdfView {
protected void buildPdfDocument(
Map model,
Document doc,
PdfWriter writer,
HttpServletRequest req,
HttpServletResponse resp)
throws Exception {
Person person = (Person) model.get("person");
doc.add( new Paragraph(person.toString()));
}
这里演示简单往itext中写入一个输出而已;
然后是web.xml:
Java代码 收藏代码
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
最核心的配置来了:
Java代码 收藏代码
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
<entry key="pdf" value="application/pdf" />
</map>
</property>
<property name="defaultViews">
<list>
<!-- JSON View -->
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
</bean>
<!-- XML view -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.test.Person</value>
</list>
</property>
</bean>
</constructor-arg>
</bean>
<!-- PDF view -->
<bean class="com.test.PdfView">
</bean>
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
t;/bean>
可以看到,其中使用的是:
org.springframework.web.servlet.view.ContentNegotiatingViewResolver,对其pdf,xml.json进行分别的view设置,JSON用的是著名的jackyson去解析了;
最后,通过rest风格的地址,比如http://localhost/view/view.json,返回json;
http://localhost/view/view.pdf,则导出到pdf,http://localhost/view/view.xml,
返回前端就xml了,真的十分方便呀
百度推广中运用的技术,一直很惬意去思索
团队的帮助下,运用其中的知识点。于如果我们的域对象是用java编写,那么在传递给json序列化器之前,我们仍需要手动把它
评:
spring mvc就是好,特别是rest风格的话,一个
org.springframework.web.servlet.view.ContentNegotiatingViewResolver就可以根据不同的场景返回不同的view了,比如返回json,xml,pdf等.马上看代码实现
先是一个简单的pojo
Java代码 收藏代码
package com.hmkcode.vo;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "person")
public class Person {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString(){
return "ID: "+id+" - Name: "+name;
}
}
注意使用@XmlRootElement标签之。
然后是controller:
Java代码 收藏代码
@Controller
public class MyController {
@RequestMapping("/view")
public Person getPerson(Model model){
Person person = new Person();
person.setId(1);
person.setName("test");
model.addAttribute("person",person);
return person;
}
然后分别假设要导出为PDF的view,引入著名的itext了;
Java代码 收藏代码
public class PdfView extends AbstractPdfView {
protected void buildPdfDocument(
Map model,
Document doc,
PdfWriter writer,
HttpServletRequest req,
HttpServletResponse resp)
throws Exception {
Person person = (Person) model.get("person");
doc.add( new Paragraph(person.toString()));
}
这里演示简单往itext中写入一个输出而已;
然后是web.xml:
Java代码 收藏代码
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
最核心的配置来了:
Java代码 收藏代码
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
<entry key="pdf" value="application/pdf" />
</map>
</property>
<property name="defaultViews">
<list>
<!-- JSON View -->
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
</bean>
<!-- XML view -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.test.Person</value>
</list>
</property>
</bean>
</constructor-arg>
</bean>
<!-- PDF view -->
<bean class="com.test.PdfView">
</bean>
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
t;/bean>
可以看到,其中使用的是:
org.springframework.web.servlet.view.ContentNegotiatingViewResolver,对其pdf,xml.json进行分别的view设置,JSON用的是著名的jackyson去解析了;
最后,通过rest风格的地址,比如http://localhost/view/view.json,返回json;
http://localhost/view/view.pdf,则导出到pdf,http://localhost/view/view.xml,
返回前端就xml了,真的十分方便呀
评论
1 楼
变脸小伙
2016-02-02
引用
[color=red][/color]
百度推广中运用的技术,一直很惬意去思索
团队的帮助下,运用其中的知识点。于如果我们的域对象是用java编写,那么在传递给json序列化器之前,我们仍需要手动把它
发表评论
-
使用Spring+Junit+Mockito做代码自测
2019-05-29 15:27 509源:https://blog.csdn.net/z19917 ... -
在同一个类中调用另一个方法没有触发 Spring AOP 的问题
2017-08-24 17:22 575源:https://segmentfault.com/a/11 ... -
Spring Transaction属性之Propagation
2016-08-10 17:09 547源:http://blog.csdn.net/kiwi_cod ... -
循环依赖检测方法 spring源码方法
2016-07-06 18:58 1166场景:checkForAliasCircle(name, al ... -
Spring的Quartz定时器同一时刻重复执行二次的问题解决
2016-03-11 18:27 1004源:http://www.linuxidc.com/Linux ... -
spring factory-method
2016-03-01 11:22 487源:http://blog.sina.com.cn/s/blo ... -
spring中lazy-init详解
2016-02-29 17:01 778源:http://blog.csdn.net/fhx0 ... -
Spring Refresh Application Context
2015-12-13 14:48 861源:http://techdive.in/spring/spr ... -
spring context 扫描与 mvc扫描类 区分开包
2015-07-15 13:23 6111.applicationContext.xml <!- ... -
Filter中注入spring
2015-07-09 10:45 511源:http://zy116494718.iteye.com/ ... -
获取spring的ApplicationContext几种方式
2015-06-24 15:35 698源:http://blog.sina.com.cn/s/blo ... -
spring获取webapplicationcontext,applicationcontext几种方法详解
2015-04-02 16:38 466源:http://www.blogjava.net/Todd/ ... -
Spring+Mybatis整合事务不起作用之解决方案汇总
2014-12-29 21:36 1352源:http://blog.csdn.net/walkerjo ... -
context:component-scan扫描使用上的容易忽略的use-default-filters
2014-12-29 21:29 450源:http://jinnianshilongnian.ite ... -
Spring线程池开发实战
2014-12-12 10:44 499源:http://blog.csdn.net/chszs/ar ... -
spring mvc 返回xml 根据 contenttype
2014-05-19 12:24 582源:http://www.233.com/ncre2/JAVA ... -
AOP生成代码有三种可能方式
2014-05-11 21:24 449源:http://blog.csdn.net/zuyi532/ ... -
使用Spring MVC统一异常处理实战
2014-05-04 00:00 525源:http://cgs1999.iteye.com/blog ... -
spring配置文件异常
2013-11-26 10:53 906源:http://wodar.iteye.com/blog/ ... -
自己对spring ioc的理解
2013-07-14 11:59 1074此时心情:有时候工作的很努力,很认真也会被辞退,被小外包公 ...
相关推荐
在Spring MVC框架中,开发Web应用时经常需要将对象转换为JSON格式的数据并返回给客户端。然而,在处理敏感数据时,我们可能希望对这些数据进行脱敏,即隐藏或替换某些字段,以保护用户隐私或者确保数据安全性。本文...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)模式的 Web 应用程序。在现代 Web 开发中,JSON(JavaScript Object Notation)作为一种...
在Spring MVC框架中,开发人员经常需要处理不同的数据交换格式,如XML和JSON,以便与客户端进行交互。这两种格式在Web应用中广泛用于传输数据,因为它们轻量级且易于解析。下面我们将深入探讨如何在Spring MVC中生成...
**Spring3 MVC与Ajax结合使用JSON** 在现代Web开发中,Spring框架的MVC模块与Ajax和JSON的集成是创建动态、响应式用户界面的关键技术。这个"Spring3 MVC Ajax with JSON"项目提供了一个Eclipse工程,包含了实现这一...
本篇文章将通过解析“spring-mvc-jsonview”源代码,深入探讨Spring MVC如何支持AJAX请求,并提供一个实际的使用教程。 一、JSON视图解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...
这份“Spring.MVC学习指南.pdf”很可能是为了帮助开发者深入理解和掌握Spring MVC的核心概念、工作原理以及实践技巧。下面将详细阐述Spring MVC的相关知识点。 1. **核心组件**: - **DispatcherServlet**:Spring...
在这个名为"spring3-miniweb.rar"的压缩包中,我们关注的是如何在Spring 3中处理JSON数据,这在现代Web应用中非常常见,因为JSON是数据交换的首选格式。下面将详细解释Spring MVC中处理JSON的基本概念和实现步骤。 ...
12. **消息转换**:Spring MVC 提供了 HttpMessageConverter 接口,用于将 HTTP 请求和响应体与 Java 对象之间进行转换,支持 JSON、XML 等格式。 13. **RESTful 风格**:Spring MVC 可以很方便地支持 RESTful 风格...
在实际开发中,还可以利用Spring Data REST自动创建RESTful服务,或者使用`@JsonInclude`和`@JsonView`等注解控制JSON序列化的细节。通过深入理解和掌握这些知识点,开发者能够更高效地构建和维护JSON接口。
在Spring4 MVC的配置中,通常需要在`web.xml`或Spring的配置文件中添加MVC的JSON处理器,比如`Jackson2HttpMessageConverter`,以便让Spring MVC能够自动处理JSON请求和响应。同时,需要在`pom.xml`或构建文件中引入...
配置Spring3 MVC通常涉及web.xml的设置、DispatcherServlet的配置以及Spring的上下文配置(如beans.xml)。 接下来,让我们转向jQuery。jQuery简化了JavaScript编程,提供了一套简洁的API来处理DOM操作,如元素选择...
在实际开发中,Spring MVC还与其他Spring模块,如Spring AOP(面向切面编程)、Spring Security(安全)、Spring Data(数据访问)等深度集成,以提供更全面的解决方案。 对于PDF和Excel格式的输出,Spring MVC可以...
本篇文章将详细介绍如何在Spring MVC的XML配置中设置,以便让`@ResponseBody`自动将Java对象转换为JSON。 首先,`@ResponseBody`的作用是在方法返回的对象不是HTML片段而是其他格式数据(例如JSON或XML)时使用的。...
此外,该项目还展示了如何配置 Spring MVC,例如在 web.xml 中配置 DispatcherServlet,以及在 Spring 配置文件中定义 HandlerMapping 和 HandlerAdapter 等。这有助于理解 Spring MVC 的工作流程。 "spring-mvc-...
2. 表述(Representation):资源的状态可以通过不同的格式(如JSON或XML)进行表述。 3. 状态转移(State Transfer):客户端通过HTTP方法(GET、POST、PUT、DELETE等)来改变服务器上的资源状态。 在Spring 3 MVC...
Spring MVC允许在控制器中使用`@ExceptionHandler`注解来处理特定类型的异常,提供统一的错误页面或JSON响应。此外,Spring提供了测试工具,如`MockMvc`,使得编写单元测试和集成测试变得更加容易。 综上所述,...
书中详细介绍了如何定义RESTful资源,使用HTTP动词(GET、POST、PUT、DELETE等)处理操作,以及如何处理JSON和XML数据格式。 在实战部分,本书提供了丰富的案例和示例代码,让读者能够在实践中学习和应用所学知识。...
在Spring MVC中,为了将Java对象转换成JSON格式并返回给客户端,我们需要依赖于JSON库。在提供的信息中,提到了`jackson-all-1.9.x.jar`系列的包,这是Jackson库的一个早期版本。Jackson是一个非常流行的JSON处理库...
在Spring MVC中,我们可以使用Jackson库或者Gson库将Java对象转换为JSON字符串,或者将JSON字符串反序列化为Java对象。 在这个示例项目中,"dbtest"可能是一个包含数据库连接和查询的Java类或者包。Spring框架提供...
Spring MVC是Spring框架的一部分,专用于构建Web应用程序的Model-View-Controller(MVC)架构。MyBatis则是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。JSON(JavaScript Object Notation)是一...