Нужно ли мне знать сервлеты и JSP для изучения Spring, Hibernate или любых других веб-фреймворков Java? [закрыто]

17

Я спрашивал многих людей, с чего начать изучение веб-разработки на Java, я уже знаю базовую Java (Threading, Generics, Collections, небольшой опыт работы с (JDBC)), но я не знаю JSP и сервлетов. Я сделал свою долю разработки с несколькими веб-приложениями, использующими PHP для серверной части и HTML, CSS, Javascript, HTML5 для клиентской стороны.

Большинство людей, которых я спрашивал, предлагали мне перейти прямо в Hibernate, в то время как некоторые говорили, что мне не нужно изучать сервлеты и jsps, и я должен немедленно изучить среду Spring. Это правда? мне не нужно изучать сервлеты и JSP, чтобы изучать Hibernate или Spring?

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

Итак, вопрос, нужно ли мне иметь базовые / известные сервлеты и JSP для изучения Spring, Hibernate или любых других веб-фреймворков Java.

KyelJmD
источник
3
Обратите внимание, что hibernate - это просто уровень абстракции базы данных, не более того, и его можно использовать для подключения источника данных к любому java-приложению, а не только к веб-приложению.
Эд Грибель
1
Знание сервлетов и JSP не помешает, взгляните на «Head First - Servlets and JSP». Легко понять, читать, но и охватывает много.
Джейди
@Jaydee Я в настоящее время возглавляю Core Servlets и JSP по Marty Hall + сервлеты Murach и JSP.
KyelJmD
Я не думаю, что на этот вопрос ответили адекватно. Bear BibeaultХорошо известный разработчик и авторы настаивают, чтобы изучать JSP и сервлеты, прежде чем изучать ЛЮБОЙ фреймворк. Кто-нибудь хочет показать, почему это может или не может быть применимо сегодня? Вот его пост - coderanch.com/t/521300/JSP/java/JSP-servlets-struts
Борат Сагдиев,
Хорошо, я получил несколько ответов Bear Bibeault. Смотрите эти две ссылки - coderanch.com/t/633527/Spring/… и coderanch.com/t/633526/JSP/java/…
Борат Сагдиев

Ответы:

17

Если вы хорошо разбираетесь в HTML, CSS и JavaScript, у вас есть возможность познакомиться со многими людьми, которые в конечном итоге занимаются веб-разработкой. Концепции JSP очень похожи на PHP. Причуды разные. Сервлет - это имя фрагмента кода Java, который обслуживает запрос. Это действительно так. Весь оригинальный фреймворк Struts представлял собой один сервлет.

Я бы добавил Tomcat или Jetty в ваш список технологий для изучения. Tomcat - это оригинальная реализация Java Servlet Container, которая также является полнофункциональным и довольно популярным веб-сервером. GlassFish построен поверх него. Я использовал Jetty вместо Tomcat в моих новых проектах, потому что это проще, гибче и быстрее. Jetty был разработан для создания веб-сервисов, а не веб-приложений. Но веб-приложение - это просто веб-служба, которая обслуживает HTML в ответ на необработанные HTTP-запросы, поэтому, если вы понимаете HTTP (который вы можете изучить важные части за несколько часов в день), с ним очень легко работать.

Вы можете создать небольшой веб-сайт с Tomcat и JSP ( учебник здесь или JSF), зная, что вы знаете, и потратив несколько часов на изучение учебников. Таким образом, вы можете начать, где вам удобно, прежде чем растягиваться. Затем создайте javax.servlet.http.HttpServlet, который пишет «<html> <head> <title> Hi </ title> </ head> <body> <h1> Hello World </ h1> </ body> </ html > "к объекту ответа, укажите его в своем веб-файле Tomcat и отправьте HTTP-запрос из веб-браузера. Это не ракетостроение. Все веб-платформы Java являются вариациями этих двух основных действий.

Если вы идете по маршруту Jetty, он еще менее структурирован. Посмотрите этот пример Hello Jetty .

Если вы только собираетесь сделать блог или стандартный сайт электронной коммерции, я хотел бы начать с Squarespace или Wordpress или что - то. Вы получаете столько с полки, что больше нет способа оправдать пользовательское кодирование.

Сильной стороной Java для веб-приложений является ее надежность, удобство обслуживания и производительность. PHP или Ruby / Rails проще, но Java будет масштабироваться настолько, насколько вы захотите. Я не поражен какой-либо из веб-фреймворков Java. Если у вас есть команда людей, работающих над большим веб-приложением, или вам нужно использовать Hibernate, то такая среда, как Spring, действительно сияет. Весна самая популярная. Если вы немного знакомы с сервлетами и JSP / JSF, узнайте, как Spring связывает их вместе с моделью данных.

Если вы ведете блог или систему управления контентом, возможно, вам не помешает база данных NoSQL. Но я бы сказал, что базы данных NoSQL - это просто слой кеширования в файловой системе, а не замена реляционных баз данных. Я думаю, что редко, когда проект, который хорошо подходит для базы данных NoSQL, подходит для разработки на Java.

Вещи, для которых все еще требуется пользовательский высокопроизводительный код (на Java, PHP и т. Д.), Вероятно, будут питать их от реляционной базы данных / базы данных SQL. Я бы рекомендовал вам сначала ознакомиться с SQL и JDBC (Java Database Connectivity). После того, как вы освоитесь с миром объектов Java, миром реляционных баз данных и SQL, вы можете изучить Ebean / JPA (API персистентности Java) / ORM (объектно-реляционное сопоставление), который связывает мир объектов с реляционным миром.

ОРМ хитры и странны. Большинство в конечном итоге стоит борьбы. Eese - самый простой из известных мне. Я чувствую себя более комфортно после 8 месяцев, чем в Hibernate после 12 лет. Я знаю многих людей, которые используют Spring с Hibernate, и у них, похоже, нет проблем, или они даже не особо осведомлены о том, что такое Hibernate или что делает, поэтому я бы сказал, что если вы собираетесь использовать Hibernate, сделайте это. через весну. Может быть, только потому, что я работал с ним дольше, мне удалось полностью заглушить Hibernate с парой хеш-карт для тестирования, что потрясающе (обзор доступен по запросу).

У вас уже есть некоторые из самых важных навыков. Берите остальных по одному и старайтесь не перегружаться.

GlenPeterson
источник
у вас есть какие-либо ссылки или учебное пособие, где я могу начать изучать упомянутые технологии? или, возможно, хорошее предложение для книги. Большинство приложений, которые я сделал, использует СУБД, от SQL Server до простого MySQl.
KyelJmD
Я очистил свой ответ и добавил ссылки в соответствии с просьбой. Hibernate / JPA и различные веб-фреймворки требуют времени для изучения и освоения. Большинство других технологий, о которых вы уже знаете, уже достаточно, чтобы вы могли работать через несколько часов или день. Я не знаю Spring, но проверьте документацию на их веб-сайте или получите книгу с высоким рейтингом на Amazon.
ГленПетерсон
Я не понимаю, как это отвечает на вопрос. Bear BibeaultХорошо известный разработчик и авторы настаивают, чтобы изучать JSP и сервлеты, прежде чем изучать ЛЮБОЙ фреймворк. Хотите показать, почему это может или не может быть применимо сегодня? Вот его пост - coderanch.com/t/521300/JSP/java/JSP-servlets-struts
Борат Сагдиев,
@GlenPeterson, «Вся оригинальная среда Struts была одним сервлетом». смысл? Разве это не замедлит каждый HTTP-вызов?
Pacerier
@Pacerier Мы использовали для загрузки Struts 1 в Tomcat в качестве сервлета. Сервлет Struts Controller будет отправлять разные запросы в разные потоки так же, как веб-сервер, только на уровне сервлета, а не на уровне контейнера. Я полагаю, что накладные расходы были минимальными. Что обычно медленнее, так это вызовы из базы данных. 2-ой самый медленный, строит HTML и возвращает его клиенту. В то время было популярно использовать отдельный сервер для статического контента для скорости, так что это сработало.
ГленПетерсон
4

Я бы посоветовал узнать об основных JSP и сервлетах, так как это поможет вам понять концепции, упрощенные в Spring. Поскольку у вас есть опыт работы с CGI на основе PHP, большинство JSP / Servlets будут просто разными способами делать то, что вам знакомо, поэтому оно должно пройти довольно быстро. Самое сложное, что вы можете найти, это подобрать уникальные идиомы в мире Java.

Что касается Hibernate, я согласен с MebAlone и скажу, что вы должны изучить его, если вам нужно, но если он уже настроен, вы можете сделать 90% того, что вам нужно, просто набросившись на то, что сделали другие.

Эд Грибель
источник
2

Звучит так, будто вы хотите изучить веб-разработку на стороне сервера с использованием Java. Есть несколько рамок. Spring MVC на самом деле является самым популярным, он зрелый, очень полнофункциональный и хороший фреймворк. Spring MVC и другие веб-фреймворки Java абстрагируют API сервлетов Java от программиста - так что технически вам не нужно это знать. Но я бы посоветовал изучить основы - особенно ключевые классы. День учебы должен привести вас туда.

Что касается JSP, если вы знаете PHP, вы уже понимаете основы. JSP - это java-версия сценариев на стороне сервера.

Hibernate - это реализация (самая популярная) JPA, которая представляет собой Java-спецификацию для сохранения объектов в RDBMS. С ростом популярности NOSQL db (Hadoop, Mongo и т. Д.), Hibernate стал гораздо менее «обязательным знакомым», чем это было даже 18 месяцев назад. Лично я изучаю технологии хранения данных по мере необходимости, потому что их много, и вы теряете то, что не используете.

MebAlone
источник
Какую книгу вы могли бы предложить для Spring MVC? в чем разница ставок Spring и Spring MVC?
KyelJmD
Spring - это стек Java-технологий, который включает в себя широкий спектр проектов. Spring MVC - это веб-инфраструктура на стороне сервера. Электронная документация и примеры приложений Spring - лучший способ изучения Spring MVC.
MebAlone
2

Краткий ответ: нет, вам не нужно изучать сервлеты и JSP как предварительное условие для Spring MVC и многих других веб-фреймворков Java.

Давайте сначала выведем Hibernate из картинки. Это структура уровня персистентности, и она не имеет ничего общего с сервлетами и JSP.

Servlet API - это самый низкий уровень почти для всех веб-фреймворков Java. Даже JSP компилируются в сервлеты.

Spring MVC - это слой поверх Servlet API с множеством полезных расширений и интеграцией со Spring Core. Вы можете использовать JSP как механизм рендеринга для Spring MVC. Учебное пособие по Spring MVC поможет вам с самого начала создавать веб-приложения. По мере продвижения вы узнаете о JSP и будете хорошо подготовлены к пониманию Servlet API.

Юрий Зубарев
источник
какую книгу или видеоурок вы бы порекомендовали изучить Spring MVC?
KyelJmD
1
@YuriyZubarev - Я не понимаю, как это отвечает на вопрос. Bear BibeaultХорошо известный разработчик и авторы настаивают, чтобы изучать JSP и сервлеты, прежде чем изучать ЛЮБОЙ фреймворк. Хотите показать, почему это может или не может быть применимо сегодня? Вот его пост - coderanch.com/t/521300/JSP/java/JSP-servlets-struts
Борат Сагдиев,
-1

кажется, что вы застряли на проблеме, с которой я столкнулся недавно. Моей целью было изучить разработку на стороне сервера с помощью Java. Итак, я начал с сервлетов, понял их работу и написал несколько простых программ для запуска на сервере TomCat. TomCat, является обязательным условием. Вы определенно должны быть знакомы с TomCat, если хотите продолжить. Что касается Struts2 или Spring, Struts2 и Spring - это фреймворки, построенные на сервлетах, что делает необходимым глубокое понимание сервлетов, если вы хотите быть сильными в основах. Я начал с обучающих программ по Java Brains. Для начинающих, эти учебники удивительны. Некоторые работы Якоба Дженкова в его блоге тоже удивительны. Struts2 и Spring упрощаются, когда вы знаете сервлеты. Что касается гибернации, я предлагаю вам начать с знакомства с JDBC. Идем пошагово, сервлеты, распорки, JDBC, Spring, Hibernate. Надеюсь, мой ответ поможет :).

Chan_k
источник
этот пост довольно трудно читать (стена текста). Не могли бы вы изменить его в лучшую форму?
комнат