配置支持ModelAndView

在application.xml中配置支持ModelAndView,配置方式有两种。

  • 配置一
      <bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property> <!-- 视图文件的前缀 -->
<property name="suffix" value=".jsp"></property> <!-- 视图文件的后缀名 -->
<!-- view是用什么显示,这里是jsp,还可以用velocity之类的 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
</bean>
  • 配置二
      <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"></bean>

这种方式需要在beans中添加xmlns:p="http://www.springframework.org/schema/p"的支持。

ModelAndView实现与调用

ModelAndView的构造方法有以下几种。

    ModelAndView()
ModelAndView(View view)
ModelAndView(String viewName, Map<String, ?> model)
ModelAndView(View view, Map<String, ?> model)
ModelAndView(String viewName, String modelName, Object modelObject)
ModelAndView(View view, String modelName, Object modelObject)

ModelAndView预设是使用forward来转发请求结果给视图的,使用RedirectView会导致将请求重新导向视图。

    new ModelAndView(new RedirectView(this.getViewPage())); 

viewPage的路径是从根目录算起,而不是web-inf算起,当指定viewName必须相对与根目录的路径。

DispatcherServlet会根据传回的ModelAndView来解析View名称,并处理给予的Model。View名称的解析是委托给实作org.springframework.web.servlet.ViewResolver接口的实例,ViewResolver接口定义如下:

public interface ViewResolver {
public view resolveViewName(String, Locale locale) throws ServletException; }

ViewResolver的一个实例是InternalResourceViewResolver,名称解析完之后,实际的View绘制与Model转换处理是交给实作org.springframework.web.servlet.View的实例,View接口如下:

public interface View {
public void render(Map model, HttpServletResquest resquest, HttpServletResponse response) throws ServletException, IOException;
}

    View的实作之前用过org.springframework.web.servlet.view.InternalResourceView,另外也还有JstlView、TilesView、VelocityView等等的实作,分别进行不同的表现展处理。

参考资料

http://itroop.iteye.com/blog/263845

最新文章

  1. ABP文档 - Mvc 控制器
  2. 数值分析之QR因子分解篇
  3. 深度|OpenAI 首批研究成果聚焦无监督学习,生成模型如何高效的理解世界(附论文)
  4. SQL Server 2014 SP2发布下载:数十项更新修复
  5. android 设置textview跑马灯效果
  6. 算法:C++排列组合
  7. 如何javascript获取css中的样式
  8. SQLServer之创建数据库快照
  9. redis安装相关下载
  10. .NET中低版本程序调用高版本DLL
  11. python---django中orm的使用(5)数据库的基本操作(性能相关:select_related,和prefetch_related重点)(以及事务操作)
  12. zabbix监控第一台服务器
  13. List元素为泛型时的注意事项
  14. html5实现的一些效果
  15. Android Studio 编译报错:Process &#39;command &#39;D:\SDK\AS\sdk\build-tools\23.0.0\aapt.exe&#39;&#39; finished with non-zero exit value 1
  16. 深入jetty的使用详解
  17. [Swift]数学库函数math.h | math.h -- mathematical library function
  18. &quot;HK&quot;日常之冻结术
  19. wtforms Form实例化流程(源码解析)
  20. 简短的perl程序

热门文章

  1. MapReduce——计算温度最大值 (基于全新2.2.0API)
  2. js循环array,json,map
  3. 如何在 Windows 7 安裝 SharePoint Server 2010
  4. C#检验数据有效性验证类
  5. FZU 2237 中位数 主席树 树上k大
  6. acm位运算应用 搜索
  7. Shell 脚本编程
  8. 揭开嵌入式c面试题背后的玄机
  9. 【前端】CSS3实现弹出效果
  10. HTTP/2 常见问题回答