Можно ли использовать JSP / JSTL для создания динамических файлов CSS / Javascript? - PullRequest
4 голосов
/ 13 ноября 2009

Если да, то как ты это делаешь?

(jboss / встроенный томат / jdk 1.5)

не внедренный js / css, а фактический файл ...

Ответы [ 4 ]

11 голосов
/ 13 ноября 2009

Конечно, вы можете. Единственное, что вам нужно сделать, это установить соответствующий тип контента.

<%@page contentType="text/javascript" %>

или

<%@page contentType="text/css" %>

Обратите внимание на тот факт, что некоторые веб-браузеры могут быть требовательны к расширению файла, используемому в фактическом URL-адресе запроса. Я никогда не пробовал, как обычно использовал бы Servlet для этих целей, но я не удивлюсь, если особенно MSIE не съест это.

5 голосов
/ 13 ноября 2009

То, что вы хотите сделать, это присвоить отображение сервлета * .css JSPServlet.

В большинстве контейнеров вы увидите такое отображение (это из Glassfish, в default-web.xml):

  <servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
      <param-name>xpoweredBy</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
  </servlet-mapping>

Здесь он объявляет сервлет JSP и отображает в нем «* .jsp». Таким образом, в этом случае ссылочное имя сервлета JSP будет просто 'jsp'.

Итак, вы хотели бы добавить:

<servlet-mapping>
  <servlet-name>jsp</servlet-name>
  <url-pattern>*.css</url-pattern>
</servlet-mapping>

Когда вы делаете это, «внезапно» ВСЕ ваши CSS-файлы, по сути, являются JSP, поэтому вы можете делать с ними все, что захотите.

Подробности в том, что я не знаю, одинаково ли jsp для ВСЕХ контейнеров, поэтому ваш web.xml МОЖЕТ НЕ быть переносимым.

Но это суть того, что вы хотите сделать. Если вы не хотите, чтобы ВСЕ CSS были JSP, вы можете поместить файлы в их собственный каталог и сопоставить их с сервлетом JSP. Тогда ВСЕ, что вы вставите, будет JSP (css, js и т. Д.)

2 голосов
/ 13 ноября 2009

Конечно, JSP может выводить любой необходимый вам текст, будь то (X) HTML или CSS или код JavaScript. Я делаю это регулярно для настройки ERP, внедряю сценарий javascript в конце каждой страницы и через контекст, в который он загружается, может манипулировать необходимыми полями данных на странице, не касаясь базового приложения.

1 голос
/ 12 ноября 2011

На Glassfish 3.1 вам может понадобиться добавить это:

<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
  <param-name>xpoweredBy</param-name>
  <param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>

И тогда

  <servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.myext</url-pattern>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

На ваш web.xml, если нет, вы можете испытать "java.lang.RuntimeException: здесь нет веб-компонента с именем по умолчанию." Ошибка

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