Как обслуживать статические ресурсы с помощью Spring mvc: resources в WebLogic? - PullRequest
0 голосов
/ 07 ноября 2011

У нас есть веб-приложение, которое прекрасно работает на tomcat, но не может работать из-за последней веб-логической проблемы статической загрузки ресурсов - в основном мы обслуживаем все ресурсы из / static / ** и настроили это в весеннем сервлете xml файл вроде этого:

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

Это работает на tomcat, но на weblogic вы просто видите некрасивую страницу, так как все CSS / JS / jpgs в статической директории не могут быть найдены.

Я тоже играл с этим:

<mvc:default-servlet-handler />

Я поместил его один раз в конец весеннего конфига и в начале, но безрезультатно ...

Как обслуживать наши статические ресурсы?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2015

Для моего Spring MVC у меня ниже платформа, и это хорошо работает для статических ресурсов, таких как CSS или JS.

Платформа

  • Spring MVC 4.2.0
  • Hibernate 4.2.20
  • Weblogic 10.3.6
  • Затмение

    1. создание ресурсов папка внутри / папка WebContent и снаружи / 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 тега важны для статического содержимого, т.е. 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>
    

К вашему сведению, я также включил сюда свой 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

0 голосов
/ 09 ноября 2011

для начала я бы проверил 2 вещи. Во-первых, поскольку я не являюсь пользователем Spring, я не уверен, какой метод использует Spring для поиска и загрузки файлов, и если он использует getRealPath, вы можете попробовать включить это в weblogic.

В консоли администратора вы щелкаете по имени домена, веб-приложениям и внизу страницы (последний вариант) вы найдете флажок, чтобы позволить getRealPath работать, даже если ваше приложение упаковано в файл .war или .ear. Вам нужно будет перезапустить серверы для вашего домена, чтобы эта конфигурация вступила в силу.

Если это не решит вашу проблему, вы можете попробовать сопоставить статические файлы с помощью файла weblogic.xml.

Вы должны будете использовать теги weblogic, такие как:

<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 / var / docs / weblogic. Предположим, он называется myfile.css для правильной загрузки по полному URL: http://seudominio.com/static/myfile.css или с использованием относительного пути / статический / myfile.css

Я полагаю, что один из этих подходов может помочь вам.

привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...