Мне действительно нужен web.xml для веб-приложения на основе сервлета?
Я не работаю над веб-проектами в реальном мире. В университете мы использовали оба сервлета и Spring для веб-разработки Java. В обоих проектах нам были предоставлены уже настроенные файлы web.xml, и мы делали в них лишь незначительные изменения. Теперь мне нужно создать веб-приложение с нуля. Я создал новый класс Servlet в Eclipse и не создал автоматически web.xml. Затем я googled, и я читал из нескольких ресурсов, что web.xml действительно не нужен, но это рассуждение было поставлено в пару предложений, поэтому я не уверен, что использование аннотаций вместо web.xml не будет проблемой. Я буду очень рад, если нет необходимости настраивать web.xml, потому что я не настроил его самостоятельно, и я хочу больше сосредоточиться на бизнес-логике.
Заранее благодарю!
Ответы
Ответ 1
Вам не нужен файл web.xml
, если у вас есть контейнер, поддерживающий последние спецификации j2ee.
Здесь - ссылка на простой пример сервлета, который использует аннотацию и здесь вы может найти то же самое для Spring MVC; Я размещаю здесь пример для удобства
public class MyWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) {
ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet());
registration.setLoadOnStartup(1);
registration.addMapping("/example/*");
}
}
Здесь - еще одна ссылка, которая показывает, как использовать другие доступные аннотации (@ServletFilter, @WebServletContextListener); вы можете загрузить форму спецификации здесь, чтобы получить более подробный обзор аннотаций, доступных через j2ee.
Ответ 2
Начиная с сервлета 3, web.xml не требуется. Вы захотите использовать что-то вроде Tomcat 7 или 8 (лучший выбор). Для сырых сервлетов это хорошая отправная точка.
Если вы хотите использовать современный Spring, Grails 3 - отличный способ. Эта сторона ставит все эти проблемы, и Grails является очень продуктивной основой для веб-разработки. Вы можете думать об этом как Ruby on Rails, построенный поверх Spring и Hibernate.
В этот момент вам не нужно писать какой-либо web.xml для настройки, если вы не используете фреймворк, который ему нужен. Я не знаю о Spring mvc, но Grails не требует от вас этого, и он использует большую часть того, что вы уже использовали для использования.
Ответ 3
<build>
<finalName>yourapp</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
В pom.xml код шаблона запрещает Maven вызывать ошибку, потому что нет файла web.xml. В веб-приложениях Java требуется файл web.xml; однако, поскольку спецификация сервлета 3.0 (реализована в версиях Tomcat 7 и более поздних версий), она больше не требуется.
Ответ 4
Другой способ (Spring 3.1+) -
Реализация абстрактного базового класса WebApplicationInitializer
с именем AbstractDispatcherServletInitializer
упрощает регистрацию DispatcherServlet путем простого переопределения методов для указания отображения сервлета и расположения конфигурации DispatcherServlet -
public class MyWebAppInitializer extends AbstractDispatcherServletInitializer {
@Override
protected WebApplicationContext createRootApplicationContext() {
return null;
}
@Override
protected WebApplicationContext createServletApplicationContext() {
XmlWebApplicationContext cxt = new XmlWebApplicationContext();
cxt.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");
return cxt;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
Ответ 5
Независимо от того, нужен ли вам web.xml, зависит от того, какую спецификацию сервлета вы требуете в своем приложении. Если вы создадите приложение с использованием спецификации 3.0, вы можете использовать аннотации для объявления своих сервлетов и развертывания в контейнере без необходимости использования файла web.xml. Это было сделано как часть JSR-315.
Ответ 6
Используйте Spring Boot, который будет управлять контейнером и всей конфигурацией шаблона для вас. Вы можете создать готовый к запуску скелет с Initializr.
Ответ 7
Нет, нет web.xml
для servlet based application
, если вы используете версию сервлета >3.0
и tomcat 7
, поскольку она не будет работать в предыдущих версиях tomcat.
Аннотации представляют метаданные. Если вы используете аннотацию, дескриптор развертывания (файл web.xml) не требуется. Посмотрите Здесь для всех доступных аннотаций.