spring-mvc入门(四):视图与视图解析器(上)_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4395 | 回复: 0   主题: spring-mvc入门(四):视图与视图解析器(上)        下一篇 
tk
注册用户
等级:中士
经验:207
发帖:80
精华:0
注册:2011-10-19
状态:离线
发送短消息息给tk 加好友    发送短消息息给tk 发消息
发表于: IP:您无权察看 2011-10-19 16:10:33 | [全部帖] [楼主帖] 楼主

四、视图与视图解析器

通常像spring mvc 这样的web框架都会有相应的定位视图技术,spring提供了视图解析器来解析ModelAndView模型数据到特定的视图上,spring提供了ViewResolver和View两个特别重要的接口,ViewResolver提供了从视图名称到实际视图的映射,View处理请求的准备的工作,并将该请求提交给某种具体的视图解析器
1.使用Excel作为视图(了解)
步骤一:建立后端控制器ExcelControl.java,主要代码如下:

Java代码

  1. package com.asm; 
  2. //...省略导入的相关类 
  3. publicclass ExcelControl extends AbstractController { 
  4.       @Override
  5.       protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { 
  6.              Map map = new HashMap(); 
  7.              List wordList = new ArrayList(); 
  8.             
  9.              wordList.add("first"); 
  10.              wordList.add("second"); 
  11.              wordList.add("third"); 
  12.             
  13.              map.put("wordList", wordList); 
  14.             returnnew ModelAndView("exl", map); 
  15.        } 


    步骤二:编写web.xml(参前面实例),编写配置spmvc-servlet.xml文件,主要代码如下:

Xml代码

  1. <beanid="rbViewResolver"class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
  2. <propertyname="order"value="2"/>
  3. <propertyname="basename"value="view"/>
  4. </bean>
  5. <beanid="simpleUrlHandlerMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  6. <propertyname="mappings">
  7. <props>
  8. <propkey="/getExcel.do">excelControl</prop>           
  9. </props>
  10. </property>
  11. </bean>
  12. <beanid="excelControl"class="com.asm.ExcelControl"></bean>


 简析:ResourceBundleViewResolver视图解析器会在classpath中寻找properties属性文件,根据此bean配置的<property name="basename" value="view" />说明寻找的properties文件名为view.properties。<property name="order" value="2" />说明了此解析器在整个解析链接中的顺序。
步骤三:编写view.properties文件,主要代码如下:

exl.(class)=com.asm.ExcelViewBuilder


说明:在控制器中返回的视图名称exl——>return new ModelAndView("exl", map),所以这里要用exl.(class)。而exl视图会交给com.asm.ExcelViewBuilder进行预处理。
步骤四:编写AbstractExcelView.java,由于此类用到了生成Excel文件相关的jar包,所以应先下载poi-2.5.1.jar并导入。主要代码如下:

Java代码

  1. package com.asm; 
  2. //...省略导入的相关类 
  3. publicclass ExcelViewBuilder extends AbstractExcelView { 
  4.       protectedvoid buildExcelDocument(Map model, HSSFWorkbook wb, HttpServletRequest req, HttpServletResponse resp) throws Exception { 
  5.              HSSFSheet sheet; 
  6.              HSSFCell cell; 
  7.             
  8.              sheet = wb.createSheet("Spring's Excel"); // 创建一张表; 
  9.             // sheet = wb.getSheetAt(0);//根据索引,得到第一张存在的表 
  10.              sheet.setDefaultColumnWidth((short) 10); // 设置列数为10:即A-J 
  11.              cell = getCell(sheet, 0, 0); //第二个参数-->excel表数字序号;第三个参数-->excel表字母序号,比如此处,构建A1单元格 
  12.              setText(cell, "Spring-Excel test"); // 把内容写入A1 
  13.              List words = (List) model.get("wordList"); 
  14.             for (int i = 0; i < words.size(); i++) { 
  15.                    cell = getCell(sheet, 2, i);// A3-B3-C3 
  16.                    setText(cell, (String) words.get(i)); 
  17.              } 
  18.        } 



步骤五:启动服务器,输入…/getExcel.do,将访问到excel文件。

简析执行过程:当后端控制器接受到前端控制派发的请求时,后端控制器会首先准备Model,这里即Map对象,然后返回exl视图。在返回视图前,会查找spmvc-servlet.xml配置文件,当查找名为exl的视图是由ResourceBundleViewResolver视图解析器进行解析时,这时根据此视图解析的解析规则,会对每个待解析的视图,ResourceBundle里(这时即view.properties文件)的[视图名].class所对应的值就是实现该视图的类。 同样,[视图名].url所对应的值是该视图所对应的URL。当视图类成功完成视图的预处理工作后,会把此视图返回给客户端。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论