2016-08-09 2 views
0

Я хочу добавить бесплатный шаблон макета в мой webapp, но что-то пойдет не так.Добавление шаблона бутстрапа в jsp

Project structure

Вот глава моего index.jsp файла:

<head> 
    <title>Bicycleshop Bootstarp Website Template | Home :: w3layouts</title> 
    <link href="WEB-INF/template/css/bootstrap.css" rel='stylesheet' type='text/css' /> 
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
    <script src="/WEB-INF/template/js/jquery-1.11.0.min.js"></script> 
    <!-- Custom Theme files --> 
    <link href="/WEB-INF/template/css/style.css" rel='stylesheet' type='text/css' /> 
    <!-- Custom Theme files --> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script> 
    <!-- Google Fonts --> 
    <link href='http://fonts.googleapis.com/css?family=Doppio+One' rel='stylesheet' type='text/css'> 
    <link href='http://fonts.googleapis.com/css?family=Roboto+Condensed:400,300,700' rel='stylesheet' type='text/css'> 
    <link href='http://fonts.googleapis.com/css?family=Oswald:400,700' rel='stylesheet' type='text/css'> 
</head> 

Я включил эту линию в диспетчерскую-servlet.xml:

<mvc:resources mapping="/template/**" location="/WEB-INF/"/> 

Шаблон находится в директории/WEB- INF/template/

ответ

1

Оказалось, что я добавил плохой путь к местоположению.Этот номер подходит для моей конструкции:

<mvc:resources mapping="/template/**" location="/WEB-INF/template/"/> 

Теперь все работает отлично.

0

Как правило, вы не можете использовать свои статические ресурсы внутри WEB-INF или подкаталога WEB-INF. Этот каталог не обслуживается сервером приложений. Это своего рода охраняемая территория. Вы можете обслуживать данные, если вы добавляете для него какой-то прокси-сервер (код), например, когда отображение по умолчанию для сервлета JSP хранится внутри WEB-INF.

Что вы имели в виду

<mvc:resources mapping="/template/**" location="/WEB-INF/"/>: 

это все URL, которые соответствуют /template/** должны быть поданы от /WEB-INF, таким образом, URL-адреса, заданные в JSP, начиная от /WEB-INF/template придется Spring выглядеть внутри /WEB-INF/WEB-INF, так удалите /WEB-INF со всех URL-адресов внутри JSP.

Тогда для Spring проксировать ваших ресурсов, вы должны использовать JSTL или Spring TagLib или pageContext так:

<link href="<c:url value="/template/css/style.css" />" rel="stylesheet" type="text/css" /> 

Или:

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

Редактировать

С полным Исходный код:

w eb.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" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     version="3.0"> 

    <servlet> 
     <servlet-name>mvc</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

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

</web-app> 

MVC-servlet.xml

<?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:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <context:component-scan base-package="demo.spring.mvc" /> 

    <mvc:annotation-driven /> 

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

    <mvc:view-resolvers> 
     <mvc:jsp prefix="/WEB-INF/views/" suffix=".jsp" /> 
    </mvc:view-resolvers> 

</beans> 

Welcome.java

package demo.spring.mvc; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller 
public class Welcome { 

    @RequestMapping("/welcome") 
    public String welcome() { 
     return "Welcome"; 
    } 

} 

/WEB-INF/views/Welcome.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
     <link href="<c:url value="/resources/css/default.css" />" rel="stylesheet" /> 
    </head> 
    <body> 
     <h1 class="alert">This should appear in red!</h1> 
    </body> 
</html> 

/WEB-INF/static/css/default.css

.alert { 
    color: red; 
} 
+0

Я последовал за вашим ответом, но он все еще не работает. – fryzjerro

+0

Я редактировал с полным кодом, который я тестировал. Обратите внимание на отображение URL-адреса диспетчерского сервлета. Я мог бы заставить этот пример работать с отображением '/ mvc/*' например. –

0

Ваша ссылка кажется неполной, так как у вас есть файл CSS (bootstrap, но не тема) и отсутствует файл Bootstrap JS.

Кроме того, попробуйте загрузить с CDN. https://www.bootstrapcdn.com/

Смежные вопросы