Создание веб-приложения сложно. Я постараюсь ответить на ваши конкретные вопросы.
В конечном итоге вам не нужны Maven или Appfuse, оба могут быть очень полезны.
Maven - это инструмент для сборки. Maven и Eclipse выполняют несколько похожих задач. Оба могут скомпилировать ваш код и управлять путем к классам. Maven обрабатывает много вещей из коробки, которые Eclipse не может сделать по умолчанию. Maven может управлять зависимостями (т. Е. Скачать весенние фляги для вас) и создавать сложные процессы сборки.
Если вы не знакомы с Maven и создаете файл сборки с нуля, то, вероятно, это не сильно поможет. Если у вас есть pom.xml (файл сборки Maven) откуда-то еще, то Maven может оказать большую помощь. Результат Maven зависит от того, как структурирован ваш файл сборки. В результате чаще всего это файл .war (описанный ниже как шаг 5) или приложение, развернутое непосредственно на вашем веб-сервере (описанное ниже как шаг 6).
Appfuse также не является обязательным, но может быть полезным. Appfuse создаст каркасный проект для вас. Когда он это сделает, он создаст pom.xml (файл сборки Maven) для автоматической сборки вашего проекта. Appfuse сам по себе не делает ничего, кроме как помогает начать проекты. Большинство людей больше не начинают создавать веб-приложения с нуля, поскольку правильная структура каталогов и создание файла сборки может быть большой работой, и легко допустить ошибки. Инструмент, похожий на Appfuse, - Spring Roo.
Tomcat, Glassfish, Jetty и JBoss являются веб-серверами. Их также часто называют сервлет-контейнерами, что является еще одним названием веб-сервера, на котором размещены сервлеты определенным образом. Любой из них будет работать для вашего проекта, все они имеют разные кривые обучения. Интеграция их в Eclipse может работать для вас, когда я начал, я обнаружил, что легче (хотя и немного медленнее) разделить их.
В JDK есть интерфейс с именем javax.servlet.Servlet. Это интерфейс, который должен реализовывать входной класс вашего веб-приложения. В частности, метод service(ServletRequest req, ServletResponse res)
вызывается при каждом запросе URL. Если вы хотите, чтобы ваше веб-приложение отвечало на HTTP, может быть проще расширить абстрактный класс HttpServlet
(который реализует сервлет). Большинство библиотек (т.е. Spring Web Framework) имеют свои собственные реализации Servlet, которые являются точкой входа в библиотеку.
Теперь я опишу основной процесс создания веб-приложения. Это сложный процесс, и большинство людей в конечном итоге автоматизируют его с помощью Maven. Я не предлагаю пытаться вручную пройти процесс, это может быть очень сложно, но вы можете, если хотите. Я предполагаю, что вы помещаете все ваши встроенные файлы в папку с именем $ BUILD
- Скомпилируйте ваш исходный код. Скомпилированные классы должны оказаться в папке с именем $ BUILD / WEB-INF / classes
- Поместите все ваши файлы jar (внешние библиотеки) в папку с именем $ BUILD / WEB-INF / lib
- Создайте дескриптор развертывания , это файл, который сообщает вашему веб-серверу, как развернуть ваш код. Самым важным в этом файле является сопоставление URL-адресов с классами Java, которые реализуют сервлет. Он должен быть назван web.xml и помещен в $ BUILD / WEB-INF
- скопируйте весь этот код с корнем jar в $ BUILD. Вы можете назвать этот код application.jar
- Переименуйте расширение файла jar в war. Файл war - это просто файл jar, в котором есть требуемый каталог WEB-INF.
- Разверните этот файл войны на своем веб-сервере (Tomcat / JBoss / Jetty / Glassfish / и т. Д.), Процесс для этого отличается для каждого веб-сервера
Это основы развертывания веб-приложений. Ваш веб-сервер извлечет файл war и загрузит все jar-файлы из папки lib в classpath. Затем он будет принимать любые полученные URL-запросы и отправлять их соответствующим реализациям сервлета, объявленным в дескрипторе развертывания.
Как видите, это не простой процесс. По этой причине существуют такие инструменты, как Appfuse и Roo. Они пытаются дать вам отправную точку, которая делает все эти основные вещи для вас. Если у вас возникли проблемы, я бы предложил повторить попытку с нуля с помощью Appfuse / Roo. Когда вы начнете разбираться в вещах, я бы также предложил больше узнать о Maven (или Ivy + Ant), чтобы справиться с зависимостями.