Какой сервлет API пытается решить? - PullRequest
1 голос
/ 12 января 2011

edit Ok People! Не нужно ставить этот вопрос в пропасти SO. Это может быть немного грубый вопрос и / или грубая формулировка / язык для некоторых SO-элиты и / или фанатов Java / Sun / Oracle, но я все еще считаю, что вопрос имеет место здесь и , то есть законный вопрос. Посмотрите на ответ @Thilo, это на самом деле конструктивно и дало мне почти все, что мне нужно было понять, лучше понять, почему Servlet API такой, какой он есть.

API сервлетов выглядит неловко, я не понимаю.

  • Каковы преимущества этого?
  • Какие проблемы он пытается решить?
  • Что это хорошо на ?
  • Разве API не забывает хорошие веб-практики как REST архитектура?
  • Почему мы должны использовать приложение, сеанс, область запроса вместо других решений?
  • Что дает API, который не является простым обработчиком HTTP

По сути, почему платформа Java единственная, у которой есть такой API, где другие используют маршрутизацию или URL-адреса для карт файловой системы?

Ответы [ 3 ]

9 голосов
/ 12 января 2011
  • В чем его преимущества?

Позволяет писать (веб) серверный код, который работает на всех типах серверов приложений.Это минимальная база, на которой могут быть построены более высокоуровневые фреймворки.Я бы сказал, что это Java-эквивалент протокола CGI.

  • Какие проблемы он пытается решить?

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

Основная идея заключается в том, что программист может сконцентрироваться на написании только сервлета, не беспокоясь о всем стеке HTTP и сервере (об этом заботится сервер приложений как пакетное решение).

Он пытается обрабатывать не только HTTP (например, запросы по электронной почте), что, возможно, немного перегружено (или, как правило, неудобно при регулярном использовании).

  • Что это хорошона?

Удалось стать стандартом.Он был принят всеми поставщиками серверов приложений Java.Не существует соответствующих конкурирующих решений (может быть, некоторые собственные протоколы, но ничего кроссплатформенного).

  • Разве API не забывает хорошие веб-методы, такие как архитектура REST?

API это не касается.Это работает на более низком уровне.TCP / IP также не интересуется хорошими веб-практиками.

  • Что дает API, а не простой обработчик HTTP

Servlet API - это способ Javaделать простой обработчик HTTP.Там действительно не так много всего.Если вы просто не имеете в виду, что вы не имеете в виду управление жизненным циклом и конфигурацией.

Как еще вы могли бы написать «простой обработчик HTTP»?Если ваш ответ «начать с общедоступной статической void main, связать сокет прослушивания и перейти оттуда», то да, вам не нужен API сервлета.Но если вы хотите повторно использовать какие-либо стандартные инструменты или библиотеки, вам нужен некоторый API, с которым они все согласны (для инкапсуляции запросов и данных конфигурации и т. Д.).

Если вы привязываете себя к определенному HTTPСервер, вы можете написать код без сервлет API.Я думаю, что у Jetty, например, есть собственный интерфейс в качестве альтернативы javax.servlet.

Но, если серьезно, в API сервлетов нет ничего принципиально неправильного.

5 голосов
/ 12 января 2011

Servlet API позволяет добавлять пользовательские функции на веб-сервер. Не забывает REST API. REST API был введен через 10 лет после Servlet API и реализован поверх API сервлета в Java.

Область приложения необходима для обмена данными на прикладных уровнях. То же самое относится к областям сеансов и запросов.

0 голосов
/ 06 сентября 2012

Некоторые ответы приведены в следующей статье:

http://www.lunatech -research.fr / Архивы / 2011/12/08 / неправильно-с сервлет-апи

...