15.5 视图和视图解析器
来源:互联网 发布:c语言冒泡排序 编辑:程序博客网 时间:2024/06/15 00:30
Controller类的方法处理完后,最终会返回一个ModelAndView对象。那些返回String、View、ModelMap等的方法,spring MVC会在内部把它们装配成ModelAndView对象
经过视图解析器(ViewResolver)可以得到视图:
jsp和jstl
例:
<!-- 视图解析器,将视图逻辑名解析为/WEB-INF/views/<viewName>.jsp --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/views/" p:suffix=".jsp"></bean>
如果jsp引用了JSTL的国际化功能:
步骤:
1、在Controller类的配置文件baobaotao-servlet.xml中加上<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/views/" p:suffix=".jsp"></bean> <!--国际化资源 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <!-- 这儿的是src/conf/i18n下的messages.properties和content.properties,两个文件中放的都是一些属性常量信息,以便后期查询--> <value>conf/i18n/messages</value> <value>conf/i18n/content</value> </list> </property> </bean>2、UserController.java中加上方法: @RequestMapping(value = "/showUserList") public String showUserList(ModelMap mm) { Calendar calendar = new GregorianCalendar(); List<User> userList = new ArrayList<User>(); User user1 = new User(); user1.setUserName("tom"); user1.setRealName("汤姆"); calendar.set(1980, 1, 1); user1.setBirthday(calendar.getTime()); User user2 = new User(); user2.setUserName("john"); user2.setRealName("约翰"); user2.setBirthday(calendar.getTime()); userList.add(user1); userList.add(user2); mm.addAttribute("userList", userList); return "user/userList"; }3、web-inf/views/user/userList.jsp注:需要先在WEB-INF/lib下放jstl.jar和standard.jar否则会出错两个<fmt:message key=""/>标签,里面的内容都是在baobaotao-servlet.xml中声明的国际化资源里提到的文件messages.properties和content.properties里的常量信息<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><html> <head> <title><fmt:message key="website.title"/></title> </head> <body> <fmt:message key="user.userList.title"/> <table> <c:forEach items="${userList}" var="user"> <tr> <td> <a href="<c:url value="/user/showUser/${user.userName}.html"/>"> ${user.userName} </a> </td> <td> ${user.realName} </td> </tr> </c:forEach> <table> </body></html>4、测试http://localhost:8080/easy_springmvc_test/user/showUserList
生成excel
1、先写一个根据数据生成Excel的类
-- UserListExcelView.javapackage com.web;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang3.time.DateFormatUtils;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.springframework.stereotype.Component;import org.springframework.web.servlet.view.document.AbstractExcelView;import com.domain.User;// 使用POI技术创建Excel文档public class UserListExcelView extends AbstractExcelView { @Override protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setHeader("Content-Disposition", "inline; filename="+ new String("用户列表".getBytes(), "utf-8")); List<User> userList = (List<User>) model.get("userList"); HSSFSheet sheet = workbook.createSheet("users"); HSSFRow header = sheet.createRow(0); header.createCell(0).setCellValue("帐号"); header.createCell(1).setCellValue("姓名"); header.createCell(2).setCellValue("生日"); int rowNum = 1; for (User user : userList) { HSSFRow row = sheet.createRow(rowNum++); row.createCell(0).setCellValue(user.getUserName()); row.createCell(1).setCellValue(user.getRealName()); String createDate = DateFormatUtils.format(user.getBirthday(), "yyyy-MM-dd"); row.createCell(2).setCellValue(createDate); } }}
2、在配置文件baobaotao-servlet.xml中声明
<!-- Excel视图解析器配置 --> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="10" /> <bean id="userListExcel" class="com.web.UserListExcelView" />
3、UserController.java中的方法:
@RequestMapping(value = "/showUserListByXls") public String showUserListInExcel(ModelMap mm) { Calendar calendar = new GregorianCalendar(); List<User> userList = new ArrayList<User>(); User user1 = new User(); user1.setUserName("tom"); user1.setRealName("汤姆"); calendar.set(1980, 1, 1); user1.setBirthday(calendar.getTime()); User user2 = new User(); user2.setUserName("john"); user2.setRealName("约翰"); user2.setBirthday(calendar.getTime()); userList.add(user1); userList.add(user2); mm.addAttribute("userList", userList); return "userListExcel"; }
4、运行结果及分析:
输入http://localhost:8080/easy_springmvc_test/user/showUserListByXls,就会自动下载excel文件。
分析:showUserListInExcel方法返回的是return “userListExcel”;首先尝试找看看是否有userListExcel.jsp这个视图,结果没有。所以此时尝试在配置文件中看看是否有id是userListExcel的bean,找到了,按照此bean对应的类执行创建Excel即可。
0 0
- 15.5 视图和视图解析器
- 视图和视图解析器
- 自定义Spring 视图和视图解析器
- spring 视图和视图解析器
- Spring 视图和视图解析器简介
- springmvc之视图和视图解析器
- SpringMVC中的视图和视图解析器
- SpringMVC中的视图和视图解析器
- springmvc之视图和视图解析器
- SpringMVC-5 视图和视图解析器
- SpringMVC的视图和视图解析器
- 【SpringMVC】视图和解析器
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- springmvc 视图和视图解析器相关类介绍
- Vue.js基础使用教程
- Java基础之泛型
- Windows驱动开发调试工具
- 《数据结构》严蔚敏版(java解)——第三章 栈和队列03 顺序队列操作
- prtobuf 优缺点总结
- 15.5 视图和视图解析器
- ****沙箱与宿主机交互信息过程****
- Android独有的序列化Parcelable
- 20170215.视觉SLAM漫谈(转载)
- 2017/2/15 问题合集
- js中时间戳到格式化
- python 的日志logging模块学习
- Windows10 Git CopSSH
- android gradle plugin to version 2.2.2 and gradle to version 2.14.1