2012-05-03 2 views
1

Я новичок в java и имею странную проблему. Я создаю папку (theme, js, css) в папке WEB-INF и помещаю файлы в эти папки. в index.jsp я использовать файл CSS по следующим образом:как я могу получить доступ к моим файлам, которые помещены в папку WEB-INF

<style type="text/css"> 
     <%@include file="WEB-INF/css/style.css" %> 
</style> 

это работает хорошо. но в style.css файл у меня есть DIV тег, который устанавливает фон для заголовка тега по следующим образом:

#header{ 
background: url(../theme/violet/header.jpg) repeat-x; 
} 

о. моя проблема здесь. он не работает. так как другая команда css работает очень хорошо. Я знаю, что информация WEB-INF недоступна, но может быть способ, который я использую для ссылки style.css на странице index.jsp.

любое решение? спасибо.

+0

Просто добавьте внутри папки WEB-INF css, как и вы, внутри этой папки добавьте папку с изображениями и поместите туда заголовок. Ваше изображение будет доступно для style.css - путь для фона: url (images/header.jpg) repeat-x; Кстати, это изображение будет доступно для всех снаружи (если вы точно определяете путь в URL-адресе), но полного изображения папки или css не будет, поскольку он защищен контейнером сервера или приложения, например tomcat, - вы можете изменить его внутри файлов конфигурации (/ conf /web.xml). Tomcat внутри context.xml отслеживал ресурсы, которые тоже очень ценны. – blueberry0xff

ответ

2

С вашего пути вы добавляете style.css, я думаю, ваш index.jsp находится за пределами папки WEB-INF, к которой можно получить доступ непосредственно браузером клиента. Причина, по которой включен стиль style.css, - это то, что он включен на стороне сервера. Но в style.css, чтобы получить фоновое изображение, браузер запустит новое подключение к изображению, которое находится внутри папки WEB-INF, и сервер откажется отправить его обратно, и вы обречены.

Если у вас есть сервлет централизованного контроллера, вы можете поместить свои jsps в папку WEB-INF, чтобы предотвратить доступ к нему напрямую. Ваш сервлет перенаправляет весь запрос на соответствующий jsp в соответствии с параметрами запроса.

Насколько я могу судить, в этой папке нет абсолютной причины помещать изображения, JavaScripts и т. Д., И у вас наверняка возникнут проблемы, когда браузеру необходимо получить доступ к этой папке для извлечения данных.

1

Это невозможно. Если вы хотите, чтобы контент был напрямую доступен из браузера, он не может находиться внутри WEB-INF.

+0

В чем смысл вашего ответа. вы скажете, что я больше всего ставил свои файлы ресурсов из WEB-INF? поэтому, как мой файл jsp может получить доступ к css-файлу, но файл css не может иметь доступ к файлу изображения? означает ли ваш ответ, что процесс css-файла через веб-браузер? – rasoul

+0

Если вы хотите, чтобы ресурс (например, header.jpg) был доступен клиентам, таким как браузеры, он не может находиться внутри WEB-INF –

0

Почему вы создаете theme, js, css в WEB-INF Папка? WEB-INF содержит метаданные о приложении. Во время обычных операций вам не нужно ничего изменять в каталоге WEB-INF.

вы можете создать theme, js, css папку подкатегории war или WebContent директория непосредственно она будет проста в использовании на ваших страницах jsp.

this ссылка поможет вам.

+0

в книге, которую я читал, что он предлагает структуру для веб-сайта. автор говорит, что хорошо, что вы поместили свой css, тему, js и tld в WEB-INF.Конечно, он говорит, что все данные в WEB-INF недоступны для пользователя, но веб-сервер позволяет вашим классам использовать его (возможно, он скажет, что наши классы могут его использовать, не все источники такого jsp-файла, я не знаю). – rasoul