org.springframework.web.servlet.view.InternalResourceViewResolver
http://blog.csdn.net/superdog007/article/details/28857495
我们在controller里面经常这样return一个ModelAndView: return new ModelAndView('user', 'model', model);
DispatcherServlet靠ViewResolver把user解析为/WEB-INF/jsp/user.jsp:
常用的ViewResolver:
InternalResourceViewResolver:
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsp/" />
- <property name="suffix" value=".jsp" />
- </bean>
其实InternalResourceViewResolver的工作很简单: 在视图逻辑名前面加上prefix,后面加上suffix;
ResourceBundleViewResolver:把视图逻辑名和真实文件的映射关系放在配置文件中.
- <bean id="myViewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
- <property name="order" value="1"/>
- <property name="basename" value="views"/>
- </bean>
因为可以配置多个viewResolver,所以上面的resolver还有一个选项order, 标明优先级。
views.properties放在classpath下面,内容大约是这样的:
userDetail.class=org.springframework.web.servlet.view.JstlView
userDetail.url=/WEB-INF/jsp/userDetail.jsp
userList.class=org.springframework.web.servlet.view.JstlView
userList.url=/WEB-INF/jsp/userList.jsp
......
我们可以在controller里面这样返回一个ModelAndView:
return new ModelAndView("userDetail","model", model);
<2>BeanNameViewResolver:在有一些情况下,我们并不是要通过jsp页面来显示结果,例如,我们想通过一个pdf页面来显示所有课程的列表,而不是想通过jsp或者说html页面。
假设返回到MV对象为:return new ModelAndView("courseList",result_map),并且已经写好了继承了AbstractPdfView的类CourseListPdfView。在配置文件中做如下的设置:
<bean id="beanNameViewResolver" class="org.springframework.mvc.servlet.view.BeanNameViewResolver"/>
<bean id="courseList" class="xx.courseListPdfView"></bean>
BeanNameViewResolver会对返回的逻辑视图的名字,同application Context中的beans的id进行匹配,来进行显示。
<3>XmlViewResolver:在独立的xml文件中声明view beans。
<bean id="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/WEB-INF/xx-views.xml</value>
</property>
</bean>
其中location属性默认的是views.xml,可以自己进行设置,这里是xx-views.xml。下面是xx-views.xml文件的内容
<bean id="hello" class="org.springframework.web.servlet.view.JstlView">
<property name="url">
<value>/WEB-INF/jsp/hello.jsp</value>
</property>
</bean>
XmlViewResolver就是解决了BeanNameViewResolver可能会使main application context文件内容太多的问题,其他与BeanNameViewResolver功能基本一样。
<4>ResourceBundleViewResolver:这是通过名字来解析视图的另一种方法,不同于以上两种方法的是,ResourceBundleViewResolver使用的是properties文件,而不是xml文件。它
不同于以上三种方法的一个优点是,可以根据Locale来为相同的逻辑视图名选择不同的view实现。比如说,同样的一个逻辑视图,法国人习惯于MS Excel显示,德国人习惯HTML显
示,而美国人习惯PDF显示。ResourceBundleViewResolver可以灵活得解决这个问题,在main application context文件中这样设置:
<bean id="bundleViewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename">
<value>views</value>
</property>
</bean>
然后是资源文件:
views_en_US.properties:courseList.class=xx.CourseListPdfView
views_fr_FR.properties:courseList.class=xx.CoureseListExcelView
views_de_DE.properties:courseList.class=org.springframework.web.view.JstlView
org.springframework.web.servlet.view.InternalResourceViewResolver的更多相关文章
- NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.web.servlet.view.InternalResourceViewResolver' available
问题描述: 项目中需要配置多个视图解析器,所以使用ContentNegotiatingViewResolver来处理,在其内部设置了FreeMarkerViewResolver .InternalRe ...
- org.springframework.web.servlet.view.ContentNegotiatingViewResolver
restful服务中一个重要的特性就是一种资源可以有多种表现形式,在springmvc中可以使用ContentNegotiatingViewResolver这个视图解析器来实现这种方式. 描述资源的三 ...
- Cannot find class [org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer]
解决方案:添加spring-webmvc好多人都不知道org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer这个类到底 ...
- org.springframework.web.servlet.view
view包下面的类和接口 description:提供view和viewResolver的标准实现,也提供一些抽象基类.Spring MVC已经提供了 JSPs, Velocity, XSLT等视图的 ...
- org.springframework.web.servlet.PageNotFound
2017-07-11 16:36:13.489 WARN [http-nio-8032-exec-16]org.springframework.web.servlet.PageNotFound -Re ...
- org.springframework.web.servlet.DispatcherServlet noHandlerFound
1 请求URL: http://localhost:8080/mvc/rojas 2 control RequestMapping : @RequestMapping(value="xx ...
- 静态资源[org.springframework.web.servlet.PageNotFound]
springmvc 无法访问js.css.jpg等资源文件,tomcat启动报警告如下 [org.springframework.web.servlet.PageNotFound] - No mapp ...
- org.springframework.web.servlet.PageNotFound No mapping found for HTTP request with URI [/AssetRepair/assetRepairController/test.do] in DispatcherServlet with name 'assetrepair'
web.xml文件配置: xxx-servlet.xml 我们可以发现DispatcherServlet会处理"jsp"后缀的请求;而模型视图后缀也是jsp的 如果这样配置会报以下 ...
- springmvc报错 org.springframework.web.servlet.DispatcherServlet
在写springMVC时,导入所有需要的包后,运行程序,控制台报以下错误: 严重: Servlet [springDispatcherServlet] in web application [/Spr ...
随机推荐
- HTML5 面试中最常问到的 10 个问题
1. HTML5 新的 DocType 和 Charset 是什么?HTML5 现在已经不是 SGML 的子集,DocType 简化为: <!doctype h ...
- 深入学习block
首先,什么是block?block其实就是一个代码块,把你想要执行的代码封装在这个代码块里,等到需要的时候再去调用.那block是OC对象吗?答案是肯定的. 做一道很简单的关于block的测试题: i ...
- View绘制详解(四),谝一谝layout过程
上篇博客我们介绍了View的测量过程,这只是View显示过程的第一步,第二步就是layout了,这个我们一般译作布局,其实就是在View测量完成之后根据View的大小,将其一个一个摆放在ViewGro ...
- Failed to create java virtue machine(不能创建java虚拟机)
今天开发模块时,遇到这个问题,本来是版本的问题,jdk1.6的版本有点低,与cxf框架不兼容,需要用到jdk1.7,结果安装了jdk1.7之后,客户方要求必须用jdk1.6,要统一,所以卸载jdk1. ...
- J2EE综合:如何处理大数据量的查询
在实际的任何一个系统中,查询都是必不可少的一个功能,而查询设计的好坏又影响到系统的响应时间和性能这两个要害指标,尤其是当数据量变得越来越大时,于是如何处理大数据量的查询成了每个系统架构设计时都必须面对 ...
- 论js中的prototype
今天在阅读代码时,碰到了prototype //判断是否是数组function isArray(obj) { return Object.prototype.toString.call(obj) == ...
- Android开发之闹钟
闹钟开发: 1.需要时间选择器TimePicker 2.需要Calendar类对日期时间进行操作 3.需要AlarmManager//闹钟管理实质是一个全局定时器, 是Android中常用的一种系统级 ...
- NDIS小鱼防火墙之拦截指定QQ登录
因为QQ窗口是自绘窗口,gif录制软件不能正常录制到窗口,我就截图功能把窗口显示出来. 下面我的演示,我登录2个QQ号,一个被我指定拦截,让他不能够登录.另一个却可以正常的工作..看我的COOL的演示 ...
- 21_resultMap和resultType总结
[resultType] [ 作用 ] 将查询结果按照SQL列名与pojo属性名一致性 映射到pojo中. [ 使用场合 ] 常见的一些明细记录的展示,比如用户购买商品的明细,将关联查询信息全部展示在 ...
- C++动态二维数组的创建
两种方式. 一,二级指针,创建2行3列的动态二维数组. 这里,p指向的是2个地址,这两个地址各指向长度为3的一维整型数组. 在内存中,每行元素内部顺序排列.两行元素的首地址不同,p[1]与p[2]存放 ...