SpringMVC:マルチビュー[JSP,JSON,Excel,XML]ミックス出力_XML構成方式
129048 ワード
SpringMVCは、URL拡張子または要求パラメータによって、サービス側のリソース出力タイプを制御することができる.
SpringMVC:マルチビュー[JSP,JSON,Excel,XML]ミックス出力_Java構成方式maven依存
web.xml構成
ビュー解析
SpringMVC:マルチビュー[JSP,JSON,Excel,XML]ミックス出力_Java構成方式maven依存
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.6.1version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-oxmartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.apache.poigroupId>
<artifactId>poiartifactId>
<version>3.14version>
dependency>
web.xml構成
<servlet>
<servlet-name>SpringMVC-Restservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring/applicationContext-springMVC.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>SpringMVC-Restservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
ビュー解析
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1"/>
<property name="defaultContentType" value="text/html" />
<property name="ignoreAcceptHeader" value="true"/>
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
<entry key="excel" value="application/vnd.ms-excel">entry>
map>
property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.newcapec.cloudpay.service.base.RspBaseVOvalue>
list>
property>
bean>
constructor-arg>
bean>
<bean class="com.newcapec.cloudpay.controller.util.CodeExcelView">bean>
list>
property>
bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="requestContextAttribute" value="rc"/>
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
bean>
Excel
import com.newcapec.cloudpay.service.base.RspBaseVO;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* @Title: -Excel
* @ClassName: com.newcapec.cloudpay.controller.util.CodeExcelView.java
* @Description:
*
* @Copyright 2016-2017 - Powered By
* @author:
* @date: 2018-01-12 9:19
* @version V1.0
*/
public class CodeExcelView extends AbstractExcelView {
@Override
protected void buildExcelDocument(Map<String, Object> model,
HSSFWorkbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
RspBaseVO rspBaseVO = (RspBaseVO) model.get("RspBaseVO");
HSSFSheet sheet = workbook.createSheet(" ");//
HSSFRow header = sheet.createRow(0);//
header.createCell(0).setCellValue(" ");
header.createCell(1).setCellValue(" ");
HSSFRow row = sheet.createRow(1);
row.createCell(0).setCellValue(rspBaseVO.getCode());
row.createCell(1).setCellValue(rspBaseVO.getMsg());
}
}
- import javax.xml.bind.annotation.XmlRootElement;
/**
* @Title: --
* @ClassName:RspBaseVO.java
* @Description:
*
* @Copyright 2016-2017 - Powered By
* @author:
* @date:2018 1 12 07:43:41
* @version V1.0
*/
@XmlRootElement
public class RspBaseVO {
private String code; //
private String msg; //
// private String data; //
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
@Override
public String toString() {
return "RspBaseVO [code=" + code + ", msg=" + msg + "]";
}
}
controller
/***
* .json(?type=json) -- JSON
* .excel(?type=excel) -- Excel
* .xml(?type=xml) -- XML
* -- JSP
*/
@RequestMapping(value="/multiview/{code}/{msg}", method=RequestMethod.GET)
public String multiViewTest(@PathVariable String code,@PathVariable String msg, Model model) {
RspBaseVO rspBaseVO = new RspBaseVO();
rspBaseVO.setCode(code);
rspBaseVO.setMsg(msg);
model.addAttribute("RspBaseVO",rspBaseVO);
return "/com/test/codeTest";
}
jspページ
page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> - title>
head>
<body>
code : ${RspBaseVO.code} <br/>
msg : ${RspBaseVO.msg}
body>
html>