SpringMVC:マルチビュー[JSP,JSON,Excel,XML]ミックス出力_XML構成方式

129048 ワード

SpringMVCは、URL拡張子または要求パラメータによって、サービス側のリソース出力タイプを制御することができる. 
SpringMVC:マルチビュー[JSP,JSON,Excel,XML]ミックス出力_Java構成方式maven依存
     
     
     
     
  1. <dependency>
  2. <groupId>com.fasterxml.jackson.coregroupId>
  3. <artifactId>jackson-databindartifactId>
  4. <version>2.6.1version>
  5. dependency>
  6. <dependency>
  7. <groupId>org.springframeworkgroupId>
  8. <artifactId>spring-oxmartifactId>
  9. <version>${spring.version}version>
  10. dependency>
  11. <dependency>
  12. <groupId>org.apache.poigroupId>
  13. <artifactId>poiartifactId>
  14. <version>3.14version>
  15. dependency>

web.xml構成
      
      
      
      
  1. <servlet>
  2. <servlet-name>SpringMVC-Restservlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
  4. <init-param>
  5. <param-name>contextConfigLocationparam-name>
  6. <param-value>classpath:spring/applicationContext-springMVC.xmlparam-value>
  7. init-param>
  8. <load-on-startup>1load-on-startup>
  9. servlet>
  10. <servlet-mapping>
  11. <servlet-name>SpringMVC-Restservlet-name>
  12. <url-pattern>/url-pattern>
  13. servlet-mapping>

ビュー解析
      
      
      
      
  1. <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  2. <property name="order" value="1"/>
  3. <property name="defaultContentType" value="text/html" />
  4. <property name="ignoreAcceptHeader" value="true"/>
  5. <property name="mediaTypes">
  6. <map>
  7. <entry key="html" value="text/html" />
  8. <entry key="xml" value="application/xml" />
  9. <entry key="json" value="application/json" />
  10. <entry key="excel" value="application/vnd.ms-excel">entry>
  11. map>
  12. property>
  13. <property name="defaultViews">
  14. <list>
  15. <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
  16. <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
  17. <constructor-arg>
  18. <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
  19. <property name="classesToBeBound">
  20. <list>
  21. <value>com.newcapec.cloudpay.service.base.RspBaseVOvalue>
  22. list>
  23. property>
  24. bean>
  25. constructor-arg>
  26. bean>
  27. <bean class="com.newcapec.cloudpay.controller.util.CodeExcelView">bean>
  28. list>
  29. property>
  30. bean>
  31. <bean id="viewResolver"
  32. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  33. <property name="requestContextAttribute" value="rc"/>
  34. <property name="viewClass"
  35. value="org.springframework.web.servlet.view.JstlView"/>
  36. <property name="prefix" value="/WEB-INF/pages/"/>
  37. <property name="suffix" value=".jsp"/>
  38. bean>


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. * @Copyright 2016-2017 - Powered By
  15. * @author:
  16. * @date: 2018-01-12 9:19
  17. * @version V1.0
  18. */
  19. public class CodeExcelView extends AbstractExcelView {
  20. @Override
  21. protected void buildExcelDocument(Map<String, Object> model,
  22. HSSFWorkbook workbook, HttpServletRequest request,
  23. HttpServletResponse response) throws Exception {
  24. RspBaseVO rspBaseVO = (RspBaseVO) model.get("RspBaseVO");
  25. HSSFSheet sheet = workbook.createSheet(" ");//
  26. HSSFRow header = sheet.createRow(0);//
  27. header.createCell(0).setCellValue(" ");
  28. header.createCell(1).setCellValue(" ");
  29. HSSFRow row = 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. * @Copyright 2016-2017 - Powered By
  8. * @author:
  9. * @date:2018 1 12 07:43:41
  10. * @version V1.0
  11. */
  12. @XmlRootElement
  13. public class RspBaseVO {
  14. private String code; //
  15. private String msg; //
  16. // private String data; //
  17. public String getCode() {
  18. return code;
  19. }
  20. public void setCode(String code) {
  21. this.code = code;
  22. }
  23. public String getMsg() {
  24. return msg;
  25. }
  26. public void setMsg(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. RspBaseVO rspBaseVO = new RspBaseVO();
  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>