Java HTTP сервер

Никак не могу сделать HTTP сервер на Java. Мне нужно чтобы сервер мог слушать порт и разные пути, например:

localhost:4040/test

localhost:4040/send

localhost:4040/a/b/c

Чтобы я мог обрабатывать как GET так и POST запросы. И как получить русские символы из InputStream в котором храниться тело POST запроса И также сервер должен быть многопоточный. Я нахожу только что-то одно в решениях, только многопоточность, только GET запросы. Можно пример кодом, или репозиторием, как все это сделать?


Ответы (1 шт):

Автор решения: KoVadim

Разбейте свою задачу на несколько более мелких. И решайте их постепенно. Вначале создайте веб сервер, который сможет хоть как то ответить hello-world. Посмотрите пример здесь, например - https://stackoverflow.com/questions/3732109/simple-http-server-in-java-using-only-java-se-api или здесь Как реализовать обработку http запросов get/post/put/delete с использованием com.sun.net.httpserver.HttpServer?

Там есть как возможность использовать встроенный, так и различные сторонние библиотеки.

И как получить русские символы из InputStream в котором храниться тело POST запроса

А здесь у Вас сломано понимание. Нет никаких особых русских символов. Есть байты (то, как оно хранится) и кодировки - правила, которые преобразовывают эти байты в символы и шрифты, которые их уже отрисовывают (грубо конечно, но думаю, будет чуточку понятнее). А вот понятны ли они пользователю будут - это совсем другой вопрос. Если отправляющая сторона корректно закодирует, а принимающая корректно раскодирует, то все будет работать. Если сомневаетесь, используйте везде utf-8. А InputStream в принципе абсолютно побоку, какие байтики передавать. То есть, если в файл можете сохранить, что бы потом в текстовом редакторе открыть и оно работает, то все будут работать.

И также сервер должен быть многопоточный

для начинающих это абсолютно не важно. Сервер может и на одном потоке аккуратно разруливать все Ваши запросы.

→ Ссылка