Есть ли кроссплатформенный способ доступа к сервлету JSP? - PullRequest
2 голосов
/ 16 августа 2010

В Tomcat мы можем настроить веб-приложение для обработки файлов, отличных от JSP, в качестве JSP с помощью сервлета JSP:

<servlet-mapping>  
   <servlet-name>jsp</servlet-name>  
   <url-pattern>/scripts/my.js</url-pattern>
</servlet-mapping>

Существует ли кроссплатформенный способ сопоставления ресурсов с сервлетом JSP?

ОБНОВЛЕНИЕ : хотя нет кроссплатформенного способа для сопоставления ресурсов с сервлетом JSP, можно обрабатывать файлы не-JSP как JSP, используя элемент <jsp-property-group>. Например, чтобы рассматривать все .js файлы как JSP, мы можем добавить следующий фрагмент к web.xml:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.js</url-pattern>
        <is-xml>false</is-xml>
    </jsp-property-group>
</jsp-config>

Ответы [ 4 ]

2 голосов
/ 16 августа 2010

Это нигде не указано в спецификации JSP . Поэтому нет кроссплатформенного способа сопоставления ресурсов в сервлете JSP таким образом.

Лучше всего будет иметь действительный файл .jsp, генерирующий желаемый контент JS, и отобразить /scripts/my.js на <jsp-file> вместо <servlet-class> следующим образом:

<servlet>  
   <servlet-name>js</servlet-name>  
   <jsp-file>/scripts/my.jsp</jsp-file>
</servlet>
<servlet-mapping>  
   <servlet-name>js</servlet-name>  
   <url-pattern>/scripts/my.js</url-pattern>
</servlet-mapping>
1 голос
/ 16 августа 2010

Наверное, проще всего просто назвать это .jsp. Соглашение о конфигурации (в данном случае даже не указан способ настройки).

Что ломается, если вы называете это .jsp?

Если вы хотите, чтобы файл .jsp не отображался в URL-адресе, вы можете использовать фильтр для внутренней пересылки URL-адреса в JSP (если у вас их много) или сопоставления, как предлагает BalusC (если у вас всего несколько ).

0 голосов
/ 16 августа 2010

Я согласен с первым утверждением Арафангиона: сервлеты кроссплатформенны для начала!

Сервлет кроссплатформенный, JSP (который является примером сервлета) кроссплатформенный, а приведенный вами фрагмент web.xml кроссплатформенный (он будет работать в Windows так же, как и на Linux; вы можете использовать его в Tomcat, в JBoss или в Websphere и т. Д. И т. Д.).

ОДНАКО ...

Вы знаете, я уверен, что "Java"! = "Javascript". Вы также знаете, что сервлет находится на стороне сервера, но сценарий .js обрабатывается на стороне клиента.

Так что я немного озадачен тем, почему вы, кажется, назначаете (на стороне сервера) "" что-то вроде (на стороне клиента) .js скрипта?

0 голосов
/ 16 августа 2010

Платформа сервлетов не зависит от определения (т. Е. Им требуется платформа Java, а часто и платформа сервлетов).

Однако эти платформы, в свою очередь, часто легко настроить для запуска на другойоперационной системы, но подробности не обязательно известны самому сервлету.

Итак ... В ответ на ваш вопрос ... Возможно, "Нет", если вы не ограничите свой ответ, например, для конкретного котав нескольких операционных системах или в определенных версиях tomcat и на конкретном альтернативном сервере сервлетов.

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