如何使用Spring的mvc:WebLogic上的资源来提供静态资源?

时间:2011-11-07 15:48:17

标签: spring-mvc weblogic

我们有一个在tomcat上运行得很漂亮的Web应用程序,但无法在最新的weblogic上运行静态资源加载问题 - 基本上我们从/ static / **提供所有资源并在spring servlet xml中设置它像这样的文件:

<mvc:resources mapping="/static/**" location="/static/" />

这适用于tomcat,但是在weblogic上你只看到一个丑陋的页面,因为无法找到静态directoty中的所有CSS / JS / jpgs。

我也玩过这个:

<mvc:default-servlet-handler />

我在弹簧配置结束时和开头放置了一次,但没有结果......

如何提供我们的静态资源?

2 个答案:

答案 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等静态资源。

<强>平台

  • Spring MVC 4.2.0
  • Hibernate 4.2.20
  • Weblogic 10.3.6
  • 的Eclipse

    1. 在/ WebContent文件夹中创建资源文件夹&amp; outside / WebContent / WEB-INF。所以我的应用程序结构如下所示。

My Spring MVC Application Structure

  1. 在前端控制器配置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. 在上面的配置文件中,2个标签对静态内容很重要,即css

    <mvc:annotation-driven />
    <mvc:default-servlet-handler/>  
    
    1. 我已将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>
      
    2. 仅供参考,我在这里也包含了我的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