专栏首页格姗知识圈Spring MVC或Spring Boot配置默认访问页面不生效?

Spring MVC或Spring Boot配置默认访问页面不生效?

相信在开发项目过程中,设置默认访问页面应该都用过。但是有时候设置了却不起作用。你知道是什么原因吗?今天就来说说我遇到的问题。

首先说说配置默认访问页面有哪几种方式。

1、tomcat配置默认访问页面

进入 tomcat 的 conf 目录,编辑 web.xml 文件。在 <web-app></web-app> 添加默认访问页面。

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

首先默认访问index.html页面,如果该页面不存在,则会访问index.jsp,以此类推。这种方式适合访问静态的页面(也包括JSP)或者说是没有任何参数的页面。

2、Spring Boot设置index默认页面

新建一个类,继承WebMvcConfigurerAdapter类,并加上@Configuration,此方式在tomcat没有配置默认访问页面的情况下生效。

@Configuration
public class DefalutPage extends WebMvcConfigurerAdapter {
    @Override
    public void addViewControllers( ViewControllerRegistry registry )
    {
        registry.addViewController( "/" ).setViewName( "forward:/index.html" );
        registry.setOrder( Ordered.HIGHEST_PRECEDENCE );
        super.addViewControllers( registry );
    }
}

注:在Spring Boot 2.0版本之后编辑器提示已过时,实现WebMvcConfigurer接口即可。

3、配置根节点访问“/”方式

在 Controller 配置一个名为 "/" 的访问路径。当输入完网址后就会调用。此方式在前面三种都没有配置的情况才会调用。

@RequestMapping(value="/")
    public String index(){
        return "index";
    }
}

4、Controller 配置index默认页面

如果tomcat和Spring Boot没有配置默认访问页面,Spring 会主动去寻找 Controller 的 index。如果有则会调用,否则会报404错误。

@RequestMapping(value="/index")
public String index(){
    return "index";
}

优先级:1 > 2 > 3 > 4。因为tomcat的优先级比Spring高,相应于是最高的。以上的配置,都会先去tomcat是否配置默认访问页面。第2种方式由于设置了HIGHEST_PRECEDENCE,除了tomcat的配置给的权限是最高的,所以比3、4两种优先级高。第3种因为Controller配置了"/",会优先匹配,而不是寻找/index的Controller。 注:如果项目的web.xml没有配置设置访问页面,tomcat也会自动去寻找WebRoot目录下的index文件。如果要使后面三种方式生效,需保证tomcat没有配置设置访问页面或WebRoot目录下没有index文件。 遇到问题:使用了第2种Spring Boot设置默认访问方式,由于是使用外部的tomcat,并且tomcat配置了几个默认访问页面。当时对设置默认访问的优先级没有系统的了解,导致花费了大半天才弄明白。

今天,你学会配置默认访问页面了吗?对这几种方式的优先级是否了解呢?

点击右下角的“在看”是一种习惯。如果觉得有用,记得分享,让更多的人知道!

推荐阅读

Linux常用实用命令

List集合去重方式及效率对比

Chrome开发者工具的小技巧

本文分享自微信公众号 - 格姗知识圈(geshanzsq),作者:geshan

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于tomcat一些启动错误的解决方法

    进入Eclipse的工作空间 .metadata.plugins\org.eclipse.wst.server.core目录,修改目录内文件server.xm...

    格姗知识圈
  • mysql5.7的安装与配置(linux环境)

    数据库是网站必不可少的,今天就教大家如何在linux系统安装mysql数据库(centos7环境)。

    格姗知识圈
  • 单点登录(SSO)看这一篇就够了

    最近对单点登录比较感兴趣,也经常听说,看到这篇文章写的挺好的,分享给大家,希望对你有所用处。

    格姗知识圈
  • 苹果机器学习开发日记:如何设计能在Apple Watch上实时运行的中文手写识别系统

    AI 科技评论按:随着苹果机器学习日记(Apple ML Journal)的开放,苹果分享出的设计自己产品、运用机器学习解决问题的故事也越来越多。近日苹果在上面...

    AI科技评论
  • 拯救你的「佛系」朋友圈!这 3 个装 X 利器,第一批 90 后都在用

    可是,到自己发朋友圈的时候,似乎也只有那几种选择。有没有办法能拯救「朋友圈荒」呢?下面这几款小程序,说不定就能帮到你。

    知晓君
  • Docker安装官方tomcat 镜像 阿里云tomcat镜像 的简单使用 实践笔记

    7.1别名访问 比如tomcat2连接tomcat1,那tomcat2的启动参数里要加–link连接

    cookily
  • 高糊马赛克秒变高清,「脑补」面部细节,表情帝:这还是我吗?

    杜克大学近期的一项研究可以将高糊人脸照片转换成清晰的面部图像,而且你完全看不出来图像中的人并非真人,而是计算机生成的人脸。

    机器之心
  • Zuul 网关路由

    路由是微服务架构中不可或缺的一部分,例如:/api/user映射到user服务,/api/shop映射到shop服务。

    小忽悠
  • Zuul 网关路由

    路由是微服务架构中不可或缺的一部分,例如:/api/user映射到user服务,/api/shop映射到shop服务。 Zuul是一个基于JVM的路由和服务端的...

    小忽悠
  • 谷歌提出深度CNN模型NIMA:帮你挑选清晰且有美感的图片

    安妮 编译自 Google Research Blog 量子位 出品 | 公众号 QbitAI 昨天,谷歌研究人员提出一种深度CNN——NIMA,它能够预测人类...

    量子位

扫码关注云+社区

领取腾讯云代金券