Java 如何在Spring MVC中使用CDN
我想在使用SpringMVC创建的项目中使用CDN来提供静态内容,如CSS、JavaScript和图像。但我不知道怎么做 我是Spring的新手,我在网上看到了一些帖子:Java 如何在Spring MVC中使用CDN,java,spring-mvc,jsp,cdn,staticresource,Java,Spring Mvc,Jsp,Cdn,Staticresource,我想在使用SpringMVC创建的项目中使用CDN来提供静态内容,如CSS、JavaScript和图像。但我不知道怎么做 我是Spring的新手,我在网上看到了一些帖子: 但他们没有解释如何实施 例如: 过去,我使用标记: <img src="<c:url value="/path/to/image" />" alt="desc" /> “alt=“desc”/ 当我使用CDN时,我可能会使用以下代码: <img src="${env.cdnUrl}
标记:
<img src="<c:url value="/path/to/image" />" alt="desc" />
“alt=“desc”/
当我使用CDN时,我可能会使用以下代码:
<img src="${env.cdnUrl}/mypath/pic.jpg" />
但是我应该把${env.cdnUrl}
(在web.xml
或dispatcherservlet.xml
(SpringMVC的配置))放在哪里?如何在JSP中获取参数
请帮帮我。谢谢。
<bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list><value>property_file</value></list>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="exposeContextBeansAsAttributes" value="true"/>
<property name="exposedContextBeanNames">
<list>
<value>properties</value>
</list>
</property>
</bean>
属性文件
性质
并以${properties.env}的形式访问jsp中的值,您还可以通过拦截器来实现这一点
<mvc:interceptors>
<!-- path interceptor adds servlet path as an attribute -->
<bean class="com.test.myInterceptor" />
我在Spring中使用以下步骤实现了CDN服务: 在
dispatcherservlet.xml
中添加以下行(您的Spring配置)
在应用程序属性中设置
cdn.url=//cdn.domain.com/path/to/static/content
在JSP文件中使用CDN
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:eval expression="@propertyConfigurer.getProperty('cdn.url')" var="cdnUrl" />
<link rel="stylesheet" type="text/css" href="${cdnUrl}/css/semantic.min.css" />
<link rel="stylesheet" type="text/css" href="${cdnUrl}/css/font-awesome.min.css" />
祝您好运!您可以执行request.setAttribute(“env.cdnUrl”,)在控制器中。@anuraggupta,但我必须在每个控制器中声明它。创建一个过滤器并添加到那里;让所有控制器通过them@anuraggupta你的意思是使用AOP?任何更简单的方法吗?不,不是AOP,这是我的PropertiesFactoryBean
classpath:/app.properties
,更改后,我无法访问Spring配置文件中的值。您是否也在viewResolver中添加了exposedContextBeanNames?是的。我没有在JSP中测试它是否工作。因为我无法从Spring配置中的属性文件加载属性。应用程序加载失败。原因:java.lang.ClassNotFoundException:${properties.jdbc.driverClassName}如果在属性文件中有“jdbc.driverClassName”作为键,那么写${jdbc.driverClassName}也许您可以在我的。
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.1.xsd"
cdn.url=//cdn.domain.com/path/to/static/content
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:eval expression="@propertyConfigurer.getProperty('cdn.url')" var="cdnUrl" />
<link rel="stylesheet" type="text/css" href="${cdnUrl}/css/semantic.min.css" />
<link rel="stylesheet" type="text/css" href="${cdnUrl}/css/font-awesome.min.css" />