Spring MVC或Spring Boot设置默认访问页面及项目配置不生效原因

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

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

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

1.tomcat配置默认访问页面

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

<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 );
        }
    }

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,给的权限是最高的,所以比3、4两种优先级高。第3种因为Controller配置了"/",会优先匹配,而不是寻找/index的Controller。

注: 如果项目的web.xml没有配置设置访问页面,tomcat也会自动去寻找WebRoot目录下的index文件。如果要使后面三种方式生效,需保证tomcat没有配置设置访问页面或WebRoot目录下没有index文件。

遇到问题: 使用了第2种Spring Boot设置默认访问方式,由于是使用外部的tomcat,并且tomcat配置了几个默认访问页面。当时对设置默认访问的优先级没有系统的了解,导致花费了大半天才弄明白。

相关文章
|
29天前
|
Java API Maven
Spring Boot 创建项目详细介绍
如何创建一个 Spring Boot 项目,以及自动生成的目录文件作用。
123 2
|
29天前
|
前端开发 Java 数据库连接
Spring Boot 详细简介!
Spring Boot 是什么?能干啥?
248 0
Spring Boot 详细简介!
|
29天前
|
JSON fastjson Java
阿里巴巴为什么不建议 boolean 类型变量用 isXXX
为什么不推荐使用 isXXX 来命名呢?到底是用基本类型的数据好呢还是用包装类好呢?
阿里巴巴为什么不建议 boolean 类型变量用 isXXX
|
29天前
|
SQL 缓存 Java
Mybatis 技术内幕:执行一个Sql命令的完整流程
如果不是使用Mapper接口调用,而是直接调用SqlSession的方法,那么,流程图从SqlSession的地方开始即可,后续都是一样的。
Mybatis 技术内幕:执行一个Sql命令的完整流程
|
29天前
|
Oracle Java 关系型数据库
Linux 安装 JDK 环境
由于 JDK1.8.202 是最后一个免费版本,建议下载此版本。由于在 Oracle 官方网站下载需要登录,可通过华为云镜像下载。
288 1
Linux 安装 JDK 环境
|
29天前
|
移动开发 编解码 运维
想做短剧出海?搭建自主海外短剧平台需要注意哪些问题?
想自主搭建海外短剧平台?本文系统梳理从需求定位、模块化架构(四层设计)、五步落地流程,到本地化适配、多端支持、合规支付与安全运维的全流程方案,助企业低成本、高效率打造可控、可扩展的自有短剧平台。(239字)
|
28天前
|
Arthas 监控 Java
阿里程序员常用的 15 款开发者工具!
阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。
289 1
|
29天前
|
人工智能 自然语言处理 数据可视化
AI驱动下的BI选型:大数据量、实时性与可视化的三维评估模型
本文提出AI驱动的BI选型三维评估模型——聚焦大数据量处理、实时响应性能与可视化表达能力。以瓴羊Quick BI为例,解析其云原生架构支撑十亿级秒级查询、智能引擎实现流批一体实时分析、AI Agent赋能自然语言生成与智能可视化,助力企业高效决策。
|
29天前
|
XML Java 数据格式
Spring中引入增强(IntroductionAdvice)的底层实现原理
一个 Java 类,没有实现A接口,在不修改Java类的情况下,使其具备A接口的功能。
|
29天前
|
Linux Windows

热门文章

最新文章