Подтвердить что ты не робот

Spring mvc, где нужно поместить файлы css/js/img

0 и проблема с размещением открытых файлов Я попробовал Где разместить изображения /CSS в spring -mvc-приложении? это решение, но оно не работает для меня

Я попытался разместить свою общую папку где-нибудь в директории WEB-INF снаружи, но все же ничего

web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  <display-name>s-mvc</display-name>
  <servlet>
    <servlet-name>frontController</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>frontController</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

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

</web-app>

FrontController-servlet.xml

<mvc:annotation-driven/>

    <context:component-scan base-package="pl.skowronline.controller" />

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

и что я вызываю файл css <link type="text/css" href="/css/bootstrap.css" rel="stylesheet" />

4b9b3361

Ответ 1

ответ от JB Nizet верен. Однако, похоже, проблема вашего приложения - это не просто место для размещения файла css/js. Для Spring MVC вы должны поместить всю конфигурацию вправо или она не будет работать.

Для простоты просто поместите папку css прямо в папку WEB-INF (/WEB-INF/css), чтобы вы могли получить доступ к ней, как это на вашей странице:

<a href="<c:url value='/css/bootstrap.css'/>"

Эта ссылка должна взять вас непосредственно в файл css. Если это работает, вы можете изменить тег <a> в тег <link> для стилизации CSS.

Если это не сработает, нужно проверить несколько вещей:

1) Spring Ограничения безопасности, запрещающие вам доступ к файлам

2) Влияние различных фильтров/перехватчиков, которые могут препятствовать доступу вашего файла.

3) Конфигурация сервлета в web.xml. Убедитесь, что диспетчер не перехватил ваш доступ к файлу CSS.

Часто <mvc:resources> будет делать все вышеперечисленное для вас. Но на всякий случай это провалилось, вам может понадобиться посмотреть.

Для ошибки <mvc:resources>:

Соответствующий шаблон является строгим, но объявления не могут быть найдены для элемент 'mvc: resources'.

Похоже, вы еще не объявили правильную схему. Например, вы должны добавить следующие строки в начале файла:

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" >

UPDATE:

Как ваш ответ, проблема, кажется, здесь:

<servlet-mapping>
    <servlet-name>frontController</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

Вы должны изменить его на:

<servlet-mapping>
    <servlet-name>frontController</servlet-name>
    <url-pattern>/*.html</url-pattern>
  </servlet-mapping>

Это сохранит URL-адрес для файлов css/images, противоречащих сопоставлению URL-адресов контроллера (вашего сервлета), и пусть mvc: resources делают это волшебство. Конечно, вы можете использовать любое расширение, которое вы хотите для части "html". Для красивого URL-адреса мы можем использовать библиотеку, например Turkey URL rewrite, чтобы решить проблему.

Ответ 2

Я думаю, что вы путаетесь с web.xml и application-context.xml.

web.xml должен содержать объявления webapp xsd, подобные этому, и сопоставление для Servlet диспетчера.

 <?xml version="1.0" encoding="UTF-8"?>
 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <display-name>s-mvc</display-name>
  <servlet>
    <servlet-name>frontController</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>frontController</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
 </web-app>

Где в качестве application-context.xml содержатся объявления spring-framework xsd, как показано ниже

<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:mvc="http://www.springframework.org/schema/mvc"
     xmlns:context="http://www.springframework.org/schema/context"
     xsi:schemaLocation="http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

 <mvc:resources mapping="/css/**" location="/css/"/>
 <mvc:annotation-driven />
 <context:component-scan base-package="pl.skowronline.controller" />

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
 </bean>

</beans>

Ответ 3

Это описано в следующем разделе документации. Следуйте инструкциям, указанным там, а затем измените свой href: /css/bootstrap.css означает: В папке css прямо под корнем сервера. Таким образом, если ваше приложение не используется как корневое приложение, оно не будет работать, потому что вам нужно добавить путь к контексту вашего приложения:

href="<c:url value='/css/bootstrap.css'/>"

И это будет означать: в папке css, прямо под корнем webapp. Если путь контекста вашего webapp /myFirstWebApp, генерируемый href будет таким образом

href="/myFirstWebApp/css/bootstrap.css"

Ответ 4

Вы можете попробовать использовать контекстный путь для поиска файлов ресурсов.

<link type="text/css" href="${pageContext.request.contextPath}/css/bootstrap.css" rel="stylesheet" />

Прочтите этот, чтобы узнать больше.

Ответ 5

У меня тоже была такая же проблема. Пожалуйста, выполните следующие шаги, чтобы получить работу, которая хорошо работала для меня и моих товарищей по команде.

Шаг1: - Создайте папку в Web-INF с именем "resources"

Шаг 2: - Загрузите загрузочный бутстрап, css и js, если у вас уже есть, или в случае, если вы хотите написать запись в этой папке

Шаг 3: - Теперь обновите свой сервлет-диспетчер xml ниже

Шаг 4: теперь вы можете использовать css, bootstrap resouces в вашем коде, как показано ниже

<header class="custem_header_bg"><img src="resources/img/product_banner.png" class="img-responsive"> </header>

Ответ 6

Вы можете установить базу только на JSP в следующих шагах. Тогда вам не нужно устанавливать mvc: resources в web.xml. Просто установите базу следующим образом. Также мы можем использовать заголовочный файл, чтобы установить это значение. Затем мы можем включить этот header.jsp в любую страницу, которую мы используем в приложении. Тогда нам не нужно устанавливать это значение в каждом JSP.

Вам нужно установить <base/> следующим образом:

<c:set var="req" value="${pageContext.request}" />

<c:set var="url"> ${req.requestURL} </c:set>
<c:set var="uri" value="${req.requestURI}" />

<head>
    <title></title>
    <base href="${fn:substring(url, 0, fn:length(url) - fn:length(uri))}${req.contextPath}/" />

Затем вы можете импортировать любые JS или CSS, как показано ниже.

<script src="assets/js/angular/angular.js"></script>