手机版
你好,游客 登录 注册
背景:
阅读新闻

Spring配置多个ViewResolver

[日期:2016-05-18] 来源:Linux社区  作者:neverflyaway [字体: ]

项目中有时候需要同时使用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
按照优先级映射不同的页面文件
以上

Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm

基于 Spring 设计并实现 RESTful Web Services http://www.linuxidc.com/Linux/2013-10/91974.htm

Spring-3.2.4 + Quartz-2.2.0集成实例 http://www.linuxidc.com/Linux/2013-10/91524.htm

使用 Spring 进行单元测试 http://www.linuxidc.com/Linux/2013-09/89913.htm

运用Spring注解实现Netty服务器端UDP应用程序 http://www.linuxidc.com/Linux/2013-09/89780.htm

Spring 3.x 企业应用开发实战 PDF完整高清扫描版+源代码 http://www.linuxidc.com/Linux/2013-10/91357.htm

Spring 的详细介绍请点这里
Spring 的下载地址请点这里 

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-05/131500.htm

linux
相关资讯       Spring配置  ViewResolver配置 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款