SpringMVC:多视图[JSP,JSON,Excel,XML]混合输出__XML配置方式

简介: SpringMVC:多视图[JSP,JSON,Excel,XML]混合输出__XML配置方式



maven 依赖

  1. <!--XML视图-->
  2. <dependency>
  3. <groupId>com.fasterxml.jackson.core</groupId>
  4. <artifactId>jackson-databind</artifactId>
  5. <version>2.6.1</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework</groupId>
  9. <artifactId>spring-oxm</artifactId>
  10. <version>${spring.version}</version>
  11. </dependency>
  12. <!--XML视图(xstream)-->
  13. <!--<dependency>
  14.    <groupId>com.thoughtworks.xstream</groupId>
  15.    <artifactId>xstream</artifactId>
  16.    <version>1.4.10</version>
  17. </dependency>
  18. <dependency>
  19.    <groupId>xpp3</groupId>
  20.    <artifactId>xpp3_min</artifactId>
  21.    <version>1.1.4c</version>
  22. </dependency>
  23. <dependency>
  24.    <groupId>xmlpull</groupId>
  25.    <artifactId>xmlpull</artifactId>
  26.    <version>1.1.3.1</version>
  27. </dependency>-->
  28. <!--excel视图-->
  29. <dependency>
  30.    <groupId>org.apache.poi</groupId>
  31.    <artifactId>poi</artifactId>
  32.    <version>3.14</version>
  33. </dependency>


web.xml配置


  1. <!-- Spring MVC配置【Restful】开始 -->
  2.    <servlet>
  3.        <servlet-name>SpringMVC-Rest</servlet-name>
  4.        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5.        <init-param>
  6.            <param-name>contextConfigLocation</param-name>
  7.            <param-value>classpath:spring/applicationContext-springMVC.xml</param-value>
  8.        </init-param>
  9.        <load-on-startup>1</load-on-startup>
  10.    </servlet>
  11.    <servlet-mapping>
  12.        <servlet-name>SpringMVC-Rest</servlet-name>
  13.        <url-pattern>/</url-pattern>
  14.    </servlet-mapping>
  15.    <!--Spring MVC配置【Restful】结束-->


视图解析器


  1. <!-- ContentNegotiatingViewResolver -->
  2.    <!-- 根据确定出的不同MIME名,使用不同视图解析器解析视图 -->
  3.    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  4.        <!-- 设置优先级 -->
  5.        <property name="order" value="1"/>
  6.        <!-- 设置默认的MIME类型,如果没有指定拓展名或请求参数,则使用此默认MIME类型解析视图 -->
  7.        <property name="defaultContentType" value="text/html" />
  8.        <!-- 是否不适用请求头确定MIME类型 -->
  9.        <property name="ignoreAcceptHeader" value="true"/>
  10.        <!--使用拓展名类型,不注释以下三行将使用参数(type)的方法访问-->
  11.       <!-- 是否根据路径拓展名确定MIME类型 -->
  12.       <!-- <property name="favorPathExtension" value="false" />-->
  13.        <!-- 是否使用参数来确定MIME类型 -->
  14.       <!-- <property name="favorParameter" value="false"/>-->
  15.        <!-- 上一个属性配置为true,我们指定type请求参数判断MIME类型 -->
  16.        <!--<property name="parameterName" value="type" />-->
  17.        
  18.        <!-- 根据请求参数或拓展名映射到相应的MIME类型 -->
  19.        <property name="mediaTypes">
  20.            <map>
  21.                <entry key="html" value="text/html" />
  22.                <entry key="xml" value="application/xml" />
  23.                <entry key="json" value="application/json" />
  24.                <entry key="excel" value="application/vnd.ms-excel"></entry>
  25.            </map>
  26.        </property>
  27.        <!-- 设置默认的候选视图,如果有合适的MIME类型,将优先从以下选择视图,找不到再在整个Spring容器里寻找已注册的合适视图 -->
  28.        <property name="defaultViews">
  29.            <list>
  30.                <!-- JSON View -->
  31.                <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
  32.                <!-- JAXB XML View -->
  33.                <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
  34.                    <constructor-arg>
  35.                        <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
  36.                            <property name="classesToBeBound">
  37.                                <list>
  38.                                    <value>com.newcapec.cloudpay.service.base.RspBaseVO</value>
  39.                                </list>
  40.                            </property>
  41.                        </bean>
  42.                    </constructor-arg>
  43.                </bean>
  44.                <!-- Excel View -->
  45.                <bean class="com.newcapec.cloudpay.controller.util.CodeExcelView"></bean>
  46.            </list>
  47.        </property>
  48.    </bean>
  49.    <!-- View Resolver for JSPs -->
  50.    <bean id="viewResolver"
  51.          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  52.        <property name="requestContextAttribute" value="rc"/>
  53.        <property name="viewClass"
  54.                  value="org.springframework.web.servlet.view.JstlView"/>
  55.        <property name="prefix" value="/WEB-INF/pages/"/>
  56.        <property name="suffix" value=".jsp"/>
  57.    </bean>
  58.    <!-- 资源映射 -->
  59.    <!-- <mvc:resources location="/WEB-INF/css/" mapping="/css/**"/> -->
  60.    <!-- <mvc:resources location="/js/" mapping="/js/**" /> -->



自定义Excel解析器

  1. import com.newcapec.cloudpay.service.base.RspBaseVO;
  2. import org.apache.poi.hssf.usermodel.HSSFRow;
  3. import org.apache.poi.hssf.usermodel.HSSFSheet;
  4. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  5. import org.springframework.web.servlet.view.document.AbstractExcelView;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import java.util.Map;
  9. /**
  10. * @Title: 自定义返回结果-Excel视图
  11. * @ClassName: com.newcapec.cloudpay.controller.util.CodeExcelView.java
  12. * @Description:
  13. *
  14. * @Copyright2016-2017 - Powered By 研发中心
  15. * @author: 王延飞
  16. * @date:  2018-01-129:19
  17. * @version V1.0
  18. */
  19. publicclassCodeExcelViewextendsAbstractExcelView {
  20.    @Override
  21.    protectedvoidbuildExcelDocument(Map<String, Object> model,
  22.                                      HSSFWorkbook workbook, HttpServletRequest request,
  23.                                      HttpServletResponse response) throws Exception {
  24.        RspBaseVOrspBaseVO= (RspBaseVO) model.get("RspBaseVO");
  25.        HSSFSheetsheet= workbook.createSheet("返回结果");//创建一页
  26.        HSSFRowheader= sheet.createRow(0);//创建第一行
  27.        header.createCell(0).setCellValue("返回码");
  28.        header.createCell(1).setCellValue("返回信息");
  29.        HSSFRowrow= sheet.createRow(1);
  30.        row.createCell(0).setCellValue(rspBaseVO.getCode());
  31.        row.createCell(1).setCellValue(rspBaseVO.getMsg());
  32.    }
  33. }


实体

  1. import javax.xml.bind.annotation.XmlRootElement;
  2. /**
  3. * @Title: 返回响应值--基类
  4. * @ClassName:RspBaseVO.java
  5. * @Description:
  6. *
  7. * @Copyright2016-2017 - Powered By 研发中心
  8. * @author: 王延飞
  9. * @date:2018112日 上午07:43:41
  10. * @version V1.0
  11. */
  12. @XmlRootElement
  13. publicclassRspBaseVO {
  14. private String code; // 返回码
  15. private String msg; // 返回信息
  16. // private String data; // 业务参数
  17. public String getCode() {
  18. return code;
  19. }
  20. publicvoidsetCode(String code) {
  21. this.code = code;
  22. }
  23. public String getMsg() {
  24. return msg;
  25. }
  26. publicvoidsetMsg(String msg) {
  27. this.msg = msg;
  28. }
  29. @Override
  30. public String toString() {
  31. return"RspBaseVO [code=" + code + ", msg=" + msg + "]";
  32. }
  33. }


controller

  1. /***
  2. * .json(?type=json) -- 返回JSON
  3.     * .excel(?type=excel) -- 返回Excel
  4.     * .xml(?type=xml) -- 返回XML
  5. *  为空-- 返回JSP
  6. */
  7. @RequestMapping(value="/multiview/{code}/{msg}", method=RequestMethod.GET)
  8. public String multiViewTest(@PathVariable String code,@PathVariable String msg, Model model) {
  9.        RspBaseVOrspBaseVO=newRspBaseVO();
  10.        rspBaseVO.setCode(code);
  11.        rspBaseVO.setMsg(msg);
  12.        model.addAttribute("RspBaseVO",rspBaseVO);
  13. return"/com/test/codeTest";
  14. }


jsp页面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <html>
  3. <head>
  4.    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.    <title>多视图混合输出-状态码</title>
  6. </head>
  7. <body>
  8. code : ${RspBaseVO.code} <br/>
  9. msg : ${RspBaseVO.msg}
  10. </body>
  11. </html>


目录
相关文章
|
23天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
13 1
|
2月前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
29 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
9天前
|
XML JSON JavaScript
Java中XML和JSON的比较与应用指南
本文对比了Java中XML和JSON的使用,XML以自我描述性和可扩展性著称,适合结构复杂、需验证的场景,但语法冗长。JSON结构简洁,适用于轻量级数据交换,但不支持命名空间。在Java中,处理XML可使用DOM、SAX解析器或XPath,而JSON可借助GSON、Jackson库。根据需求选择合适格式,注意安全、性能和可读性。
23 0
|
14天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
23天前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
14 1
|
28天前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
9 0
|
28天前
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
7 0
|
1月前
|
XML Java Apache
Apache Flink自定义 logback xml配置
Apache Flink自定义 logback xml配置
140 0
|
2月前
|
Java
logback配置,命名为logback-spring.xml
logback配置,命名为logback-spring.xml
|
2月前
|
XML Java 测试技术
【SpringBoot】基于 Maven 的 pom.xml 配置详解
【SpringBoot】基于 Maven 的 pom.xml 配置详解
194 0
【SpringBoot】基于 Maven 的 pom.xml 配置详解