zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    gThumb 3.1.2 发布,支持 WebP 图像
    航空例行天气预报解析 metaf2xml
    Baruwa 1.1.2 发布,邮件监控系统
    Bisect 1.3 发布,Caml 代码覆盖测试
    MoonScript 0.2.2 发布,基于 Lua 的脚本语言
    Varnish 入门
    快速增量备份程序 DeltaCopy
    恢复模糊的图像 SmartDeblur
    Cairo 1.12.8 发布,向量图形会图库
    iText 5.3.4 发布,Java 的 PDF 开发包
  • 原文地址:https://www.cnblogs.com/geshanzsq/p/11089169.html
Copyright © 2011-2022 走看看