Spring MVC学习------------多视图控制器
来源:互联网 发布:php开发工程师 编辑:程序博客网 时间:2024/05/16 12:39
多视图控制器
当有jsp,flt (模板)等多种页面生成展示方式时,spring默认使用的是“视图解析器链”。 真是一个链,所以性能不好,spring会在“视图解析器链”中顺序的查找,直到找到对应的 “视图解析器” 。jsp视图解析器一定要写在最后面,因为一旦调用jsp,就向浏览器发出数据了,Spring就没有机会再尝试下一个了。
所以自己写一个"多视图解析器",依靠扩展名来区分,可一次准确的选中一个 视图解析器,提高性能(会有多少提高呢?没测试过).
下面的例子支持jsp,flt (模板)两种页面生成展示方式,你中以自己添加,支持更多。
- <!-- 多视图处理器 -->
- <bean class="com.xxx.core.web.MixedViewResolver">
- <property name="resolvers">
- <map>
- <entry key="jsp">
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsp/"/>
- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
- </bean>
- </entry>
- <entry key="ftl">
- <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
- <property name="cache" value="true"/>
- <property name="contentType" value="text/html;charset=UTF-8"></property>
- <!-- 宏命令的支持 -->
- <property name="exposeSpringMacroHelpers" value="true"/>
- <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
- <property name="requestContextAttribute" value="rc"></property>
- </bean>
- </entry>
- </map>
- </property>
- </bean>
- <!-- freemarker config -->
- <bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
- <property name="templateLoaderPath" value="/WEB-INF/ftl/" />
- <property name="freemarkerSettings">
- <props>
- <prop key="template_update_delay">5</prop>
- <prop key="default_encoding">UTF-8</prop>
- <prop key="locale">zh_CN</prop>
- </props>
- </property>
- </bean>
- import java.util.Locale;
- import java.util.Map;
- import org.springframework.web.servlet.View;
- import org.springframework.web.servlet.ViewResolver;
- /**
- * 说明: 多视图处理器
- *
- * @author 赵磊
- * @version 创建时间:2011-8-19 上午09:41:09
- */
- public class MixedViewResolver implements ViewResolver{
- private Map<String,ViewResolver> resolvers;
- public void setResolvers(Map<String, ViewResolver> resolvers) {
- this.resolvers = resolvers;
- }
- public View resolveViewName(String viewName,Locale locale) throws Exception{
- int n=viewName.lastIndexOf(".");
- if(n!=-1){
- //取出扩展名
- String suffix=viewName.substring(n+1);
- //取出对应的ViewResolver
- ViewResolver resolver=resolvers.get(suffix);
- if(resolver==null){
- throw new RuntimeException("No ViewResolver for "+suffix);
- }
- return resolver.resolveViewName(viewName, locale);
- }else{
- ViewResolver resolver=resolvers.get("jsp");
- return resolver.resolveViewName(viewName, locale);
- }
- }
- }
转载请注明出处:原文地址:http://elf8848.iteye.com/blog/875830
0 0
- Spring MVC学习------------多视图控制器
- Spring MVC多视图
- MVC(模型-视图-控制器)
- 模型-视图-控制器 (MVC)
- 模型-视图-控制器 (MVC)
- 模型-视图-控制器 (MVC)
- 模型-视图-控制器(MVC)
- [TwistedFate]MVC视图控制器
- Spring MVC多视图配置
- Spring MVC多视图配置
- spring mvc 多视图配置
- spring mvc 多视图配置
- spring MVC多视图配置
- 学习Spring MVC,关于注解的Spring MVC,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例
- MVC 模型-视图-控制器体系结构
- MVC(模型---视图---控制器)
- yii 模型-视图-控制器 (MVC)
- 2.模型-视图-控制器 (MVC)
- linux iio子系统
- iOS开发按钮点击操作的实现
- WEB站点性能优化实践(加载速度提升2s)
- 合并 CentOS 6.5 的两个 DVD 作为本地 YUM 源
- swift的AFNetworking请求数据和json解析
- Spring MVC学习------------多视图控制器
- windows 下安装mongdb
- 进程间通信的分类
- svn 图标所表示的意思
- 机器学习算法汇总
- 关于Android加载图片机制分析
- mysql取time ,datetime字段显示问题
- 宝宝营养粥及如何提高宝宝睡眠
- iOS开发-CoreMotion框架(加速计和陀螺仪)