spring 3.0.5的<mvc:resources> 标签的使用

Spring MVC 静态资源管理
本文介绍如何在 Spring MVC 中配置静态资源的访问,包括使用 &lt;mvc:resources&gt; 标签和默认的 servlet 处理器来确保 CSS、JS 和图片等资源能正确加载。
spring mvc 的<mvc;resources mapping="***" location="***">标签是在spring3.0.4出现的,主要是用来进行静态资源的访问。在spring3.0.4出来的时候spring还没有更新其schema所以在配置文件中有可能找不到<mvc:resources >标签,这个问题在spring3.0.5中已经解决,而且网上也有很多其他的解决方案,我在这里就不记录了。

首先使用spring mvc需要配置其使用的servlet.在web.xml中:
Java代码   收藏代码
  1. <servlet>  
  2.     <servlet-name>springMVC</servlet-name>  
  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  4.     <load-on-startup>1</load-on-startup>  
  5.     </servlet>  
  6.   
  7.     <servlet-mapping>  
  8.         <servlet-name>springMVC</servlet-name>  
  9.         <url-pattern>/</url-pattern>  
  10.     </servlet-mapping>  

这里给 servlet-name定义的名称是springMVC,这样的话会在web-inf下spring会自动扫描一个XML文件名叫springMVC-servlet.xml文件,这里都是spring自动扫描的,如果你没有提供,将会报一个文件查找不到的异常。看了下org.springframework.web.servlet.DispatcherServlet加载这个文件的过程,貌似这个文件存放的地址也是可以进行设置的,具体怎么搞我还没有研究。

由于spring mvc拦截了所有请求,所以当你设置
引用
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

的时候会影响到静态资源文件的获取,这样就需要有这个标签来帮你分类完成获取静态资源的责任。

springMVC-servlet.xml文件
Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"    
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  4.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
  6.     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">     
  7.   
  8.     <mvc:resources mapping="/javascript/**" location="/static_resources/javascript/"/>  
  9.     <mvc:resources mapping="/styles/**" location="/static_resources/css/"/>  
  10.     <mvc:resources mapping="/images/**" location="/static_resources/images/"/>  
  11.     <mvc:default-servlet-handler />  
  12.       
  13.       
  14.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  15.         <property name="prefix" value="/WEB-INF/views/"/>  
  16.         <property name="suffix" value=".jsp"/>  
  17.     </bean>  
  18.   
  19. </beans>  

这里可以看到我所有的页面引用到/styles/**的资源都从/static_resources/css里面进行查找。

页面的一段静态资源访问的代码。
Java代码   收藏代码
  1. <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>  
  2. <HTML>  
  3. <HEAD>  
  4.   <TITLE> ABCDEFG </TITLE>  
  5. <link type="text/css" rel="stylesheet" href="<c:url value='/styles/siteboard.css'/>">  
  6. ...  
  7. ...  
  8. ...  


可能这个标签的真谛就是为了引用资源的访问不会类似CONTROLLER一样被拦截,区分出关注的资源的访问,一般我们在springMVC里面的拦截都会配置为"/",拦截所有的。
server: port: 8080 # 指定服务端口为8080 spring: data: mongodb: uri: mongodb://192.168.1.88:27017/cobot datasource: url: jdbc:mysql://192.168.1.88:3307/zrzk-code-analysis?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # 替换为你的MySQL数据库地址和库名 username: root password: letmego driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath:mapper/*.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zrzk.security</groupId> <artifactId>Mongodb-MySQL</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <properties> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring-boot.version>3.2.0</spring-boot.version> </properties> <dependencies> <!-- Spring Boot 核心 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MongoDB 驱动 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version>3.5.6</version> </dependency> <!-- MySQL 驱动 + MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <!-- Lombok 简化实体类 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> </dependency> <!-- Spring Boot 测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <!-- <excludes>--> <!-- <exclude>--> <!-- <groupId>org.projectlombok</groupId>--> <!-- <artifactId>lombok</artifactId>--> <!-- </exclude>--> <!-- </excludes>--> </configuration> </plugin> </plugins> </build> </project> D:\graalvm-jdk-21.0.6+8.1\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2024.3.4.1\lib\idea_rt.jar=51961" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\svn-workspace\Mongodb-MySQL\target\classes;D:\maven\maven-repository\org\springframework\boot\spring-boot-starter-web\3.2.0\spring-boot-starter-web-3.2.0.jar;D:\maven\maven-repository\org\springframework\boot\spring-boot-starter\3.2.0\spring-boot-starter-3.2.0.jar;D:\maven\maven-repository\org\springframework\boot\spring-boot\3.2.0\spring-boot-3.2.0.jar;D:\maven\maven-repository\org\springframework\boot\spring-boot-autoconfigure\3.2.0\spring-boot-autoconfigure-3.2.0.jar;D:\maven\maven-repository\org\springframework\boot\spring-boot-starter-logging\3.2.0\spring-boot-starter-logging-3.2.0.jar;D:\maven\maven-repository\ch\qos\logback\logback-classic\1.4.11\logback-classic-1.4.11.jar;D:\maven\maven-repository\ch\qos\logback\logback-core\1.4.11\logback-core-1.4.11.jar;D:\maven\maven-repository\org\apache\logging\log4j\log4j-to-slf4j\2.21.1\log4j-to-slf4j-2.21.1.jar;D:\maven\maven-repository\org\apache\logging\log4j\log4j-api\2.21.1\log4j-api-2.21.1.jar;D:\maven\maven-repository\org\slf4j\jul-to-slf4j\2.0.9\jul-to-slf4j-2.0.9.jar;D:\maven\maven-repository\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;D:\maven\maven-repository\org\yaml\snakeyaml\2.2\snakeyaml-2.2.jar;D:\maven\maven-repository\org\springframework\boot\spring-boot-starter-json\3.2.0\spring-boot-starter-json-3.2.0.jar;D:\maven\maven-repository\com\fasterxml\jackson\core\jackson-databind\2.15.3\jackson-databind-2.15.3.jar;D:\maven\maven-repository\com\fasterxml\jackson\core\jackson-annotations\2.15.3\jackson-annotations-2.15.3.jar;D:\maven\maven-repository\com\fasterxml\jackson\core\jackson-core\2.15.3\jackson-core-2.15.3.jar;D:\maven\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.15.3\jackson-datatype-jdk8-2.15.3.jar;D:\maven\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.15.3\jackson-datatype-jsr310-2.15.3.jar;D:\maven\maven-repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.15.3\jackson-module-parameter-names-2.15.3.jar;D:\maven\maven-repository\org\springframework\boot\spring-boot-starter-tomcat\3.2.0\spring-boot-starter-tomcat-3.2.0.jar;D:\maven\maven-repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.16\tomcat-embed-core-10.1.16.jar;D:\maven\maven-repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.16\tomcat-embed-el-10.1.16.jar;D:\maven\maven-repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.16\tomcat-embed-websocket-10.1.16.jar;D:\maven\maven-repository\org\springframework\spring-web\6.1.1\spring-web-6.1.1.jar;D:\maven\maven-repository\org\springframework\spring-beans\6.1.1\spring-beans-6.1.1.jar;D:\maven\maven-repository\io\micrometer\micrometer-observation\1.12.0\micrometer-observation-1.12.0.jar;D:\maven\maven-repository\io\micrometer\micrometer-commons\1.12.0\micrometer-commons-1.12.0.jar;D:\maven\maven-repository\org\springframework\spring-webmvc\6.1.1\spring-webmvc-6.1.1.jar;D:\maven\maven-repository\org\springframework\spring-aop\6.1.1\spring-aop-6.1.1.jar;D:\maven\maven-repository\org\springframework\spring-context\6.1.1\spring-context-6.1.1.jar;D:\maven\maven-repository\org\springframework\spring-expression\6.1.1\spring-expression-6.1.1.jar;D:\maven\maven-repository\org\springframework\boot\spring-boot-starter-data-mongodb\3.5.6\spring-boot-starter-data-mongodb-3.5.6.jar;D:\maven\maven-repository\org\mongodb\mongodb-driver-sync\4.11.1\mongodb-driver-sync-4.11.1.jar;D:\maven\maven-repository\org\mongodb\bson\4.11.1\bson-4.11.1.jar;D:\maven\maven-repository\org\mongodb\mongodb-driver-core\4.11.1\mongodb-driver-core-4.11.1.jar;D:\maven\maven-repository\org\mongodb\bson-record-codec\4.11.1\bson-record-codec-4.11.1.jar;D:\maven\maven-repository\org\springframework\data\spring-data-mongodb\4.2.0\spring-data-mongodb-4.2.0.jar;D:\maven\maven-repository\org\springframework\spring-tx\6.1.1\spring-tx-6.1.1.jar;D:\maven\maven-repository\org\springframework\data\spring-data-commons\3.2.0\spring-data-commons-3.2.0.jar;D:\maven\maven-repository\org\slf4j\slf4j-api\2.0.9\slf4j-api-2.0.9.jar;D:\maven\maven-repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\3.0.5\mybatis-spring-boot-starter-3.0.5.jar;D:\maven\maven-repository\org\springframework\boot\spring-boot-starter-jdbc\3.2.0\spring-boot-starter-jdbc-3.2.0.jar;D:\maven\maven-repository\com\zaxxer\HikariCP\5.0.1\HikariCP-5.0.1.jar;D:\maven\maven-repository\org\springframework\spring-jdbc\6.1.1\spring-jdbc-6.1.1.jar;D:\maven\maven-repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\3.0.5\mybatis-spring-boot-autoconfigure-3.0.5.jar;D:\maven\maven-repository\org\mybatis\mybatis\3.5.19\mybatis-3.5.19.jar;D:\maven\maven-repository\org\mybatis\mybatis-spring\3.0.5\mybatis-spring-3.0.5.jar;D:\maven\maven-repository\com\mysql\mysql-connector-j\8.0.33\mysql-connector-j-8.0.33.jar;D:\maven\maven-repository\org\projectlombok\lombok\1.18.30\lombok-1.18.30.jar;D:\maven\maven-repository\org\springframework\spring-core\6.1.1\spring-core-6.1.1.jar;D:\maven\maven-repository\org\springframework\spring-jcl\6.1.1\spring-jcl-6.1.1.jar com.jsy.MongodbMysqlApplication . ____ _ __ _ _ /\\ / ___&#39;_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | &#39;_ | &#39;_| | &#39;_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) &#39; |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.0) 2025-10-21T17:57:55.076+08:00 INFO 568 --- [ main] com.jsy.MongodbMysqlApplication : Starting MongodbMysqlApplication using Java 21.0.6 with PID 568 (D:\svn-workspace\Mongodb-MySQL\target\classes started by 123 in D:\svn-workspace\Mongodb-MySQL) 2025-10-21T17:57:55.080+08:00 INFO 568 --- [ main] com.jsy.MongodbMysqlApplication : No active profile set, falling back to 1 default profile: "default" 2025-10-21T17:57:56.652+08:00 INFO 568 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data MongoDB repositories in DEFAULT mode. 2025-10-21T17:57:56.740+08:00 INFO 568 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 81 ms. Found 1 MongoDB repository interface. 2025-10-21T17:57:57.707+08:00 INFO 568 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) 2025-10-21T17:57:57.722+08:00 INFO 568 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2025-10-21T17:57:57.722+08:00 INFO 568 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.16] 2025-10-21T17:57:57.806+08:00 INFO 568 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2025-10-21T17:57:57.806+08:00 INFO 568 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2626 ms 2025-10-21T17:57:58.225+08:00 INFO 568 --- [ main] org.mongodb.driver.client : MongoClient with metadata {"driver": {"name": "mongo-java-driver|sync|spring-boot", "version": "4.11.1"}, "os": {"type": "Windows", "name": "Windows 10", "architecture": "amd64", "version": "10.0"}, "platform": "Java/Oracle Corporation/21.0.6+8-LTS-jvmci-23.1-b55"} created with settings MongoClientSettings{readPreference=primary, writeConcern=WriteConcern{w=null, wTimeout=null ms, journal=null}, retryWrites=true, retryReads=true, readConcern=ReadConcern{level=null}, credential=null, transportSettings=null, streamFactoryFactory=null, commandListeners=[], codecRegistry=ProvidersCodecRegistry{codecProviders=[ValueCodecProvider{}, BsonValueCodecProvider{}, DBRefCodecProvider{}, DBObjectCodecProvider{}, DocumentCodecProvider{}, CollectionCodecProvider{}, IterableCodecProvider{}, MapCodecProvider{}, GeoJsonCodecProvider{}, GridFSFileCodecProvider{}, Jsr310CodecProvider{}, JsonObjectCodecProvider{}, BsonCodecProvider{}, EnumCodecProvider{}, com.mongodb.client.model.mql.ExpressionCodecProvider@1084ac45, com.mongodb.Jep395RecordCodecProvider@566f1852, com.mongodb.KotlinCodecProvider@6ea246af]}, loggerSettings=LoggerSettings{maxDocumentLength=1000}, clusterSettings={hosts=[localhost:27017], srvServiceName=mongodb, mode=SINGLE, requiredClusterType=UNKNOWN, requiredReplicaSetName=&#39;null&#39;, serverSelector=&#39;null&#39;, clusterListeners=&#39;[]&#39;, serverSelectionTimeout=&#39;30000 ms&#39;, localThreshold=&#39;15 ms&#39;}, socketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=0, receiveBufferSize=0, proxySettings=ProxySettings{host=null, port=null, username=null, password=null}}, heartbeatSocketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=10000, receiveBufferSize=0, proxySettings=ProxySettings{host=null, port=null, username=null, password=null}}, connectionPoolSettings=ConnectionPoolSettings{maxSize=100, minSize=0, maxWaitTimeMS=120000, maxConnectionLifeTimeMS=0, maxConnectionIdleTimeMS=0, maintenanceInitialDelayMS=0, maintenanceFrequencyMS=60000, connectionPoolListeners=[], maxConnecting=2}, serverSettings=ServerSettings{heartbeatFrequencyMS=10000, minHeartbeatFrequencyMS=500, serverListeners=&#39;[]&#39;, serverMonitorListeners=&#39;[]&#39;}, sslSettings=SslSettings{enabled=false, invalidHostNameAllowed=false, context=null}, applicationName=&#39;null&#39;, compressorList=[], uuidRepresentation=JAVA_LEGACY, serverApi=null, autoEncryptionSettings=null, dnsClient=null, inetAddressResolver=null, contextProvider=null} 2025-10-21T17:57:58.307+08:00 INFO 568 --- [localhost:27017] org.mongodb.driver.cluster : Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=25, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=89051700} 2025-10-21T17:57:58.846+08:00 WARN 568 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name &#39;migrationController&#39; defined in file [D:\svn-workspace\Mongodb-MySQL\target\classes\com\jsy\controller\MigrationController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name &#39;dataMigrationServiceImpl&#39; defined in file [D:\svn-workspace\Mongodb-MySQL\target\classes\com\jsy\service\impl\DataMigrationServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name &#39;mysqlMapper&#39; defined in file [D:\svn-workspace\Mongodb-MySQL\target\classes\com\jsy\mapper\MysqlMapper.class]: Cannot resolve reference to bean &#39;sqlSessionTemplate&#39; while setting bean property &#39;sqlSessionTemplate&#39; 2025-10-21T17:57:58.853+08:00 INFO 568 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2025-10-21T17:57:58.919+08:00 INFO 568 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with &#39;debug&#39; enabled. 2025-10-21T17:57:58.944+08:00 ERROR 568 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: &#39;url&#39; attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active). Process finished with exit code 1 结合这些信息再次解析报错
最新发布
10-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值