我们有一个在tomcat上运行得很漂亮的Web应用程序,但无法在最新的weblogic上运行静态资源加载问题 - 基本上我们从/ static / **提供所有资源并在spring servlet xml中设置它像这样的文件:
<mvc:resources mapping="/static/**" location="/static/" />
这适用于tomcat,但是在weblogic上你只看到一个丑陋的页面,因为无法找到静态directoty中的所有CSS / JS / jpgs。
我也玩过这个:
<mvc:default-servlet-handler />
我在弹簧配置结束时和开头放置了一次,但没有结果......
如何提供我们的静态资源?
答案 0 :(得分:0)
一开始我会检查两件事。首先,因为我不是Spring用户,所以我不确定spring使用什么方法来查找和加载文件,如果它使用getRealPath,你可以尝试在weblogic中启用它。
在管理控制台中,单击域名,Web应用程序和页面下方(最后一个选项),您将找到一个复选框,以便即使您的应用程序打包在.war或.ear文件中,也可以使getRealPath正常工作。您需要重新启动域的服务器才能使此配置生效。
如果这不能解决您的问题,您可以尝试使用weblogic.xml文件映射静态文件。
您必须使用以下网络标记:
<wls:virtual-directory-mapping>
<wls:local-path>/var/docs/weblogic</wls:local-path>
<wls:url-pattern>/static/*</wls:url-pattern>
</wls:virtual-directory-mapping>
在上面的示例中,您将在fisic disc path / var / docs / weblogic下有一个文件,假设它被命名为myfile.css,可以通过完整的URL http://seudominio.com/static/myfile.css或使用相对路径/ static正确加载/myfile.css
我相信其中一种方法可以帮到你。
问候。
答案 1 :(得分:0)
对于我的Spring MVC,我有以下平台,并且非常适用于CSS或JS等静态资源。
<强>平台强>
的Eclipse
在前端控制器配置XML文件中,即dispatcher-config.xml应如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
<!-- default page to show when app starts -->
<mvc:view-controller path="/" view-name="Home"/>
<!-- essentially sets you your Spring context to allow for dispatching requests to Controllers -->
<mvc:annotation-driven />
<!-- used to load static resources like css, js etc... -->
<mvc:default-servlet-handler/>
<!-- automatically wire values into properties, methods, and constructors. -->
<context:annotation-config/>
<!-- scan for components like @Controller, @Repository, @Service, @Component etc...-->
<context:component-scan base-package="au.com.snh" />
<!-- spring view resolver bean -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- load database properties file -->
<context:property-placeholder location="classpath:database.properties"/>
<!-- declare beans -->
<bean id="regionDao" class="au.com.snh.dao.RegionDaoImpl" />
<bean id="regionService" class="au.com.snh.service.RegionServiceImpl" />
<!-- declare datasource bean -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.pwd}" />
</bean>
<!-- hibernate -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="au.com.snh.model" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- resource bundles -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/propertybundle/common"/>
</bean>
在上面的配置文件中,2个标签对静态内容很重要,即css
<mvc:annotation-driven />
<mvc:default-servlet-handler/>
我已将CSS文件包含在我的JSP中,如下所示。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Welcome to the World of Spring MVC</title>
<link rel="stylesheet" href="/${initParam.appRootPath}/resources/css/main.css">
</head>
<body>
<center>
<h1>Welcome to the World of Spring MVC 4.2 & Hibernate 4.2 </h1>
</center>
</body>
</html>
仅供参考,我在这里也包含了我的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">
<display-name>SpringMVCHibernateProject</display-name>
<!-- global variables -->
<context-param>
<param-name>appRootPath</param-name>
<param-value>SpringMVCHibernateProject</param-value>
</context-param>
<!-- front controller -->
<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
希望我的帖子很有用。
谢谢 - Hitesh