项目中有时候需要同时使用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
按照优先级映射不同的页面文件
以上
相关推荐
本篇文章将深入探讨如何在Spring中配置Freemarker视图解析器,以及如何配置多个视图解析器以实现更灵活的应用场景。 首先,让我们了解如何配置单个Freemarker视图解析器。在Spring的配置文件(如`...
同时,Spring MVC的注解配置使得开发更加简便,而Struts2往往需要较多的XML配置。 Spring MVC处理AJAX请求时,可以直接返回数据,通过`@ResponseBody`注解,框架会自动将对象转换为JSON格式,便于前端处理。这简化...
在Spring框架中,视图解析器(View Resolver)是一个至...通过这个项目,你可以学习如何在Spring应用中集成多个视图解析器,以及它们之间的协同工作方式,这对于理解和提升Spring MVC应用的视图层设计能力非常有帮助。
在IT行业中,构建一个高效、可维护的企业级Web应用程序常常会采用MVC(Model-...通过这样的配置,开发者可以快速构建起一个基于Spring MVC、Spring和MyBatis的Web应用,同时利用Maven的便利性进行项目的构建和管理。
通过`<mvc:interceptors>`配置,可以添加多个拦截器。 7. **异常处理** 可以通过`<exception-handler>`元素定义全局的异常处理器,当发生特定异常时,调用预定义的处理器方法。 综上所述,配置Spring MVC请求的...
配置Spring时,我们需要创建一个或多个配置文件(如`applicationContext.xml`),定义Bean的声明及它们之间的依赖关系。 接着是SpringMVC,它是Spring框架的一个模块,专门用于构建Web应用程序。SpringMVC通过...
Spring MVC 包含了多个组件,如DispatcherServlet(前端控制器)、HandlerMapping(处理器映射)、HandlerAdapter(处理器适配器)、ModelAndView(模型和视图)、ViewResolver(视图解析器)等。这些组件协同工作...
这个配置文件或类会定义DispatcherServlet的行为,包括处理器映射器(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)等关键组件。比如,`<mvc:annotation-driven>`元素启用基于注解...
Spring4是Spring框架的一个版本,它包含了多个模块,如Core Container、Data Access/Integration、Web、AOP(面向切面编程)、Instrumentation等。Spring4的更新主要集中在性能提升、对Java 8的支持以及与其他技术的...
在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面包含这些数据源的jar文件和依赖文件及配置文件。。 如Bonecp目前听说是最快的数据源,速度是传统的c3p0的25倍, bonecp.properties文件: ...
总的来说,Spring 3的多视图集成是一项重要的Web开发技能,它允许开发者在多个视图技术之间切换,以满足不同项目的需求。通过配置视图解析器、创建视图模板、编写控制器以及利用相关工具,开发者可以高效地完成视...
在Spring配置文件中引入MyBatis的配置,例如`mybatis-config.xml`,并配置SqlSessionFactoryBean,指定MyBatis的配置文件和数据源。 - **配置MyBatis-Spring** 引入MyBatis-Spring库,这是一个连接Spring和...
综上所述,这个压缩包提供的配置文件涵盖了Spring MVC的Web应用开发、MyBatis的数据访问、Spring 3.0的依赖注入和AOP以及oscache的缓存管理等多个方面,对于理解和学习这些技术的集成应用非常有帮助。在实际项目中,...
这个整合Demo是一个学习和实践Spring MVC、Spring和Spring JDBC整合的绝佳案例,它涵盖了Web应用开发的多个层面,从接收用户请求到数据持久化,再到视图的呈现。通过深入研究这个Demo,开发者可以更好地理解和掌握...
至于"工具"标签,这可能指的是Spring Tool Suite(STS),一个基于Eclipse的集成开发环境,专门为Spring应用提供了一系列的开发工具,如代码提示、项目模板、Spring配置文件编辑器等,极大地提高了开发效率。...
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> ``` **步骤4:在Controller中使用** 在Spring MVC的Controller中,可以使用`ModelAndView`或者`Model`...
这个压缩包包含了关于Spring MVC的案例、配置和原理的详细资料,对于初学者来说,是深入理解该框架的良好资源。 一、Spring MVC 基本概念 1. **模型-视图-控制器(MVC)**:MVC是一种设计模式,将业务逻辑、数据...
Spring框架由多个模块组成,包括: 1. **Spring Core**:提供IoC和DI功能,是其他模块的基础。 2. **Spring Beans**:与Core模块紧密相关,负责bean的配置和管理。 3. **Spring AOP**:实现了面向切面编程功能。 4....
此外,Spring还包含了对数据访问、Web应用程序、事务管理、邮件服务等多个领域的支持。 **SpringMVC**: SpringMVC是Spring框架的一部分,专用于构建Web应用程序的Model-View-Controller(MVC)架构。它负责处理...
7. **国际化与主题支持**:Spring MVC提供了对多语言和不同主题的支持,可以根据用户的选择动态切换。 8. **异常处理**:Spring MVC允许通过注解或配置来定义全局的异常处理策略,统一处理应用程序中的异常。 总的...