2016-04-28 2 views
1

Я изучаю, как сделать сервлет 3.1 совместимым webapp, который будет работать на JBoss wildfly 10. Я использую maven для зависимостей, и я не уверен, что следующие зависимости делать точно, и если они включены/не включены в контейнер сервлетов:Какова цель javax.servlet.jsp-api

 <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>${servlet.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>javax.servlet.jsp-api</artifactId> 
      <version>2.3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>${jstl.version}</version> 
     </dependency> 

Я уже сделал некоторые погуглите и хотели бы проверку или завершение следующей информации:

  • сервлет АФИ предоставляемый контейнером сервлетов, поэтому я могу добавить <scope>provided</scope> в Maven. Однако зачем мне включать эту банку? Какие классы или файлы будут иметь ошибки при удалении?
  • Я не уверен, что делает javax.servlet.jsp-api. Мой мирный пример, похоже, работает отлично, если я его не включаю. Что это делает? И мне нужно добавить <scope>provided</scope> или нет?
  • JSTL не предоставляется никаким контейнером сервлетов, поэтому он должен быть явно добавлен. Эта банка гарантирует, что и другие основные теги обрабатываются правильно в моих jsp.

ответ

1

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

  1. Если вы разрабатываете веб-приложение, то маловероятно, что вы сможете обойтись без использования классов с Servlet API (HttpServletRequest, HttpServletResponse, фильтр и т.д.). В то время как многие фреймворки абстрагируют большую часть API Servlet, все же, вероятно, вам придется работать с этим базовым API.

  2. Да, добавьте область применения. Однако вам понадобится только это в пути времени компиляции, если, например, вы создавали пользовательский тег JSP, расширяя, скажем, javax.servlet.jsp.tagext.TagSupport (хотя файлы тегов предоставляют более современный способ создания пользовательских тегов) ,

  3. Да и да.

+0

Еще одна причина, по которой JSP API в ваших зависимостях заключается в использовании Eclipse; Eclipse любит, чтобы он был там, потому что он выполняет тестовую компиляцию ваших JSP-файлов для сканирования их на наличие ошибок, поэтому вы получаете ошибки в отношении идентификаторов типа 'PageContext' и других базовых JSP-типов, которые недоступны, если их нет. – Jules

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