Spring Boot 默认跳转到index.html的二种方式
第一种方式:项目运行效果为是什么原因呢?我们打开 WebMvcAutoConfiguration 类有下面一段代码@Beanpublic WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext) {...
·
第一种方式:
项目运行效果为
是什么原因呢?
我们打开 WebMvcAutoConfiguration 类
有下面一段代码
@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext) {
return new WelcomePageHandlerMapping(new TemplateAvailabilityProviders(applicationContext), applicationContext, this.getWelcomePage(), this.mvcProperties.getStaticPathPattern());
}
private Optional<Resource> getWelcomePage() {
String[] locations = getResourceLocations(this.resourceProperties.getStaticLocations());
return Arrays.stream(locations).map(this::getIndexHtml).filter(this::isReadable).findFirst();
}
private Resource getIndexHtml(String location) {
return this.resourceLoader.getResource(location + "index.html");
}
这段代码是注册一个返回index.html的 java bean
this.mvcProperties.getStaticPathPattern() 打开发现 this.staticPathPattern = "/**";
就是在项目根目录下查找 index.html 如果找到则跳转相应的index.html页面
如果我们想访问 templates 下面的index.html 也不删除static下面的 index.html 页面,那能不能实现呢?
答案是肯定的
首先第一种方式:
@Controller
public class HelloController {
@RequestMapping(value = {"/","/index.html"})
public String index(){
return "index";
}
}
- 当项目启动 controller 跳转到 templates 下面的页面
- 这种方式是不推荐使用的,推荐使用下面这一种
效果图为
第二种方式:
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
/**
* 拦截某个请求跳转固定位置
*
* @param registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//super.addViewControllers(registry);
registry.addViewController("/nihao").setViewName("success");
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
}
}
-
因为 spring 5抛弃了WebMvcConfigurerAdapter 使用 WebMvcConfigurationSupport 代替了它
- 这个方法的作用就是监听某个请求.返回指定的页面
运行效果为
package com.ruoyi.framework.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.ruoyi.common.config.Global;
/**
* 通用配置
*
* @author ruoyi
*/
@Configuration
public class ResourcesConfig implements WebMvcConfigurer
{
/**
* 首页地址
*/
@Value("${shiro.user.indexUrl}")
private String indexUrl;
/**
* 默认首页的设置,当输入域名是可以自动跳转到默认指定的网页
*/
@Override
public void addViewControllers(ViewControllerRegistry registry)
{
registry.addViewController("/").setViewName("forward:" + indexUrl);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
{
/** 文件上传路径 */
registry.addResourceHandler("/profile/**").addResourceLocations("file:" + Global.getProfile());
registry.addResourceHandler("/video/**").addResourceLocations("file:" + Global.getVideoProfile());
/** swagger配置 */
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
更多推荐
已为社区贡献34条内容
所有评论(0)