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配置了几个默认访问页面。当时对设置默认访问的优先级没有系统的了解,导致花费了大半天才弄明白。
今天,你学会配置默认访问页面了吗?对这几种方式的优先级是否了解呢?
最后,欢迎访问我的博客网站:https://geshanzsq.com/article/3
Spring MVC或Spring Boot配置默认访问页面不生效?的更多相关文章
- Spring Mvc和Mybatis的多数据库访问配置过程
Spring Mvc 加Mybatis的多数据库访问源配置访问过程如下: 在applicationContext.xml进行配置 <?xml version="1.0" en ...
- Spring MVC 到 Spring Boot 的简化之路(山东数漫江湖)
背景 从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷.但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的 ...
- Spring MVC 到 Spring BOOT 的简化之路
背景 Spring vs Spring MVC vs Spring Boot Spring FrameWork Spring 还能解决什么问题 Spring MVC 为什么需要Spring Boot ...
- Spring MVC 学习总结(八)——Spring MVC概要与环境配置(IDEA+Maven+Tomcat7+JDK8、示例与视频)
一.MVC概要 MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范,用一种将业务逻辑.数据.显示分离的方法组织代码,MVC主要作用是降低了视图与业务 ...
- 【转】Spring,Spring MVC及Spring Boot区别
对于一个Java开发者来说,Spring可谓如雷贯耳,无论是Spring框架,还是Spring引领的IOC,AOP风格,都对后续Java开发产生的深远的影响,同时,Spring社区总能及时响应开发者的 ...
- Spring,Spring MVC,Spring Boot 三者比较
Spring,Spring MVC,Spring Boot 三者比较 Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spring 的 io ...
- spring mvc 和spring boot 中注解的使用
1 spring mvc和spring boot之间的关系 spring boot包含spring mvc.所以,spring mvc的注解在spring boot总都是可以用的吗? spring b ...
- spring mvc和spring boot的区别
spring boot只是一个配置工具,整合工具,辅助工具. springmvc是框架,项目中实际运行的代码 Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等 ...
- 手写Spring MVC框架(二) 实现访问拦截功能
前言 在上一篇文章中,我们手写了一个简单的mvc框架,今天我们要实现的功能点是:在Spring MVC框架基础上实现访问拦截功能. 先梳理一下需要实现的功能点: 搭建好Spring MVC基本框架: ...
随机推荐
- Java(7)泛型
目录 一.泛型概述 1.什么是泛型 2.为什么用泛型 3.在集合中使用泛型 二.自定义泛型结构 1.泛型类.接口 2.泛型方法 三.举例泛型类和泛型方法的使用场景 1.泛型类举例: 2.泛型方法举例 ...
- Spring Cloud实战 | 最八篇:Spring Cloud +Spring Security OAuth2+ Axios前后端分离模式下无感刷新实现JWT续期
一. 前言 记得上一篇Spring Cloud的文章关于如何使JWT失效进行了理论结合代码实践的说明,想当然的以为那篇会是基于Spring Cloud统一认证架构系列的最终篇.但关于JWT另外还有一个 ...
- ci爬坑
1.row_array() 问题描述:没有数据返回NULL,直接foreach,报错
- 太妙了!Spring boot 整合 Mybatis Druid,还能配置监控?
Spring boot 整合 Mybatis Druid并配置监控 添加依赖 <!--druid--> <dependency> <groupId>com.alib ...
- 深度分析:Redis 的数据结构及其使用场景分析,原来这么简单?
Redis基础数据结构有哪些? 一.String(字符串) 在任何一种编程语言里,字符串String都是最基础的数据结构, 那你有想过Redis中存储一个字符串都进行了哪些操作嘛? 在Redis中St ...
- MindManager主题标记功能怎么使用
我们在使用MindManager制作思维导图的过程中,经常需要对主题的类别,优先程度等进行整理,毫无疑问,这是一项繁琐却又不得不做的工作.今天小编为大家带来了MindManager主题整理的一些小技巧 ...
- 工作中使用RabbitMQ
写一个基类 1 <?php 2 3 namespace BI\Service\RabbitMQJob; 4 5 use AMQPConnection; 6 use AMQPChannel; 7 ...
- 安装kibana7.7.0
ELK·Elastic Stack Elastic Stack就一套日志分析系统,前身叫ELK. E:Elasticsearch L:Logstash,日志收集系统 K:Kibana,数据可视化平台 ...
- CentOS 7下安装Docker
安装一些必要的系统工具: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 添加软件源信息: sudo yum-conf ...
- CentOS中安装Docker步骤
1.安装仓库所需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2 2.设置yum加速源 yum-config-mana ...