`
NeverFlyAway
  • 浏览: 69500 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Spring配置多个ViewResolver

阅读更多

项目中有时候需要同时使用Jsp页面和Html静态页面,也可能是xml或者json

spring可以配置多个ViewResolver来处理不同类型的页面

 

例子如下,首先构建一个自己的ViewResolver

这个ViewResolver用来匹配html静态页面

如果没有匹配成功,则checkResource返回false,由其他优先级更低的ViewResolver继续尝试匹配

 

import java.io.File;
import java.util.Locale;

import org.springframework.web.servlet.view.InternalResourceView;

public class HtmlResourceView extends InternalResourceView {

	@Override
	public boolean checkResource(Locale locale) {
		File file = new File(this.getServletContext().getRealPath("/") + getUrl());
		return file.exists();// 判断该页面是否存在
	}

}

 

 

Spring ApplicationContext

用addResourceHandlers把html静态页面的路径设为静态资源

然后配置两个ViewResolver

优先级较高的为刚才创建的htmlViewResolver将viewResolver.setOrder(0)

优先级较低的为映射jsp页面的jspViewResolver将viewResolver.setOrder(1)

 

@Configuration
@Profile(value = { "default" })
@EnableWebMvc
@ComponentScan(basePackages = "com.demo")
public class WebContext extends WebMvcConfigurerAdapter{
	
	@Override
       public void addResourceHandlers(ResourceHandlerRegistry registry) {
       registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
       registry.addResourceHandler("/html/**").addResourceLocations("/html/");
	}
	
	@Bean
	public ViewResolver htmlViewResolver(){
	InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
	viewResolver.setViewClass(HtmlResourceView.class);
	viewResolver.setPrefix("/html/");
	viewResolver.setSuffix(".html");
	viewResolver.setOrder(0);
	return viewResolver;
	}
	
	@Bean
	public ViewResolver jspViewResolver(){
	InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
	viewResolver.setViewClass(JstlView.class);
	viewResolver.setPrefix("/jsp/");
	viewResolver.setSuffix(".jsp");
	viewResolver.setOrder(1);
	return viewResolver;
	}

}

 

 

Controller

假设返回new ModelAndView("homePage")

按照前面配置的两个ViewResolver

Spring会先匹配 /html/homePage.html

如果不存在,再匹配 /jsp/homePage.jsp

 

@RequestMapping(value = { "/" , "" }, produces = "text/html; charset=utf-8")
public ModelAndView visitHomePage(HttpServletRequest request) {
	return new ModelAndView("homePage");
}

 

这样就可以在Spring中配置多个ViewResolver

按照优先级映射不同的页面文件

 

以上

 

0
3
分享到:
评论

相关推荐

    Spring配置Freemarker视图解析器,配置多个视图解析器

    本篇文章将深入探讨如何在Spring中配置Freemarker视图解析器,以及如何配置多个视图解析器以实现更灵活的应用场景。 首先,让我们了解如何配置单个Freemarker视图解析器。在Spring的配置文件(如`...

    spring mvc+hibernate+spring完整配置步骤

    同时,Spring MVC的注解配置使得开发更加简便,而Struts2往往需要较多的XML配置。 Spring MVC处理AJAX请求时,可以直接返回数据,通过`@ResponseBody`注解,框架会自动将对象转换为JSON格式,便于前端处理。这简化...

    spring-multiple-viewresolver:Thymeleaf + Apache Tiles +内部Viewresolver组合配置

    在Spring框架中,视图解析器(View Resolver)是一个至...通过这个项目,你可以学习如何在Spring应用中集成多个视图解析器,以及它们之间的协同工作方式,这对于理解和提升Spring MVC应用的视图层设计能力非常有帮助。

    springmvc + spring + mybatis + maven整合配置文件

    在IT行业中,构建一个高效、可维护的企业级Web应用程序常常会采用MVC(Model-...通过这样的配置,开发者可以快速构建起一个基于Spring MVC、Spring和MyBatis的Web应用,同时利用Maven的便利性进行项目的构建和管理。

    Spring MVC 配置请求的默认处理器.rar

    通过`<mvc:interceptors>`配置,可以添加多个拦截器。 7. **异常处理** 可以通过`<exception-handler>`元素定义全局的异常处理器,当发生特定异常时,调用预定义的处理器方法。 综上所述,配置Spring MVC请求的...

    ssm框架整合的第二个阶段:完成了springmvc框架的配置和spring框架的配置,配置mybatis环境

    配置Spring时,我们需要创建一个或多个配置文件(如`applicationContext.xml`),定义Bean的声明及它们之间的依赖关系。 接着是SpringMVC,它是Spring框架的一个模块,专门用于构建Web应用程序。SpringMVC通过...

    springmvc核心jar包及配置文件

    Spring MVC 包含了多个组件,如DispatcherServlet(前端控制器)、HandlerMapping(处理器映射)、HandlerAdapter(处理器适配器)、ModelAndView(模型和视图)、ViewResolver(视图解析器)等。这些组件协同工作...

    ssm框架整合的第一个阶段:完成了springmvc框架的配置和spring框架的配置

    这个配置文件或类会定义DispatcherServlet的行为,包括处理器映射器(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)等关键组件。比如,`<mvc:annotation-driven>`元素启用基于注解...

    Spring4 整合SpringMVC, Hibernate5, SpringSecurity4.2 源码

    Spring4是Spring框架的一个版本,它包含了多个模块,如Core Container、Data Access/Integration、Web、AOP(面向切面编程)、Instrumentation等。Spring4的更新主要集中在性能提升、对Java 8的支持以及与其他技术的...

    Spring3中配置DBCP,C3P0,Proxool,Bonecp数据源

    在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面包含这些数据源的jar文件和依赖文件及配置文件。。 如Bonecp目前听说是最快的数据源,速度是传统的c3p0的25倍, bonecp.properties文件: ...

    spring3 多视图集成

    总的来说,Spring 3的多视图集成是一项重要的Web开发技能,它允许开发者在多个视图技术之间切换,以满足不同项目的需求。通过配置视图解析器、创建视图模板、编写控制器以及利用相关工具,开发者可以高效地完成视...

    Spring mvc整合mybatis例子

    在Spring配置文件中引入MyBatis的配置,例如`mybatis-config.xml`,并配置SqlSessionFactoryBean,指定MyBatis的配置文件和数据源。 - **配置MyBatis-Spring** 引入MyBatis-Spring库,这是一个连接Spring和...

    springMvc+Mybatis+spring3.0+oscache配置文件

    综上所述,这个压缩包提供的配置文件涵盖了Spring MVC的Web应用开发、MyBatis的数据访问、Spring 3.0的依赖注入和AOP以及oscache的缓存管理等多个方面,对于理解和学习这些技术的集成应用非常有帮助。在实际项目中,...

    Spring mvc + Spring + Spring jdbc 整合 demo

    这个整合Demo是一个学习和实践Spring MVC、Spring和Spring JDBC整合的绝佳案例,它涵盖了Web应用开发的多个层面,从接收用户请求到数据持久化,再到视图的呈现。通过深入研究这个Demo,开发者可以更好地理解和掌握...

    Spring学习心得(一)

    至于"工具"标签,这可能指的是Spring Tool Suite(STS),一个基于Eclipse的集成开发环境,专门为Spring应用提供了一系列的开发工具,如代码提示、项目模板、Spring配置文件编辑器等,极大地提高了开发效率。...

    spring mvc配置国际化

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> ``` **步骤4:在Controller中使用** 在Spring MVC的Controller中,可以使用`ModelAndView`或者`Model`...

    spring mvc案例+配置+原理详解+架包

    这个压缩包包含了关于Spring MVC的案例、配置和原理的详细资料,对于初学者来说,是深入理解该框架的良好资源。 一、Spring MVC 基本概念 1. **模型-视图-控制器(MVC)**:MVC是一种设计模式,将业务逻辑、数据...

    Spring基础培训ppt

    Spring框架由多个模块组成,包括: 1. **Spring Core**:提供IoC和DI功能,是其他模块的基础。 2. **Spring Beans**:与Core模块紧密相关,负责bean的配置和管理。 3. **Spring AOP**:实现了面向切面编程功能。 4....

    Spring+SpringMVC+Mybatis框架项目整合

    此外,Spring还包含了对数据访问、Web应用程序、事务管理、邮件服务等多个领域的支持。 **SpringMVC**: SpringMVC是Spring框架的一部分,专用于构建Web应用程序的Model-View-Controller(MVC)架构。它负责处理...

    spring-web和spring-webmvc_4.2.4

    7. **国际化与主题支持**:Spring MVC提供了对多语言和不同主题的支持,可以根据用户的选择动态切换。 8. **异常处理**:Spring MVC允许通过注解或配置来定义全局的异常处理策略,统一处理应用程序中的异常。 总的...

Global site tag (gtag.js) - Google Analytics