LINUX.ORG.RU
ФорумTalks

А как на Java вообще люди в вебе программируют? Это реально такой мазохизм?

 ,


0

1

Сунулся я в чужой Java код.

Задача стояла простенькая: на localhost поднять http-сервер, который обслужит одну формочку.

ну и заглянул в код, там разработчик что делает:

  • берет Get-query (если Get)
  • берет Body (если Post)
  • сплитает это все по символу
    &
  • парсит с URI-escape'ингом
  • собирает коллекцию param'ов итп

когда я задал вопрос гуглу о том как штатными средствами получить param вебформы на java (из HttpExchange) в надежде получить готовую либу которая есть во всех языках всех веб фреймоврков что я видел, то я получил море ссылок вроде

и так далее. Везде все трахаются с парсингом/сплитом строк. Это в XXI-м веке.

Разработчик который писал тот код что я исследовал на мои вопросы сказал что есть де какая-то либа гугла на эту тему, но она не пропускает всякие кавычки, а пробелы заменяет подчеркиваниями итп. То есть тоже какой-то велосипед.

В итоге ёжики программисты Java все копипастят друг у друга кактусы велосипеды из проекта в проект.

Скажите это в мире Java правильно, так и быть должно? или я что-то недогуглил? Поэтому Java занимает ТОП обычно в популярности языков, я правильно понимаю?

★★

А как на Java вообще люди в вебе программируют? Это реально такой мазохизм?

LINUX.ORG.RU

h578b1bde ★☆
()

И разбор форм и валидация лет 15-20 уже делаются автоматически.

Но можно и как в старые добрые времена вручную разобрать.

BTW, уже лет 5 браузер и клиент обмениваются JSON

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 3)

Какие-то у тебя истории одна офигительней другой - про вебсервер, про Азов и бердянское море...

Начнем с того, что нормальные вебпогромисты на жаве сервер не пишут - для этого есть томкет и иже с ним.

svr4
()

Если у тебя Java и HTTP, то почему не сервлеты? Может, они какие-то разные бывают, но когда мне понадобилось сделать аналогичный скрипт, это особых проблем не составило:

import java.io.*;
import java.util.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class DumpServlet extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException
    {
        PrintWriter out = res.getWriter();
        for (Enumeration<String> e = req.getParameterNames(); e.hasMoreElements();) {
            String pname = e.nextElement();
            out.println(pname + " = " + req.getParameter(pname));
        }

        // аналогично для Cookie[] cookies = req.getCookies();

        out.close();
    }
}
i-rinat ★★★★★
()

Если использовать JodaDateTimeFormatAnnotationFormatterFactory, причём создавать их с помощью AbstractSingletonProxyFactoryBean, всё резко упростится.

utf8nowhere ★★★
()

Ты ничего не понимаешь! Это ынтырпрайз!

Igron ★★★★★
()

Подробности не читал, но да. Java в вебе - это реальный мазохизм. Когда я последний раз это пробовал, выяснилось, что там нет штатных средств для работы с загружаемыми файлами. Т.е. сначала надо выбрать либу для работы с файлами, потом её попробовать, понять что она кривая, попробовать другую и т.д. Больше я эту жабу не трогал. Нервы дороже.

WARNING ★★★★
()

как штатными средствами получить param вебформы на java

всех веб фреймоврков

тупишечка.

Rastafarra ★★★★
()
Ответ на: комментарий от WARNING

Внезапно, любой веб-фреймворк может загружать/отдавать файлы. А писать веб на чистых сервлетах - это надо особое настроение, с ним и обработка файлов пишется на ура:)

alchemist
()
Ответ на: комментарий от alchemist

Ну мне как бы не нужен был фреймворк. Простая задача - принять от пользователя файло и положить его куда-то там. Зачем тут фреймворк? Я ожидал что есть штатные средства в языке.

WARNING ★★★★
()
Ответ на: комментарий от WARNING

Ну тогда

Part filePart = request.getPart("file");
String filename = Paths.get(filePart.getSubmittedFileName()).getFileName().toString();
InputStream is = filePart.getInputStream();
Вроде ничего сложного.

alchemist
()

Скажите это в мире Java правильно, так и быть должно?

Нет.

или я что-то недогуглил?

Да.

Поэтому Java занимает ТОП обычно в популярности языков, я правильно понимаю?

Раньше этот топ был из-за апплетов и отчасти мобилок. Сейчас за счет андроида. Ибо таких девайсов в два раза больше, чем ваши винды, линухи и маки вместе взятые.

В итоге ёжики программисты Java все копипастят друг у друга кактусы велосипеды из проекта в проект.

Нет, основная идея не использовать стандартные JDK недофреймворки. Вместо этого подбираются фреймворки под твои задачи на стороне. Как только это поймешь и сможешь подбирать фреймворки правильно - из джава-джуна превратишься в джава-сеньёра и перестанешь ныть на форумах.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 2)
Ответ на: комментарий от TheAnonymous

В жаве есть нормальный for, однако req.getParameterNames() возвращает Enumeration который им не принимается и вообще является довольно странной штукой.

alchemist
()

А шо, ЯП общего назначения из коробки обязан это уметь?
Наверное лучше использовать веб-фреймворк предназначенный для этого, ну или если задача простая и хочется секса, то с помощью изоленты приладить пару либ(или свое написать).
Я просто не понимаю твоего пригара.

ritsufag ★★★★★
()

Кто как хочет, так и пишет. Я не помню, когда я последний раз парсил что-то на джаве, но возможность, конечно, есть. Я думаю, твоя проблема в com.sun.net.httpserver. Не надо использовать эту библиотеку, возьми любую популярную.

Legioner ★★★★★
()
Ответ на: комментарий от WARNING

Я ожидал что есть штатные средства в языке.

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

Legioner ★★★★★
()

Будучи вынужден погрузиться в это после ~20 лет относительно успешного уворачивания от, я нахожу, что «всё» таки уже есть, но с особенностями: оно находится на пару уровней абстракции глубже, чем «нужно»(*), замаскировано малопонятным(*) новоязом и часто огорожено вырвиглазным(*) XMLем.

(*) = с точки зрения т.н. «нормального» человека. Нам непонятно, почему это должно быть так, и мы прекращаем поиск за пару шагов до «правильного» ответа. Если не боишся заработать джаву и зумль головного мозга, ныряй, там неглубоко.

DonkeyHot ★★★★★
()

Тред ниасиляторов ниасиливших прочитать документацию по servlet?

unt1tled ★★★★
()
Ответ на: комментарий от WARNING

Java — язык для кофеварок. Естественно, штатных средств работы с вебом там нет. Бери какой-нибудь фреймворк и вперёд.

Miguel ★★★★★
()
Ответ на: комментарий от WARNING

Я ожидал что есть штатные средства в языке.

А зачем для такой специфической задачи иметь стандартные средства в языке?

Zenom ★★★
()
Ответ на: комментарий от DonkeyHot

Если не боишся заработать джаву и зумль головного мозга, ныряй, там неглубоко.

И тем не менее, Java-экосистема весьма всеобъемлюща и занимает лидирующие позиции во многих областях. Именно поэтому моим основным инструментом сейчас является Scala. Мощь мира Java + нормальный язык на выходе дают один из самых удобных подходов.

Zenom ★★★
()

мазохизм + шизофрения = java

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от foror

Как только это поймешь и сможешь подбирать фреймворки правильно - из джава-джуна превратишься в джава-сеньёра и перестанешь ныть на форумах.

То есть ты хочешь сказать что требования к джава-сеньору равны требованиям к выпускнику ПТУ?

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от foror

Как только это поймешь и сможешь подбирать фреймворки правильно

да мне не надо.

я ж говорю: чуток по необходимости порылся в чужом коде: простейший серверок для тестов саутсорсили (нужно чтоб на localhost на такой-то роут по http так-то ответил): он там стал грохаться, как запятая в урле появилась, ну и я поглядел внутЫрь.

А там парсинг руками. Сразу что сделал - загуглил по ключевым словам «ява», «веб-форма», «параметр» (только по английски)

и наткнулся на то что парсить руками эту хрень - чуть ли не традиционный way в Java.

rsync ★★
() автор топика
Ответ на: комментарий от Zenom

весьма всеобъемлюща и занимает лидирующие позиции

А вирусом герпеса заражено 95% человеков.

Мощь мира Java + нормальный язык

TC недоумевал по поводу трудности поиска нужных либ; замена языка на это не должна сильно влиять, т.к. они и составляют «мощь мира ява». Или я не правильно понял, из чего она состоит? или нормальный язык как-то умудряется этот ужас заворачивать в красивую обёртку?

DonkeyHot ★★★★★
()
Ответ на: комментарий от rsync

чуть ли не традиционный way в Java

Да ладно, если авторы тогда не поняли, как это правильно делается «тут», ты ничего с этим не сделаешь, кроме выбросить и написать новое. И задавая те же вопросы, что они тогда, ты получишь те же ответы - потому, что в этом(выбранном «невкурившими» авторами) направлении ресурсы не текут, и жизни нет. Ибо где-то есть более идиоматичное/пропиаренное/удобное/whatewer, официально правильное направление.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

Scala и сама обросла неплохими библиотеками и фреймворками, но в случаях, когда нужного не находится, да

нормальный язык как-то умудряется этот ужас заворачивать в красивую обёртку

Если речь не о тоннах XML-конфигов, конечно. Но с этим сталкиваться не приходилось.

Zenom ★★★
()
Ответ на: комментарий от DNA_Seq

Я не знаю какое у тебя ПТУ, но если там рассказывают про паттерн-фреймворк Disruptor и как оно работает на нижнем уровне и когда его лучше применить и с каким типом блокировок. Или если объясняют когда лучше использовать ForkJoinPool, а когда отказаться. И в таком же духе еще про +100500 различных техник, библиотек и фреймворков, то да твой ПТУ действительно крут. Он даже круче большинства российских вузов вместе взятых. А твои вузы, так видимо сразу выпускают гигантов мысли computer science - нобелевских лауреатов?

P.S. Надеюсь, для тебя фреймворк != веб-фреймворк?

foror ★★★★★
()
Ответ на: комментарий от foror

Сразу видна профдеформация жабокодера. Не умение понимать смысл вопроса и мыслить общими категориями. Как сантехник, у которого все крутится вокруг метизов и патрубков.

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

Сразу видно теоретика, думающий, что звание сеньора крутится только вокруг заковыристых формул и компсайнса. Да и на просторах этих ваших интернетов таких умников хватает. ЧСВ через край льёт - Spring и все эти веб-фреймворки - раз плюнуть и ниже их достоинства. А глянуть на код таких деятелей, так какой-нибудь программист от ПТУ лучше напишет.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)

Ну я в сервисе на Perl такое видел. При том, что модулю CGI.pm лет чуть меньше, чем мне. Хипстота везде может оказаться.

Xellos ★★★★★
()
Ответ на: комментарий от foror

Где я такое говорил? Опять у тебя ложная дилемма. Характерный пример того как кодинг на жабе приводит к шизофрении.

DNA_Seq ★★☆☆☆
()

когда я задал вопрос гуглу о том как штатными средствами получить param вебформы на java (из HttpExchange) в надежде получить готовую либу которая есть во всех языках всех веб фреймоврков что я видел, то я получил море ссылок вроде

Так это самый стандартный миф любого компилируемого ЯП. Почему-то все пишут что «вот у нас на любой чих есть любые библиотеке» а на деле ничего такого нет. Это и к жабе и к говнодотнету относится

Siado ★★★★★
()
Ответ на: комментарий от DNA_Seq

Этот прием называется экстраполяция... Впрочем, тяжело говорить с человеком, фантазия которого ограничивается плевками оскорблений и унижении собеседника. Положительная информация сводится к нулю, только рост энтропии.

foror ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.