spring默认欢迎页设置

Spring Boot(3) Web开发(1)静态资源处理 Spring Boot(3) Web开发(1)静态资源处理 基于spring boot 2.4.3版本 1.静态资源访问 1.1 静态资源目录 把静态资源放在类路径下的以下目录:/static; /public; /resources; /META-INF/resources;这些目录作为这些静态资源的根目录,如输入http://localhost:8080/4.jpg可直接访问 过程:请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应4 阅读详情
  1. 简单配置的方式,直接展示静态网页,不经过Controller。
    web.xml 中什么没有配置任何有关欢迎页的信息!其实这时等效于如下配置:这个会由Web容器最先访问!

//-未指定欢迎页时,缺省等于如下配置。这个应该不同的Web服务器可以设置,但大多数都如此-。

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

在web.xml中什么都不写的时候,默认访问WebContent目录下的index页面,不管是index.html还是index.jsp页面。但是这个页面不经过Controller的处理,相当于静态的页面。

此外也可以通过如下的方式,指定首页要显示的视图页面:

<welcome-file-list>
       <welcome-file>/WEB-INF/jsp/hello.jsp</welcome-file>
    </welcome-file-list>

以上方式,在浏览器中输入http://localhost:8080/工程名/,即可返回指定的页面。

2.在静态页面上进行跳转。核心 代码:<meta http-equiv="Refresh" content="0; URL=spring/">
项目目录下,有个index.html文件,加入如下内容进行跳转:

<html> 
<head>
  <meta http-equiv="Refresh" content="0; URL=spring/">
</head>
</html>

跳转到的url全路径就相当于 http://localhost:8080/项目名/spring/。这个路径就会由mvc 的DispatcherServlet来处理。为什么呢,是因为web.xml中进行了如下url配置:

<servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/app/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/spring/*</url-pattern>
</servlet-mapping>

此时在浏览器输入http://localhost:8080/项目名时候,浏览器的地址会自动的跳转到 http://localhost:8080/项目名/spring/,根据此规则,就会对应为MVC 路径路由中的 /。也就是HomeController。

@Controller
public class HomeController
{
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Model model)
    {        
        return "home";
    }
}

然后找到对应的home.jsp。

整个流程如此。其实缺省为什么设置这么一个spring路径。主要目的是为了提升spring对url的处理效率。spring/下的分支都交由spring来处理,其它的就可以交由web 服务器。

如果一切都交给spring处理,我们就要将 / 进行拦截。嗯,一定会由很多静态资源、或者其它动态jsp是另有用途,也会先被spring拦截,然后再当做另外来处理。可以是可以,但是效率上就会觉得多了一步。

但是,另一方面,我们在规划url时,可能会尽可能的减短,以方便用户的输入;同时,规划url时,才不会考虑spring的效率呢,也就是url设计先行。这个时候,通常不会有spring这个特定的路径;也就是spring要将就url的规划。也就是要对 / 进行拦截了。

3.配置servlet。
之前的SpingMVC配置控制器的代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

    <!-- 为spring配置监听器 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml,
                 <!-- /WEB-INF/hello-dao.xml,
                 /WEB-INF/hello-service.xml, -->
    </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 默认首页定义 --> 
    <welcome-file-list>
       <welcome-file>/WEB-INF/jsp/hello.jsp</welcome-file> 
    </welcome-file-list>
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 通过初始化参数声明配置文件位置 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/hello-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>


</web-app>

此时浏览器中输入http://localhost:8080/Hello/即可进入到指定的静态首页。

问题的由来:
welcome-file-list一般情况下只能使用静态网页,如果非要把他配置成SpringMVC的控制器URL就会报错

解决的方法:
仔细看了一些资料,发现welcome-file-list可以转向到servlet,但是!!!前提是servlet不能有扩展名,否则就当成静态文件处理了,那么这样的话就尝试了定义个没有扩展名的SpringMVC控制器URL。修改配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

    <!-- 为spring配置监听器 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml,
                 <!-- /WEB-INF/hello-dao.xml,
                 /WEB-INF/hello-service.xml, -->
    </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 指定welcome-file-list要转向的servlet -->
    <welcome-file-list>
       <welcome-file>index</welcome-file>  <!-- 注意 -->
    </welcome-file-list>
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 通过初始化参数声明配置文件位置 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/hello-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/index</url-pattern>     <!-- 注意 -->
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>


</web-app>

注意:welcome-file-list配置的是没有 / 的 index,下面为SpringMVC控制器单独注册了一个 /index 的URL(这个有 “/”)
Controller写法:

@Controller
public class Shouye {
    @RequestMapping(value = "/index") 
    public String index(){  
        System.out.print("333shouye");
            return "index";  
    }  


}

此时浏览器中输入http://localhost:8080/Hello/,即可进入到Shouye 返回的视图。

4.直接对根路径进行拦截
必须在web.xml中加入如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

    <!-- 为spring配置监听器 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml,
                 <!-- /WEB-INF/hello-dao.xml,
                 /WEB-INF/hello-service.xml, -->
    </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 指定默认页面 -->
    <welcome-file-list>
       <welcome-file></welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 通过初始化参数声明配置文件位置 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/hello-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>


</web-app>

此时,web服务器就知道,根路径不要web服务器来处理,而是由程序自身来处理。这时,index.html也就不起作用了。

然后,根路径就被 Shouye 这个Controller拦截了;因为其中配置了对”/”的映射。

@Controller
public class Shouye {
    @RequestMapping(value = "/") 
    public String index(){  
        System.out.print("333shouye");
            return "index";  
    }  


}

此时浏览器中输入http://localhost:8080/Hello/,即可进入到Shouye 返回的视图。

welcome-file-list 与SpringMvc 的 DispatcherServlet 在SpringMVC中 所有的请求都由dispatcherServlet处理(url-pattern配置的是/),当配置文件中有对静态资源的处理   时候  ,先匹配 welcome-file-list 中的文件,依次查找,找到了就 返回,如果没有找到就继续匹配到controller 例如附件例子,webapp下有test.html 和index.html两个文件,访问仅仅输入 工程名称 ,首先会返回test.html .如果此文件不存在 则返回index.html,如果都不存在则 进入controller 立即下载

相关推荐

Unity坦克物理系统:履带驱动与力场建模实战指南

在游戏物理仿真中,履带车辆的运动建模远超传统轮式控制器的范畴。其核心在于摒弃WheelCollider的滚动幻觉,转向基于牛顿力学的力与力矩协同求解——通过主推进力场、转向力矩场和地面反作用力场三重叠加,实现对质量、摩擦、惯性及坡度阻力的真实响应。这种建模方式不仅支撑坦克爬坡、陷泥、侧倾等复杂行为,更保障了多人同步与高帧率下的物理稳定性。Physics Tank Maker 正是这一思路的工业级落地,它将PhysX底层机制与坦克动力学深度耦合,提供可调参数、事件驱动视觉反馈及标准扩展接口,成为面向严肃模拟类

weixin_29535577的博客 562

23SpringBoot的欢迎页

在SSM中一般启动服务器后,会自动跳转到 默认的欢迎页或者通过web.xml中的welcome-file-list指定的欢迎页。但在Springboot中则无法自动跳转,因此需要自定义一个controller来实现,实现代码如下: @Component public class JumpController implements ApplicationRunner{ @Override public void run(ApplicationArguments args) throws E

qq_41946216的博客 1071

Leaflet 加载天地图完整配置指南:从插件修改到无限缩放(附源码)

本文详细介绍了Leaflet与天地图深度集成的完整配置指南,包括插件修改、无限缩放实现及源码示例。通过解析天地图服务的WMTS协议、双投影支持和密钥机制,帮助开发者突破缩放级别限制,优化地图应用性能,适用于Web地图开发和高精度GIS系统。

weixin_27180827的博客 441

spring boot 首页配置

spring mvc中首页的配置是通过在web.xml中增加 &lt;welcome-file-list&gt; 实现的,其中 welcome-file 指向的是controller中的路径 spring mvc 最终会返回一个index页面 在spring boot中,也是可以配置首页的,不过配置的方式不一样,下面讲解一下: 最终解析到login页面...

T2080305的博客 1255

嵌入式:简单的service框架

在嵌入式中,我们获取一个资源、设置一个变量、更新数据的话最直接的方式就是直接调用一个函数。这样的写法也可以满足基本的功能,前提是这个系统是只要一个任务,只有一个while(1)如图1.1。图1.1当有两个或者两个以上的任务的时候,同时调用一个函数(设置一个状态值、操作同一个资源、操作指针等行为)的流程如图1.2。图1.2当两个任务同时操作一个资源的时候,就会有重入的问题,会导致想不到的异常问题(数据不对、指针异常等)。

stupid的博客 986

单电源运放偏置电压设计:如何避免信号失真

本文详细解析了单电源运放偏置电压设计的关键技术,以LM358为例,探讨如何通过1/2 VCC偏置避免信号失真。文章从基本原理出发,揭示了双端偏置的黄金法则,并提供了常见设计陷阱的解决方案和进阶调试技巧,帮助工程师实现高保真信号放大。

weixin_29266647的博客 293

SpringMVC默认访问路径配置

SpringMVC默认访问路径配置 需求:只访问域名,不加任何action路径,想访问默认的一个action. 比如www.jd.com,就跳到京东首页,会加载出辣么多东西来 关于这个的方法,网上有千千万种,在这里只是记录一种常用的, 亲测这个可以用,而且我们的项目一直都是这个套路. 第一步,web.xml中配置: &lt;web-app&gt; ...前面的配置... ...

zhangsir的博客 2万+

基于MATLAB的奇异谱分析(SSA)算法详解

本文详细介绍了基于MATLAB的奇异谱分析(SSA)算法。文章首先阐述了SSA的基本概念、历史发展及其与传统信号分析方法的对比优势,指出SSA作为一种非参数、非线性时间序列分析方法,特别适合处理非平稳信号。随后详细解析了SSA算法的核心原理与数学模型,包括轨迹矩阵构建、奇异值分解、分组与重构四个关键步骤。文章还提供了完整的MATLAB实现框架和代码解析,涵盖参数检查、轨迹矩阵构建、SVD分解、分组策略和重构过程。最后,通过信号分解、去噪和预测三个应用案例展示了SSA的实际效果。

qq_42212808的博客 168

SpringBoot学习日志之DAY05springboot默认首页设置

目录 什么是默认首页 配置springboot默认首页 方式一:通过controller指定RequestMapping路径为(/) 方式二:通过自定义配置类实现WebMvcConfigurer进行设置 方式三:直接将index.html页面放在templates下面就行了 方式四 直接将index.html文件放在static目录下面 什么是默认首页     在启动WEB项目之后...

光滑的秃头 859

Simulink开发项1000例实战专栏--实例64:基于Simulink构建一个储能系统模型

通过引入储能系统,太阳能电站能够实现在白天储存多余的能量,在夜晚释放能量,平滑负荷曲线,提高电网的稳定性和可靠性。本项目的目标是基于Simulink平台,构建一个完整的储能系统模型,并通过仿真验证其在电网调峰中的应用效果。通过引入储能系统,工业园区能够实现在负荷高峰期释放能量,在负荷低谷期储存能量,平滑负荷曲线,降低用电成本,提高电网的稳定性和可靠性。通过引入储能系统,风力发电场能够实现在负荷高峰期释放能量,在负荷低谷期储存能量,平滑负荷曲线,提高电网的稳定性和可靠性。

xiaoheshang_123的博客 515

【微服务】SpringBoot 整合 FastExcel 实现导入导出操作详解

SpringBoot 整合 FastExcel 实现导入导出操作详解

congge 4234

Spring Boot设置默认欢迎页

Spring Boot设置默认欢迎页1.新建MVCConfiguration类:2.在resources/static目录下新建目录pages/login.html 1.新建MVCConfiguration类: import org.springframework.context.annotation.Configuration; import org.springframework.core.O...

a277548380的博客 2348

【DRAM存储器二】Sense Amplifier

详述DRAM颗粒中感应放大器功能、电路结构、工作原理和操作波形

highman110的博客 7199

java spring 默认页面_spring默认欢迎页设置

简单配置的方式,直接展示静态网页,不经过Controller。web.xml 中什么没有配置任何有关欢迎页的信息!其实这时等效于如下配置:这个会由Web容器最先访问!//-未指定欢迎页时,缺省等于如下配置。这个应该不同的Web服务器可以设置,但大多数都如此-。index.htmlindex.htmindex.jsp在web.xml中什么都不写的时候,默认访问WebContent目录下的index页...

weixin_34096605的博客 1225

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Spring boot之默认首页(欢迎页)的设置

import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.sprin...

u011429743的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

<转载>springmvc(29):spring默认欢迎页设置

<转载>springmvc(29):spring默认欢迎页设置

Diligence is the mother of success. 407

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SpringMVC默认进入指定页的方法

1、直接访问指定静态页面 在tomcat中指定页面 <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>ind...

时光有伱,记忆成花~ 4295

Spring Boot开发(六)静态资源映射

在 Web 应用中会涉及到大量的静态资源,例如 JS、CSS 和 HTML 等。我们知道,Spring MVC 导入静态资源文件时,需要配置静态资源的映射;但在 SpringBoot 中则不再需要进行此项配置,因为 SpringBoot 已经默认完成了这一工作。 Spring Boot 默认为我们提供了 3 种静态资源映射规则: WebJars 映射 默认资源映射 静态首页(欢迎页)映射 WebJars 映射 WebJars 是将客户端(浏览器)资源(JavaScript,Css等)打成 Jar

m0_53698336的博客 6451

【SpringBoot系列】首页和模板引擎

一、欢迎页是如何映射? 1、还是原来的办法:在WebMvcAutoConfiguration.java中找到welcomePageHandlerMapping public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext, FormattingConversionService mvcConversionService, ResourceUrlProvider..

王华春_Jason 753

spring boot静态资源规则与定制化

1.静态资源访问 1.静态资源目录 只要静态资源放在类路径下的/static或者/public或者/resources或者META-INF/resources目录下,就可以通过项目根路径/+静态资源名访问。 原理:静态映射/** (项目路径下的所有) 请求进来先找Controller看能不能处理,不能处理的所有请求就交给静态资源处理器,静态资源也找不到就返回404. 2.静态资源访问前缀:默认无前缀/** 可以使用配置文件配置,application.yaml spring: ...

qq_42338293的博客 151

总结SSM设置欢迎页的方式

本文介绍了SSM项目中配置欢迎页的三种方式:1)通过web.xml配置基础欢迎页,适用于静态页面;2)使用SpringMVC的view-controller配置,适用于WEB-INF目录下的页面;3)通过Controller转发实现,灵活性最高,可处理业务逻辑。重点说明了每种方式的配置步骤、适用场景及注意事项,特别强调了Tomcat默认欢迎页机制的影响及解决方案。推荐根据项目需求选择合适方式,其中Controller方式最灵活常用,适合需要业务处理的场景。

m0_64928156的博客 625

Spring MVC静态资源映射

Spring MVC静态资源映射 我们在做路径映射规则时,有时候我们并不想要匹配一个页面,或者返回数据,而是返回一个静态资源(类似图片等),这时候就需要用到Spring MVC的静态资源映射规则 默认静态资源路径 在Spring Boot中已经规定了一些包路径下的资源是静态资源,在默认的情况下,这个包下的静态资源是可以直接访问的 由官方文档可知,当我们将静态资源放在以下包中,可以直接访问 classpath:/static classpath:/public classpath:/resources c

blackball1998的博客 1252

Spring核心技术-Web开发-静态资源访问

1、SpringMVC自动配置概览 Spring Boot provides auto-configuration for Spring MVC that works well with most applications.(大多场景我们都无需自定义配置)

sfklyqh的博客 458

springboot2x-静态资源配置原理

1、在org.springframework.boot:spring-boot-autoconfigure:2.3.4.RELEASE找到WebMvcAutoConfiguration 2、SpringBoot启动默认加载xxxAutoConfiguration 3、SpringMVC功能默认加载WebMvcConfiguration,SpringMVC生效=》 @Configuration(proxyBeanMethods = false) @ConditionalOnWebApplication

Choco1ove的博客 224

springboot2设置后spring.mvc.static-path-pattern后找不到favicon.ico和首页的问题

问题描述: 不设置spring.mvc.static-path-pattern时,在静态文件目录里放index.html和favicon.ico,会自动设置好欢迎页和title的图标。 设置后,访问静态文件需要加上设置好的前缀,欢迎页和title的url默认没加,所以找不到。 其中静态文件目录可以通过spring.web.resources.static-locations进行覆盖修改。 可以通过如下方法解决favicon的问题,欢迎页类似。 @RequestMapping("/favicon.ico")

weixin_43292547的博客 1479
上一篇: Eclipse中自动添加注释(作者,时间)
下一篇: 公钥和私钥的区别
cs408
博客等级 码龄12年 57粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值