视图–逻辑使图和非逻辑视图
非逻辑视图是不需要视图解析器的,比如MappingJacksin2JsionView 含义就是把数据模型转换成JSON
JSTL视图
JSON视图
EXCEL视图:
springMvc推荐AbdtrctXlsView
project abstract void buildExcelDocument(Map<string,object> model,Workbook workbook,
HttpServletRequest request,HttpServletResponse response) Throws Exception{
}
该方法的主要任务是创建一个SHEET页,
假设导出角色信息 则先定义一个接口 用于生成的EXCEL规则
比如
1、定义接口,用于创建规则
public interface ExcelExportService{
public void makeWorkBook(Map<String ,Object > model,Workbook ,workbook);
}
2、定义EXCEL视图
public class ExcelView extends AbstractXlsView{
private String fileName;
//导出视图自定义接口
private ExcelExportServlce exportServlce
构造方法;
public ExcelView (ExcelExportServlce exportServlce){
this.exportServlce=exportServlce
}
构造方法;
public ExcelView (String viewName , ExcelExportServlce exportServlce){
this.setBeanName(viewName );
}
@override
project abstract void buildExcelDocument(Map<string,object> model,Workbook workbook,
HttpServletRequest request,HttpServletResponse response) Throws Exception{
//没有自定义接口
if(exportServlceull){
thorw new RuntimeException(""""")
}
//文件名不能为空,为空则使用请求中的字符串为名
if(StringUtils.isEmpty(fileName)){
String requestCharset=request.getCharacterEncoding();
requestCharset=requestCharsetnull?“UTF-8”:requestCharset;
fileName = new String(fileName.getBytes(requestCharset),“ISO8859-1”);
//设置文件名
reponse.setHeader(“Conent-dispostion”,“attachment;filename=”+fileName);
}
//回调接口方法 使用,自定义,生成Excel文档
exportServlce.makeWorkBook(model,workbook)
}
}
3、在控制器(controller)中添加新方法
@requestMappring(value="")
Public ModelAndViewexport(){
//设置后台参数
RoleParams roleParams = new RoleParams();
PageParams page = new PageParams();
page .setSart(0);
page .setLimit(100000)
roleParams .setPage(page )
//查询护具
List roles = roleService.getRoles(roleParams ),
//模型和视图
ModelAndView mv =new ModelAndView();
//Excel视图,并设置自定义到处接口
ExcelView ev= new ExcelView(exportService());
//文件名
ev.setFileNanme(“角色。xlsx”);
mv.ddObject("roles ",roles );
mv.setView(ev);
return mv;
}
private ExcelExportService(){
//使用lambda表达式
return (Map<String , Object > model ,Workbook workbook){
List roles = model.get(“roles”);,
//生成sheet页
Sheet sheet = workbook.createSheet(“角色”);
//添加标题
Row title = sheet.createRow();
title.create(0).setCellValue(“编号”);
title.create(1).setCellValue(“名称”);
title.create(2).setCellValue(“备注”);
for(int i = 0 ;i<=roles.size();i++){
Role role = roles.get{i};
int rowIndex = i+1;
Row row = sheet.createRoe(rowIndex);
row.createCell(0).setCellValue(role.getId());
row.createCell(1).setCellValue(role.getName());
row.createCell(2).setCellValue(role.getNote());
}
};
}