SpringMVC 修炼手册 part8 BeanNameViewResolver的使用(输出excel&pdf)

来源:互联网 发布:手机杀毒软件 知乎 编辑:程序博客网 时间:2024/04/29 06:03

本次内容:  BeanNameViewResolver的使用(*输出excel&pdf)


流程为:当拦截请求返回"export"后,因为在配置文件中设置了

<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="1"></bean>

所以会把对应的bean当做解析器来用,接着就会在配置文件中找到id为"export"的bean, 指向的是继承了AbstractExcelView的自己写的UserListExcel类,调用buildExcelDocument对象


注意要导入依赖的jar包


<!-- 会自动加载一些验证类 -->    <mvc:annotation-driven/>            <!-- 扫描包下的所有注解类 : 哪个可以处理我的请求?-->                 <context:component-scan base-package="controller"></context:component-scan><!-- p:order设置的是一个优先级 --><bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="1"></bean><bean id="export" class="document.UserListExcel"></bean>


public class UserListExcel extends AbstractExcelView{@Overrideprotected void buildExcelDocument(Map<String, Object> mm,HSSFWorkbook workbook,HttpServletRequest request,HttpServletResponse response) throws Exception {List<User> userList = (List<User>)mm.get("userList");HSSFSheet sheet = workbook.createSheet("dsun_sheet");HSSFRow row = sheet.createRow(0);//创建第一行数据row.createCell((short)0).setCellValue("名字");row.createCell((short)1).setCellValue("年龄");row.createCell((short)2).setCellValue("生日");int startRow = 1;HSSFRow new_row = null; for (User user : userList) {new_row = sheet.createRow(startRow);//创建第一行数据new_row.createCell((short)0).setCellValue(user.getName());new_row.createCell((short)1).setCellValue(user.getAge());new_row.createCell((short)2).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(user.getBirthday()));startRow ++;}response.setHeader("Content-Disposition", "attachment;filename=user.xls");}}


@Controller@RequestMapping("/user")public class UserController {@RequestMapping("/exportExcel")public String exportExcel(ModelMap map) {List<User> userList = new ArrayList<User>();for(int i = 0 ; i < 100; i ++){User user = new User();user.setAge(i);user.setBirthday(new Date());user.setName("dsun" + i );userList.add(user);}map.put("userList", userList);return "export";}}



0 0