|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Некоторое время назад начал изучать Spring Boot. Так, чисто для себя. Поскольку в вебе и джаве понимал мало чего, просто тупо взял самый популярный фреймворк. Миллионы же не ошибаются! Теперь, кажется, начал понимать, что именно я хочу (это конкретные хотелки под один мой конкретный проект, которым я хочу заниматься для души). В общем, как я понимаю, как все это работает (если где-то неправильно понимаю, поправьте). Есть приложение - веб-сервер. Допустим, томкат. Он принимает HTTP запросы, парсит урлы и передает запрос дальше. Дельше идет какое-нибудь "приложение", которое реализует интерфейс HttpRequest. Это "приложение" фактически является классом, которому томкат передает управление. Класс делает свою работу, отдает результат томкату (а тот - дальше клиенту), после чего завершается. Что делает спринг бут: он содержит в своем составе в том числе и томкат, что позволяет делать все в одном приложении: и мапить адреса, и обрабатывать запросы, и держать постоянно в памяти какие-то общие данные приложения, и кучу всего остального. Что мне нравится в спринг буте: 1) все в одном - встроенный сервер, парсинг запросов. 2) JdbcTemplate. Мне понравилось, удобная штука. ORM не хочу (и вообще, и на этом проекте особенно). Что хочется. Я искал это в спринге и не нашел. Если плохо искал - просигнализируйте, где искать хорошо: 1) больше свободы в авторизации. Хочу иметь возможность просто получить логин и пароль и дальше делать, что хочется. 2) немного больше свободы в парсинге урлов. Вчера, например, искал, как обработать POST-запрос, нашел только аннотацию, которая позволяет замапить запрос на какой-то класс. А если у меня нет класса, я хочу тупо получать в один и тот же метод любые POST-запросы и их обрабатывать? 3) Хочется иметь возможность парсить SQL-запросы с именованными параметрами. То есть если есть такой запрос: Код: sql 1. 2. 3. 4. 5.
То чтобы фреймворк понимал, что последние два параметра - это один и тот же параметр на самом деле. Один мой знакомый сказал, что спринг бут так умеет, но я пока не разбирался с этим. Остальное вроде пока не очень критично. Если еще что-то вспомню, допишу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2018, 22:47 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор КузьмичЕсть приложение - веб-сервер. Допустим, томкат. Он принимает HTTP запросы, парсит урлы и передает запрос дальше. Дельше идет какое-нибудь "приложение", которое реализует интерфейс HttpRequest. Это "приложение" фактически является классом, которому томкат передает управление. Класс делает свою работу, отдает результат томкату (а тот - дальше клиенту), после чего завершается.Вы путаете модель обработки (запросов) и механизм развёртывания. "Допустим томкат" это сервлет контейнер, который соответствует вполне конкретной спецификации. Контейнер, в соответствии со спецификацией, загружает и специальным образом регистрирует классы "приложения". После развёртывания "приложение" будет получать вполне конкретные запросы и может производить обработку этих запросов используя как стандартное API спецификации, так и собственную логику/API. Spring - это каркас, интегрирующий в себя массу возможностей и умеющий развёртываться в разных среда, включая (в том числе) и сервлет-контейнеры и "полновесные" серверы приложений. Spring Boot это такая "обёртка для ленивых", которая (кроме прочего) умеет хостить сервлет-контейнер. Сделана, с моей кочки зрения, для тех, кто не в состоянии одолеть штатную документацию на сервлет-контейнер. P.S. Года четыре назад, решая небольшую задачу, реализовал запуск специализированного сервера приложений внутри сервлет-контейнера. Технически нет проблемы реализовать отдельную обёртку, которая будет хостить и сервлет-контейнер и "что-нибудь ещё". Это не универсально, но вполне пригодно в конкретных ситуациях. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 00:00 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич2) немного больше свободы в парсинге урлов. Вчера, например, искал, как обработать POST-запрос, нашел только аннотацию, которая позволяет замапить запрос на какой-то класс. А если у меня нет класса, я хочу тупо получать в один и тот же метод любые POST-запросы и их обрабатывать?Во-первых, у вас не может не быть класса. Во-вторых, читать, всё-таки, надо штатную доку: https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Ну и по мелочам, которые даже к java не относятся. Нельзя, в общем случае, "получить логин и пароль" - можно получить некоторые данные, которые можно проверить согласно используемому протоколу аутентификации. Именованные параметры - фикция, которой нет на стороне сервера БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 00:21 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич3) Хочется иметь возможность парсить SQL-запросы с именованными параметрами. Беря во внимание тот факт что Spring стоит на вершине стека, можно повесить на него разные отвественности. Но парсинг SQL-запросов отдаётся MyBatis, или другому ORM или просто jdbc. Spring может управлять инстанциированием их компонент но никак не парсингом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 00:52 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Basil A. Sidorov"Допустим томкат" это сервлет контейнер, который соответствует вполне конкретной спецификации. Контейнер, в соответствии со спецификацией, загружает и специальным образом регистрирует классы "приложения". После развёртывания "приложение" будет получать вполне конкретные запросы и может производить обработку этих запросов используя как стандартное API спецификации, так и собственную логику/API. Spring - это каркас, интегрирующий в себя массу возможностей и умеющий развёртываться в разных среда, включая (в том числе) и сервлет-контейнеры и "полновесные" серверы приложений.Я раньше во все это не вникал, только самые общие слова слышал. Я думал, что Tomcat - это и есть сервер приложений. Где можно поподробнее узнать про разницу между контейнером сервлетов и сервером приложений? В Википедии только самые общие слова, ничего толком не понятно. Basil A. SidorovВо-первых, у вас не может не быть класса.Я имел ввиду нет моего класса, а есть какой-то стандартный. Вот как раз как в том примере, как вы привели. Basil A. SidorovНельзя, в общем случае, "получить логин и пароль" - можно получить некоторые данные, которые можно проверить согласно используемому протоколу аутентификации.Я имел в виду, что в простых примерах для Spring Boot обычно дается следующее: надо дать фреймворку запрос, возвращающий логин, пароль и роль пользователя, и шаблон страницы для ввода, все остальное он берет на себя. Вот это мне и не нравится. Слишком жесткие рамки, я бы предпочел получить в виде пары переменных (или класса, или еще как) ровно то, что ввел пользователь, а дальше самому разбираться, где тут логин, где пароль, и что с ними делать. Basil A. SidorovИменованные параметры - фикция, которой нет на стороне сервера БД.Ну на стороне оракла, допустим, есть (хотя есть и нюансы). Вдруг разработчики какого-нибудь фреймворка заморочились и сделали свой парсер? Basil A. SidorovSpring Boot это такая "обёртка для ленивых", которая (кроме прочего) умеет хостить сервлет-контейнер.Понятно. А можете предложить какую-то последовательность для не очень ленивых, что в какой последовательности изучить, чтобы иметь возможность написать небольшое приложение, которое будет уметь аутентифицировать пользователей, общаться с БД (хотя это я и так вроде умею), обрабатывать POST, GET и ajax-запросы, и обходиться при этом самым минимумом дополнительных фреймворков/библиотек? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 01:43 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор КузьмичЯ думал, что Tomcat - это и есть сервер приложений. Где можно поподробнее узнать про разницу между контейнером сервлетов и сервером приложений? Java Platform, Enterprise Edition . У серверов приложений есть два профиля - "полный" и "веб". Веб-профиль и есть сервлет-контейнер. Изначально сервлеты разрабатывались как java-аналог CGI . Java EE, если я правильно помню историю, это такой очень отдалённый потомок Java Beans, который, в свою очередь, потомок IBM-ского "каркаса" (framework) под кодовым названием "Сан-Франциско".Вот это мне и не нравится. Слишком жесткие рамкиВредно думать, что вы умнее, чем куча разного народа. Иногда вы и вправду можете оказаться умнее, но вероятность такого события слишком мала. Java-платформа работает не магически, а реализует вполне конкретные протоколы и спецификации. Для HTTP-авторизации я сходу помню Basic, Digest и Form-based. Это не считая клиентских сертификатов, которые сложнее развернуть. Там, как бы, немало всяких ньюансов, а вы, надеюсь, собрались разрабатывать именно приложение, а не собирать грабли, по которым уже прошлись не самые глупые люди. С другой стороны, если вам сильно чешется, то открываете документацию и смотрите, что там есть "из низкоуровневого". Но, два против одного, что вам просто хочется хранить логины/пароли в каком-то "удобном месте". Ну так для этого есть понятия "realm" и несколько готовых к употреблению реализаций. Вам, вероятно, подойдёт какойбынить JDBCRealm.я бы предпочел получить в виде пары переменных (или класса, или еще как) ровно то, что ввел пользователь, а дальше самому разбираться, где тут логин, где пароль, и что с ними делать.Освойте концепцию ролей и жизнь станет проще: инфраструктура разберётся с аутентификацией пользователей, а вы сможет решать что этим пользователям можно, а чего - нельзя.Ну на стороне оракла, допустим, есть (хотя есть и нюансы)"Меня опять терзают смутные сомнения", что вы путаете SQL и PL/SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 02:22 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич, 1) Странно в Spring Security полная свобода авторизации, вплоть до написания собственных "костылей". Только документацию читать надо 2) А вот этого лучше не делать. Такой говнокод надо пресекать в зародыше. 3) NamedParameterJdbcTemplate А так идете на spring.io и читаете документацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 06:26 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич, У меня подозрения, что вам надо глянуть обычный сервлет. Там post, get. И фильтры перехватчики томката. Там вы перехватите вообще любой запрос в сыром виде. Еще базовую аутентификацию и форм аутентификацию. Т.е. это не для самых ленивых и хотя бы будете знать что есть контейнер. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 07:22 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Basil A. SidorovJDBCRealm+1 Базовая авторизация в web.xml + роли на сервере и автору этого хватит после магии спринг. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 07:29 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмичможете предложить какую-то последовательность для не очень ленивых, что в какой последовательности изучить, чтобы иметь возможность написать небольшое приложение, которое будет уметь аутентифицировать пользователей, общаться с БД (хотя это я и так вроде умею), обрабатывать POST, GET и ajax-запросы, и обходиться при этом самым минимумом дополнительных фреймворков/библиотек?JSP это маленький APEX. Вы же оттуда пришли)). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 07:33 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич, странные хотелки Весь мир, уже много лет все пихает в ооп. Никанор Кузьмич Миллионы же не ошибаются! Отсюда орм и маппинг http запроса на класс, готовые классы для аутентификации и авторизации. А тебе подавай старье - ручной парсинг POST, ручную работу с JDBC, зы На хера тебе spring? Пиши в перле. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 08:54 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич1) больше свободы в авторизации. Хочу иметь возможность просто получить логин и пароль и дальше делать, что хочется. Лолшто? Никто в здравом уме не хранит пароли и не оперирует ими. Никанор Кузьмич2) немного больше свободы в парсинге урлов. Вчера, например, искал, как обработать POST-запрос, нашел только аннотацию, которая позволяет замапить запрос на какой-то класс. А если у меня нет класса, я хочу тупо получать в один и тот же метод любые POST-запросы и их обрабатывать? Странные вещи вы называете "парсингом урлов". Особенно в контексте POST метода. В Spring MVC нет никакой сложности получить HttpServletRequest и максимальный доступ к отправленным данным через него. Другое дело что это нафиг не нужно, даже с MultiPart запросами. Никанор Кузьмич3) Хочется иметь возможность парсить SQL-запросы с именованными параметрами. То есть если есть такой запрос: Чтобы получать полноценные ответы, нужно задавать полноценные вопросы. А чтобы задавать полноценные вопросы, нужно немного разбираться в терминологии. Потому что у вас "парсинг", похоже на решение любой проблемы. По сути же вопроса JPA чудесно понимает именованные параметры. А голый SQL - нет. Потому что этого не предусмотрено JDBC - фреймверком самого нижнего уровня. Но если вдруг ваш JDBC драйвер понимает именованые параметры, то сложностей быть не должно. Вот только в Spring и Spring Boot это никакого отношения не имеет. Лично вам я бы предложил для начла попробовать разобраться в каше из фреймверков и спецификаций Java, потому как ваши вопросы к Spring Boot отношения не имеют. JEE JDBC JPA Servlet API Spring IoC / Core Spring MVC Spring Data Spring Boot Почитайте обзорно и кратко про каждый из этих "фреймверков". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 09:06 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич, Рекомендую jhipster 5 (react + spribgboot). С уважением, Валентин ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 09:48 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Основы стека java ему нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 10:12 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Basil A. SidorovВредно думать, что вы умнее, чем куча разного народа. Иногда вы и вправду можете оказаться умнее, но вероятность такого события слишком мала. ... Там, как бы, немало всяких ньюансов, а вы, надеюсь, собрались разрабатывать именно приложение, а не собирать грабли, по которым уже прошлись не самые глупые люди.Я в курсе. Давайте предположим, что я знаю, чего хочу, просто не знаю, как. А задача немного нетиповая. Basil A. SidorovJava-платформа работает не магически, а реализует вполне конкретные протоколы и спецификации. Для HTTP-авторизации я сходу помню Basic, Digest и Form-based. Это не считая клиентских сертификатов, которые сложнее развернуть.Спасибо, буду знать. BlazkowiczЛолшто? Никто в здравом уме не хранит пароли и не оперирует ими.Ээээ.... А что вы называете словами "пароль", "хранить" и "оперировать"? Все пароли где-то хранятся. Или вы имели в виду "никто не хранит в незашифрованном виде"? Что-то все равно должно храниться, иначе как вы поймете, что то, что ввел пользователь сейчас, и то, что вводил при регистрации год назад - это одно и то же? Кстати, вот такое сопоставление (того, что пользователь ввел в качестве пароля при регистрации сначала и при логине потом) - это разве не "оперировать"? Basil A. SidorovНо, два против одного, что вам просто хочется хранить логины/пароли в каком-то "удобном месте".Давайте расставим точки над "ё". Вот официальный пример: https://spring.io/guides/gs/securing-web/. Здесь пароль просто захардкодили в тексте. Вот еще пример: http://www.mkyong.com/spring-security/spring-security-form-login-using-database/. Этот товарищ, как я понимаю, нафигачил кучу учебных примеров по спрингу, на каждый второй мой запрос гугл предлагает почитать что-нибудь из его творчества. Вот эти два выше - это "какое-то удобное место"? Мне не особо нравятся предложенные там решения (ну первое - это понятно, это вообще не решение). А примеры получше как-то не особо гуглятся. У меня пока нет каких-то особых предпочтений, где будет мое "удобное место". Ну, допустим, достаточно удобным местом я бы назвал авторизацию по пользователям БД. Исхожу из предположения, что в Генштабе в Оракле и Постгресе не дураки сидят. Или по пользователям всяких корпоративных систем (ну типа как во многих системах реализовано - "чтобы пользоваться этой системой, введите свой логин и пароль для Windows"). ХЗ как это работает, но вроде бы считается идеологически верным решением. Да, я понимаю, что во многих таких случаях "подержать пароль в руках" мне не придется, но это не страшно. На данный момент я просто ищу, в какое место процесса авторизации мне лучше вклиниться, чтобы и не накосячить, и свою задачу решить. Petro123JSP это маленький APEX.Да ну? Вот уж не подумал бы. А апекс чудесен. mad_nazgul2) А вот этого лучше не делать. Такой говнокод надо пресекать в зародыше.Что именно? казинакстранные хотелкиПросто я извращенец. В конце концов, почему другим можно, а мне нельзя? Blazkowicz, Basil A. Sidorov, спасибо за рекомендации, кажется, я теперь что-то начал понимать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 10:33 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич"никто не хранит в незашифрованном виде"? То что хранится в зашифрованном виде можно расшифровать. Поэтому тут вы тоже ошибаетесь. Хранят и соспостовляют хэши, которые не являются ни паролями ни их зашифрованой формой. И чем раньше вы конвертируете пароль в хэш тем меньше вероятность что пароль утечет в оригинальном виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 10:50 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор КузьмичДа ну? Вот уж не подумал бы. А апекс чудесен.ну не спринг же))). Просто в APEX нет ООП. А тут он везде). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:01 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Ну, допустим, достаточно удобным местом я бы назвал авторизацию по пользователям БД. Исхожу из предположения, что в Генштабе в Оракле и Постгресе не дураки сидят. в вебе так никто не делает, потому, что для кажд юзера будет запускаться отдельная сессия в бд. Везде конекшн пул юзают, и все конекты под одним юзером из бд. Никанор КузьмичИли по пользователям всяких корпоративных систем (ну типа как во многих системах реализовано - "чтобы пользоваться этой системой, введите свой логин и пароль для Windows"). ХЗ как это работает, но вроде бы считается идеологически верным решением. это SSO ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:04 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмич, Авторизация по юзверям самого БД в веб не применятся. Так же как в апекс схема разбора и юзверь под нее. Авторизация от винды не нужна т.к. кросплатформенность. Что ещё нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:06 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
казинакНиканор Кузьмич Ну, допустим, достаточно удобным местом я бы назвал авторизацию по пользователям БД. Исхожу из предположения, что в Генштабе в Оракле и Постгресе не дураки сидят. в вебе так никто не делает, потому, что для кажд юзера будет запускаться отдельная сессия в бд. Везде конекшн пул юзают, и все конекты под одним юзером из бд. Ну, иногда, делают. И некоторые JDBC драйвера, ЕМНИП, это умеют. казинакНиканор КузьмичИли по пользователям всяких корпоративных систем (ну типа как во многих системах реализовано - "чтобы пользоваться этой системой, введите свой логин и пароль для Windows"). ХЗ как это работает, но вроде бы считается идеологически верным решением. это SSO Ага. Это ещё раз к вопросу о терминологии, с которой автору темы нужно ознакомится и начать оперировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:07 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор КузьмичНа данный момент я просто ищу, в какое место процесса авторизации мне лучше вклиниться, чтобы и не накосячить, и свою задачу решить. аутентификация и авторизация это не одно и то же первое это когда юзер логинится в систему второе - это когда проверяются права, на запуск метода, например и куда вы хотите вклиниться, и зачем? BlazkowiczНу, иногда, делают. И некоторые JDBC драйвера, ЕМНИП, это умеют. там уметь не надо, просто создавай на лету коннекты под разными юзерами бд но так не делают, т.к. создание сессии в базе ресурсоемкая операция поэтому пулинги и юзают, чтоб сразу сессии запустить, а потом по очереди использовать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:13 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
Никанор Кузьмичmad_nazgul2) А вот этого лучше не делать. Такой говнокод надо пресекать в зародыше.Что именно? Обрабатывать все запросы в одном классе/методе. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:13 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
казинакBlazkowiczНу, иногда, делают. И некоторые JDBC драйвера, ЕМНИП, это умеют. там уметь не надо, просто создавай на лету коннекты под разными юзерами бд но так не делают, т.к. создание сессии в базе ресурсоемкая операция поэтому пулинги и юзают, чтоб сразу сессии запустить, а потом по очереди использовать Я имею ввиду что можно иметь эффективный пул и авторизацию пользователей в БД одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:16 |
|
Помогите выбрать фреймворк
|
|||
---|---|---|---|
#18+
казинаксоздание сессии в базе ресурсоемкая операциятысяча или две работников предприятия потянет. Но мы тут про веб и конечно вы правы что пул и обезличенный юзверь. Хочет, пусть пишет десктоп, клиент сервер с коннектом 8 часов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2018, 11:19 |
|
|
start [/forum/topic.php?fid=59&msg=39671942&tid=2121920]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 327ms |
total: | 498ms |
0 / 0 |