Когда Вы используете JSP и когда Сервлет? [дубликат]

Этот вопрос уже имеет ответ здесь:

У меня есть приложение, которое отправляет клиента на другой сайт для обработки платежей. Другой сайт, за пределами клиента, называет страницу на нашем сервере для сообщения нам то, что состояние имеет оплату. Названная страница проверяет параметры, которые даны платежным приложением и проверками, чтобы видеть, известна ли транзакция нам. Это тогда обновляет базу данных для отражения состояния. Это все сделано без любого взаимодействия с клиентом.

Я лично принял решение реализовать эту функциональность как JSP, так как легче просто отбросить файл в файловой системе, чем скомпилировать и упаковать файл и затем добавить запись в конфигурационный файл.

Рассмотрение функциональности страницы, я предположил бы, что сервлет будет предпочтительным вариантом. Вопрос (вопросы):

  • Мое предположение корректно?
  • Существует ли настоящая причина для использования сервлета по JSP?
  • Каковы те причины?
  • 38
    задан Bill the Lizard 19 September 2008 в 12:49
    поделиться

    2 ответа

    Я знаю, что сегодня это не популярный ответ, но: Когда я создаю приложение с нуля, я всегда использую JSP. Когда логика нетривиальна, я создаю обычные классы Java для выполнения той рутинной работы, которую я вызываю из JSP. Я никогда не понимал аргумента, что вы должны использовать сервлеты, потому что, как чистые классы Java, они более удобны в обслуживании. JSP может легко вызвать чистый класс Java, и, конечно, обычный класс Java так же удобен в обслуживании, как и любой сервлет. Отформатировать страницу в JSP проще, потому что вы можете поместить всю разметку в строку вместо того, чтобы писать кучу println. Но самым большим преимуществом JSP является то, что вы можете просто поместить их в каталог, и они будут доступны напрямую: вам не нужно возиться с установкой отношений между URL-адресом и файлом класса. Безопасность легко обеспечивается, если каждая JSP начинается с проверки безопасности, которая может быть одним оператором вызова, поэтому нет необходимости помещать безопасность на уровень диспетчеризации.

    Единственная причина, по которой я могу использовать сервлет, - это необходимость сложного сопоставления между URL-адресами и результирующим классом выполнения. Например, если вы хотите проверить URL-адрес, а затем вызвать один из многих классов в зависимости от состояния сеанса или чего-то подобного. Лично я никогда не хотел этого делать, и приложения, которые я видел, которые делают это, как правило, трудно поддерживать, потому что, прежде чем вы даже сможете начать вносить изменения, вы должны выяснить, какой код действительно выполняется.

    3
    ответ дан 27 November 2019 в 03:25
    поделиться

    Есть 2 довольно простых правила:

    1. Всякий раз, когда вы хотите написать код Java (бизнес-логику), делайте это в классе Java (так, сервлет).
    2. Всякий раз, когда вы хотите написать код HTML / CSS / JS (логика представления / шаблона), делайте это в JSP.

    Связанный вопрос:

    5
    ответ дан 27 November 2019 в 03:25
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: