Подтвердить что ты не робот

Что такое версия веб-приложения? На что это влияет?

В веб-приложении Java есть файл с именем web.xml, и в нем есть версия.

Что именно это? Для чего его используют?

Здесь это SO wiki для web.xml. Но это не очень мне объясняет.

Это позволяет вам определять, объявлять и настраивать Servlet API на основе реализации в вашем веб-приложении, такие как сервлеты, фильтры и слушателей.

Пример версии web.xml:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

Может кто-нибудь объяснить это простыми примерами?

4b9b3361

Ответ 1

Web.xml - это центральное место, где вы определяете конфигурацию вашего веб-приложения. Например, вы можете указать там:

  • отображение сервлета, то есть, какой URL-путь относится к какому классу Java (например, когда пользователь вводит http://something.com/Koray, вы можете указать этот запрос на класс KorayServlet.java, где вы храните реализацию сервлета)
  • параметры авторизации, например, этот пользователь Tugay имеет доступ к http://something.com/Koray/pictures, но не к http://something.com/Koray/documents
  • все другие настройки безопасности, например когда кто-то пытается открыть http://something.com/Restricted, вы перенаправляете его на https://something.com/Restricted, т.е. он должен использовать SSL
  • страница приветствия вашего веб-сайта (например, когда пользователь вводит http://something.com/Koray, вы перенаправляете его на http://something.com/Koray/index.html)

Я бы также предложил исследовать спецификацию Servlet 3.0, где многие из этих параметров могут быть установлены с помощью аннотаций.

Versioning

Управление версиями относится к версии схемы XML, которой должен соответствовать синтаксис файла web.xml. Более того, он также указывает версию спецификации сервлета, которую реализует ваше приложение. Пример того, как должен начинаться Servlet 3.0-совместимый web.xml:

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

Большинство IDE автоматически генерируют эту часть web.xml. Если вы по каким-либо причинам собираетесь изменить его вручную, будьте внимательны, чтобы соответствовать версиям веб-приложения и xsd.

Конкретные примеры web.xml см.:

Ответ 2

Начиная с Сервлета 3.0, Web.xml является необязательным, вместо него можно использовать аннотацию @WebServlet.

Если вы используете Spring, org.springframework.web.WebApplicationInitializer можно использовать вместо или вместе с web.xml.

WebApplicationInitializer:

Интерфейс, который будет реализован в Servlet 3.0+ среды, чтобы программно настроить ServletContext - в отличие от (или, возможно, в сочетании) традиционного подхода, основанного на web.xml.

Чтобы ответить на ваш вопрос ниже.

На что это влияет? (В приложении Spring)

версия для web.xml:

Однако , если WEB-INF/web.xml присутствует в приложении, его атрибут версия должен быть установлен в "3.0" или больше, в противном случае ServletContainerInitializer загрузочная загрузка будет проигнорирована контейнером сервлета.

Вы можете прочитать полный java-документ WebApplicationInitializer здесь.

Ответ 3

то, что я понимаю из web.xml esp для части web-app version="3.0", является версией вашего сервлета. Итак, я ограничиваю свой ответ на версию сервлета и почему это так важно. Как вы знаете, версия вашего сервлета контролирует большинство других стандартов при программировании с Java EE.

Например,

JSF 2.0 требует, чтобы SERVLET 2.5 поставлялся с JAVA EE5 и WEBLOGIC 10.3.X, поддерживающими все эти технологии, для других контейнеров вы должны проверить примечания к выпуску. Во-вторых, JSF 2.1 требует, чтобы SERVLET 3.0 поставляется с JAVA EE6 и WEBLOGIC 12c поддерживает все эти технологии. Конечно, обеспечивается обратная совместимость, однако в большинстве случаев это может иметь некоторые проблемы.

когда мы проверяем заметки о выпуске weblogic 12c, я снял основные технологии, поддерживаемые вместе с версией сервлета. Я надеюсь, что это также полезно для вас с большим ответом Мильена Микича.

Standard    Version
Contexts and Dependency Injection for Java EE   1.0
Dependency Injection for Java EE    1.0
Expression Language (EL)    2.2, 2.1, 2.0
Only JSP 2.0 and greater supports Expression Language 2.x.
JAAS    1.0 Full
JASPIC  1.0
Java API for XML-Based Web Services (JAX-WS)    2.2, 2.1, 2.0
Java API for RESTful Web Services (JAX-RS)  1.1
Java Authorization Contract for Containers (JACC)   1.4
**Java EE   6.0**
Java EE Application Deployment  1.2
Java EE Bean Validation 1.1
Jave EE Common Annotations  1.0
Java EE Connector Architecture  1.6
Java EE EJB 3.1
Java EE Enterprise Web Services 1.3, 1.2, 1.1
Jave EE Interceptors    1.1
**Java EE JDBC  4.0, 3.0**
Java EE JMS 1.1, 1.0.2b
Java EE JNDI    1.2
**Java EE JSF   2.1, 2.0, 1.2, 1.1**
Java EE JSP 2.2, 2.1, 2.0, 1.2, and 1.1
JSP 1.2. and 1.1 include Expression Language (EL), but do not support EL 2.x or greater.
Java EE Managed Beans   1.0
**Java EE Servlet   3.0, 2.5, 2.4, 2.3, and 2.2**
Java RMI    1.0
JavaMail    1.4
JAX-B   2.2, 2.1, 2.0
JAX-P   1.3, 1.2, 1.1
JAX-R   1.0
JAX-RPC 1.1
JCE 1.4
**JDKs  6.0 (aka 1.6), 5.0 (aka 1.5, clients only)**
JMX 1.2, 1.0
JPA 2.0, 1.0
JSR 77: Java EE Management  1.1
JSTL    1.2
Managed Beans   1.0
OTS/JTA OTS 1.2 and JTA 1.1
RMI/IIOP    1.0
SOAP Attachments for Java (SAAJ)    1.3, 1.2
Streaming API for XML (StAX)    1.0
Web Services Metadata for the Java Platform 2.0, 1.1