`

无聊贴一个Spring multiple view resolver

阅读更多

 

package org.dy.ext.spring.web;

import java.util.Locale;
import java.util.Map;

import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.UrlBasedViewResolver;

public class MultipleViewResolver extends UrlBasedViewResolver {

	private Map<String, ViewResolver> resolvers;
	
	@Override
	protected View loadView(String viewName, Locale locale) throws Exception {
		// TODO Auto-generated method stub
		return internalResolveViewName(viewName, locale);
	}

	public View internalResolveViewName(String viewName, Locale locale)
			throws Exception {
		// 获得扩展名
		int n = viewName.lastIndexOf(".");
		if (n == -1)
			return null;
		String suffix = viewName.substring(n + 1);

		String resolverViewKey = "";
		// 查找 eg. zftl,ftl = oneResolver => ftl = oneResolver
		for (String key : resolvers.keySet()) {
			String[] arr = key.split(",");
			for (String subViewName : arr) {
				if (subViewName.equals(suffix)) {
					resolverViewKey = key;
					break;
				}
			}
		}

		// 取出对应的ViewResolver:
		ViewResolver resolver = resolvers.get(resolverViewKey);
		if (resolver != null)
			return resolver.resolveViewName(viewName, locale);

		// 没有找到对应的ViewResolver就抛异常
		return null;
	}

	public Map<String, ViewResolver> getResolvers() {
		return resolvers;
	}

	public void setResolvers(Map<String, ViewResolver> resolvers) {
		this.resolvers = resolvers;
	}

}
 

 

<bean id="viewResolver"
		class="org.dy.ext.spring.web.MultipleViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="resolvers">
			<map>
				<entry key="jsp">
					<bean
						class="org.springframework.web.servlet.view.InternalResourceViewResolver">
						<property name="viewClass"
							value="org.springframework.web.servlet.view.JstlView" />
						<property name="prefix" value="/WEB-INF/jsp/" />
					</bean>
				</entry>
				<!-- 其中的js/css表示当需要freemarker动态生成js/css文件 -->
				<entry key="ftl,zftl,js,css">
					<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
						<property name="cache">
							<value>true</value>
						</property>
						<property name="viewClass">
							<value>
								org.springframework.web.servlet.view.freemarker.FreeMarkerView
							</value>
						</property>
						<property name="contentType">
							<value>text/html;charset=utf-8</value>
						</property>
						<property name="exposeSpringMacroHelpers">
							<value>true</value>
						</property>
					</bean>
				</entry>
			</map>
		</property>
	</bean>
							
分享到:
评论

相关推荐

    logback filter,tree component,spring exception resolver

    在Spring MVC中,异常处理器(ExceptionResolver)是一个重要的组件,它用于捕获和处理控制器中抛出的未捕获异常。Spring提供了`HandlerExceptionResolver`接口,我们可以自定义实现这个接口来处理特定类型的异常。...

    Spring Mvc——第一个应用程序

    **Spring MVC —— 第一个应用程序** Spring MVC 是 Spring 框架的一个模块,主要用于构建 Web 应用程序。它提供了一种模型-视图-控制器(MVC)架构,简化了开发过程,使得开发者可以专注于业务逻辑而不必过于关心...

    实例化Spring bean的两种工厂方法

    在Spring配置文件中,我们需要定义一个工厂bean,然后指定该工厂bean的`factory-bean`属性,以及工厂bean中用于创建目标bean的方法,即`factory-method`属性。下面是一个简单的例子: ```xml ``` 在这个...

    视图解析器(View Resolver)(处理方案).md

    视图解析器(View Resolver)(处理方案).md

    Nginx DNS resolver配置实例

    nginx 通过 proxy_pass 和 upstream server 通信的时候需要手动指定 resolver。某些时候 DNS 解析失败就会出现这个错误: 代码如下: domain.com could not be resolved. 可以指定多个 DNS 并重置域名 TTL 延长 ...

    spring MVC简单示例

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(Model-View-Controller)架构的应用程序提供了强有力的支持。在本示例中,我们将深入探讨Spring MVC的基本概念、配置以及如何创建一个...

    resolver-status.properties

    resolver-status.properties

    Spring整合Servlet练习

    通过Spring与Servlet的整合,我们可以构建出一个优雅、高效、易于维护的Web应用。在实际项目中,还可以结合其他Spring模块,如Spring Security进行权限控制,或者Spring Boot简化配置,实现更高级的功能。这种整合...

    开源框架 Spring Gossip

    第一个 Spring MVC 程式 WebApplicationContext Handler Mapping Handler Interceptor Controller 继承架构 ModelAndView View Resolver Exception Resolver 使用 Controller ...

    Spring框架的学习路径和关键知识点,可以帮助你在Spring方面成为高手: 学习路径 基础知识 Java基础 Servle

    视图解析器(View Resolver) 数据绑定(Data Binding) 表单标签库 异常处理 Spring Boot 快速入门 Starter自动配置 Actuator 自定义启动器 配置文件和属性注入 Spring Boot与Spring Cloud整合 Spring Data JPA JPA...

    Spring MVC 简单Demo

    这个"Spring MVC 简单Demo"旨在帮助初学者理解如何设置和运行一个基本的Spring MVC项目。下面,我们将深入探讨Spring MVC的核心概念、工作原理以及如何创建一个简单的示例。 1. **Spring MVC 概述** Spring MVC是...

    精简源码-spring-mvc 入门级使用,亲测好用

    这个"精简源码-spring-mvc 入门级使用"的压缩包文件,旨在为初学者提供一个简单易懂的实践案例,帮助他们快速理解和上手 Spring MVC。 首先,我们从 "spring" 这个标签开始。Spring 是一个开源框架,它提供了一个...

    Spring mvc整合mybatis例子

    Spring MVC 提供了模型-视图-控制器架构模式的实现,而MyBatis则是一个轻量级的SQL映射框架,用于简化数据库操作。将这两个框架整合在一起可以构建出高效、灵活的Web应用。以下是对整合Spring MVC和MyBatis的详细...

    Spring3 MVC 实例

    Spring3 MVC是一个强大的Java web开发框架,用于构建高效、可维护的Web应用程序。在这个实例中,我们将深入探讨Spring MVC的核心概念和技术,以及如何实现表单验证功能。 首先,Spring MVC是Spring框架的一部分,它...

    非注解Springmvc+spring+hibernate 入门实例

    SpringMVC作为Spring的一部分,专门用于处理Web层的请求,而Hibernate则是一个强大的对象关系映射(ORM)框架,简化了数据库操作。下面我们将深入探讨"非注解SpringMVC+Spring+Hibernate入门实例"中的关键知识点。 ...

    Spring MVC学习框架

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的重要组成部分。Spring 框架以其依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)为核心,而 Spring...

    spring_MVC源码

    -- 这里在配成spring,下边也要写一个名为spring-servlet.xml的文件,主要用来配置它的controller --&gt; 19. *.do&lt;/url-pattern&gt; 20. &lt;/servlet-mapping&gt; 21. &lt;welcome-file-list&gt; 22. &lt;welcome-file&gt;index.jsp...

    spring 学习 springview例子

    当控制器完成业务逻辑处理后,会返回一个逻辑视图名(Logical View Name),而不是实际的视图资源路径。视图解析器的作用就是将这个逻辑视图名转换为实际的视图路径,如JSP、Thymeleaf或FreeMarker模板。 常见的...

    spring_day02

    总之,Spring框架是一个功能强大的工具集,能够帮助开发者构建可维护、可扩展的Java应用程序。深入理解并熟练使用Spring的各个模块,对于提升开发效率和代码质量具有重要意义。通过"spring_day02"的学习,我们有望更...

    me(spring)

    Spring MVC 是 Spring 框架的重要组成部分,它是一个轻量级的、模型-视图-控制器(MVC)架构的Web应用开发框架。Spring MVC 提供了一种优雅的方式来组织和构建Web应用程序,其核心特性包括依赖注入、AOP(面向切面...

Global site tag (gtag.js) - Google Analytics