在本教程中,我们将向您展示如何在JSP页面中包括JavaScript或CSS之类的静态资源。
摘要步骤:
- 将静态资源(如CS,JS或图像)放入此文件夹
webapp\resources
- 创建一个Spring
mvc:resources
映射 - 通过JSTL标签
c:url
或Spring标签spring:url
包含在JSP页面中
PS此项目已在Spring 4.1.6.RELEASE中进行了测试。
1.项目目录
标准的Maven文件夹结构将js和css文件之类的静态资源放入webapp\resources
文件夹中。
2. Spring资源映射
声明mvc:resources
,以将“ URL路径”映射到物理文件路径位置。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.mkyong.web" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<mvc:resources mapping="/resources/**" location="/resources/theme1/"
cache-period="31556926"/>
<mvc:annotation-driven />
</beans>
在上面的示例中,来自此url模式/resources/**
任何请求,Spring都会从/resources/mytheme1/
查找资源。
将来,您可以通过更新mvc:resources
轻松地更改为新主题
<mvc:resources mapping="/resources/**" location="/resources/theme-new/" />
3.包含在JSP页面中
要在JSP页面中包含CSS或JS,可以使用JSTL标签c:url
或Spring标签spring:url
。
3.1 JSTL标记c:url
示例。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">
<head>
<link href="<c:url value="/resources/css/main.css" />" rel="stylesheet">
<script src="<c:url value="/resources/js/jquery.1.10.2.min.js" />"></script>
<script src="<c:url value="/resources/js/main.js" />"></script>
</head>
<body>
<h1>1. Test CSS</h1>
<h2>2. Test JS</h2>
<div id="msg"></div>
</body>
</html>
3.2 Spring标签spring:url
示例。
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html>
<html lang="en">
<head>
<spring:url value="/resources/css/main.css" var="mainCss" />
<spring:url value="/resources/js/jquery.1.10.2.min.js" var="jqueryJs" />
<spring:url value="/resources/js/main.js" var="mainJs" />
<link href="${mainCss}" rel="stylesheet" />
<script src="${jqueryJs}"></script>
<script src="${mainJs}"></script>
</head>
<body>
<h1>1. Test CSS</h1>
<h2>2. Test JS</h2>
<div id="msg"></div>
</body>
</html>
3.3 Javascript文件。
jQuery(document).ready(function($) {
$('#msg').html("This is updated by jQuery")
});
3.4 CSS文件。
h1{
color:red;
}
或者
对于讨厌JSTL的人,您可以使用“页面上下文”变量来获取如下资源:<link href="${pageContext.request.contextPath}/resources/css/main.css" rel="stylesheet" >
4.演示
使用Maven命令运行项目: $ mvn jetty:run
网址: http:// localhost:8080 / spring-css /
5. WEB-INF中的静态资源?
问:我可以将静态资源放在WEB-INF文件夹中吗?
答:是的,您可以,Spring映射仍然可以使用,例如,
<mvc:resources mapping="/resources/**" location="/WEB-INF/resources/theme1/" />
但是,这不是一个好习惯。 您可以忽略该规则,但是许多开发人员和插件将在同一级别的WEB-INF
中而不是在WEB-INF
寻找静态资源。
下载源代码
下载它– spring-mvc-css-example.zip (57 KB)
参考
翻译自: https://mkyong.com/spring-mvc/spring-mvc-how-to-include-js-or-css-files-in-a-jsp-page/