工作的时候用到spring返回xml view查到此文章亲测可用
spring mvc就是好,特别是rest风格的话,一个
org.springframework.web.servlet.view.ContentNegotiatingViewResolver就可以根据不同的场景返回不同的view了,比如返回json,xml,pdf等.马上看代码实现
先是一个简单的pojo
- 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:
- @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了;
- 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:
- <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>
最核心的配置来了:
- <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了,真的十分方便呀
工作的时候用到spring返回xml view查到此文章亲测可用的更多相关文章
- spring 返回xml数据
要将对象以xml数据形式返回:参考:https://blog.csdn.net/Pnoter/article/details/52218363 1:创建对象时应该填上xml注解,这样才能将对象转换为x ...
- spring mybatis 3.2调用mysql存储过程返回多结果集(完整、亲测、可用)
最近,有个开发提了个需求,希望中间件支持调用mysql存储过程时支持多结果集返回,因为某些原因我们使用了不少的存储过程,很多复杂的逻辑目前来看交互非常的多,所以从当前的现状来说,这个需求还是蛮合理的. ...
- spring boot 日志文件配置(logback-spring.xml)亲测可用!
问题描述:如何配置springboot项目,通过日志配置,使之输出自定义日志. 详细文章:https://blog.csdn.net/gebitan505/article/details/701421 ...
- app微信支付宝支付后台的插件模式+回调通过spring广播处理后续业务(已亲测可用)
写在前面的话:每当我们做一个项目,基本上都会涉及到支付的业务,最常用的莫过于微信和支付宝的支付了,项目有bug,有问题,都不叫问题,可一旦钱出了问题,那就是大问题了,所以在支付业务上我们必须慎之又慎! ...
- maven pox.xml文件报错解决办法 亲测可以
问题1 由于maven下载依赖包失败导致一些文件没完全下载下来,形成了lastUpdated结尾的文件存放在本地仓库中(我是默认地址:C:\Users\Administrator\.m2\reposi ...
- 1. Spring基于xml加载和读取properties文件配置
在src目录下,新建test.properties配置文件,内容如下 name=root password=123456 logArchiveCron=0/5 * * * * ? 一种是使用sprin ...
- Spring 通过XML配置文件以及通过注解形式来AOP 来实现前置,环绕,异常通知,返回后通知,后通知
本节主要内容: 一.Spring 通过XML配置文件形式来AOP 来实现前置,环绕,异常通知 1. Spring AOP 前置通知 XML配置使用案例 2. Spring AOP ...
- Spring Boot 返回 XML 数据,一分钟搞定!
Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...
- Spring MVC 返回 xml json pdf 数据的配置方法
<!-- Spring MVC 返回 xml 数据的配置方法 --> <bean class="org.springframework.web.servlet.vi ...
随机推荐
- Compaction介绍
Compaction介绍 Compaction是buffer->flush->merge的Log-Structured Merge-Tree模型的关键操作,主要起到如下几个作用: 1)合并 ...
- JavaScrip 原生多文件上传及预览 兼容多浏览器
JavaScrip 原生多文件上传及预览 兼容多浏览器 html代码块 <div class="container"> <label>请选择一个图像文件:& ...
- myeclipse发布项目
最好不要点击restart 虽然点击run,也会发布,但是最好先点击发布. 点击restart,可能会出现tomcat关不掉又启动不了.
- npm package管理
每个项目都包含一个package.json文件用来管理项目依赖的包以及项目相关信息. 其中比较总要的就是dependencies和devDependencies两项,分别指定了项目运行所依赖的模块.项 ...
- 吐槽XE3中的BUG:无法调试32位的应用程序
我想用的功能在XE5中有BUG, 无奈转移到XE3中测试,发现了XE3还有另外一个问题:无法DEBUG 32位的应用程序,这算什么事啊?有人说把项目属性中的link with dynamic RTL去 ...
- js动态拼接参数到请求的url上
var queryConfig={ "page" : "index", "method" : 2, //1:按照方法A查看 2:按照方法B查 ...
- BestCoder Round #18(hdu5105)Math Problem(高中数学)
最大值无非就是在两个端点或极值点处取得. 我注意讨论了a=0和b=0,却忽略了极值点可能不在L到R的范围内这一问题.被Hack了. #include<iostream> #include& ...
- pdp 的连接方法
<?php $dsn = "mysql:host=127.0.0.1;dbname=blog_edu"; try{ $pdo = new PDO($dsn,'root','' ...
- Java 参数的和
public class CommandParamter { public static void main(String[] args) { // TODO Auto-generated metho ...
- BZOJ4861 [Beijing2017]魔法咒语
题意 Chandra 是一个魔法天才.从一岁时接受火之教会洗礼之后, Chandra 就显示出对火元素无与伦比的亲和力,轻而易举地学会种种晦涩难解的法术.这也多亏 Chandra 有着常人难以企及的语 ...