170 похожих чатов

Всем доброе утро! Простое web-приложение. Servlet. Пересмотрел множество примеров, повторял код.

Сработал наконец только один вариант, причем попробовал его как на windows, так и на Linux. Но возникли вопросы. 1. Есть варианты когда servlet описывают в web.xml , там указывается <servlet-class>. Этот класс в разных примерах разный, например это может быть:org.springframework.web.servlet.DispatcherServlet или org.apache.catalina.servlets.DefaultSer или ещё что-то ещё непонятное типа com.devcolibri.servlet.MainServlet. как я понял эти классы все равно подчиняются основному HttpServlet, как бы может дополняя его своим функционалом. Но как решается какой использовать? Получается таких классов много их пишут различные разработчики и используются те классы которые удобнее или больше нравятся?

18 ответов

79 просмотров

Привет. Сервлет это условно связующее звено между url адресом и классом, который обработает запрос. Свяжи между собой <servlet-mapping> и <servlet> через <servlet-name>: по указанному в маппинге <url-pattern> адресу запрос будет обработал соответствующим <servlet-class>. <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>org.example.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/welcome</url-pattern> </servlet-mapping> Здесь запрос на адрес localhost/welcome будет обработан классом org.example.HelloServlet. Этот класс, в свою очередь, должен получить какую-то информацию от самого сервера (томкат например), и поэтому class HelloServlet extends HttpServlet.

Sergey- Автор вопроса
Alex F
Привет. Сервлет это условно связующее звено между ...

Спасибо, за ответ. Я с этим уже разобрался. Мне стало непонятно почему используют то один класс <servlet-class>, то другой в разных примерах, указывая эти классы в web.xml. а иногда пишут вообще свой класс сервлета на основе глобального класса HttpServlet.

Sergey
Спасибо, за ответ. Я с этим уже разобрался. Мне ст...

Чаще всего так делают чтобы передать управление логикой какому-то фреймворку. Например посмотрим на web.xml для работы со спрингом: <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/dispatcher-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> и его маппинг <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> То есть мы говорим, что все запросы ("/" -> корень сайта условно) должны быть обработаны спринговым классом DispatcherServlet. Который ты уже конфигурируешь отдельно с помощью другого xml файла.

в жавастарт!

Sergey- Автор вопроса
Alex F
Чаще всего так делают чтобы передать управление ло...

Как я заметил, когда такая конфигурация в проекте, то в pom.xml ничего о servlet нету. В pom.xml остаются зависимости например spring-core, spring-webmvc итд. Но я встречал другие примеры когда там , в pom.xml внедряют такое: <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> А web.xml например такой внешний класс , как в вашем примере. org.springframework.web.servlet.DispatcherServlet Вопросы возникают наверное дальше, сервлет допустим выбрали и внедрили. Или сервлеты, тоже видел. Дальше нужно отлавливать событие в классе. Там , в примерах используют аннотацию @Controller. В общем не выходило, класс не возвращал нужный хоть html хоть jsp . Или не отрабатывал шаблонизатор org.springframework.web.servlet.view.InternalResourceViewResolver , ведь в классе я @Controller, в методе с аннотацией @GetMapping("/somethingLink") возвращалось имя файла(html например ) ответа. Короче, ребята у меня сработало только тогда когда класс был создан на основе extend HttpServlet. Никакие описанные в web.xml классы <servlet-class> не отрабатывали. И сработало только когда возвращался нормальный ответ- объект , кажись response.

Sergey- Автор вопроса
Artem
парень. в жавастарт

Да там не отвечают, говорю же, парень. Там матеряться. Там вот какие вопросы задают. Спасибо за парня, мне 43.

Sergey
Да там не отвечают, говорю же, парень. Там матерят...

ну так напиши Alex F в личку (раз он рад тебе помочь), сервлеты (особенно хмл) для конфигурации уже давно никто не пользует

Sergey- Автор вопроса
Artem
ну так напиши Alex F в личку (раз он рад тебе помо...

В личку, конечно можно, парень, но это отменяет смысл группы. Я же нашел ваше сообщество, все прочитал, отправился в java start. Там просто не ответят мне, там обсуждают классы dog и cat. Когда я спрашиваю почему не работает, мне говорят, не знаю у меня другая версия, используй мой код.

Sergey
В личку, конечно можно, парень, но это отменяет см...

эта группа немного другого уровня. ты почитай выше твоих сообщений. про брокеры, про реактор и тд. ps. я удивлён что Alex F ответил более развернуто.

Sergey- Автор вопроса
Artem
эта группа немного другого уровня. ты почитай выше...

Ок, тогда мне не подходят обе. Все нормально. Всех благ.

Sergey- Автор вопроса
Artem
ну так напиши Alex F в личку (раз он рад тебе помо...

Учту, попробую все на аннотациях сделать.

Sergey
Как я заметил, когда такая конфигурация в проекте,...

Советую почитать про front controller. В контексте Спринга можно полистать их доку и сайт baeldung)

Sergey- Автор вопроса
Daniiλ Shreyder
Советую почитать про front controller. В контексте...

Отличный совет, уже читаю , начало внятное👍. https://www.baeldung.com/java-front-controller-pattern

Daniiλ Shreyder
Советую почитать про front controller. В контексте...

Это прыжок через три ступени.. Ему самые основы нужны, условно хелловорлд, а ты уже паттерны предлагаешь.

Alex F
Это прыжок через три ступени.. Ему самые основы ну...

Я увидел, что Сергей начал смотреть Спринг, ActionServlet и прочую историю. В связи с этим у него возникли вопросы, а почему там какая-то индерекция, контроллеры и проч. Фронт Контроллер - это просто общее описание этого подхода - сервлет ест все запросы и абстракции самого фреймворка, а не сервлет стека, уже сами разруливают обработку запроса

Daniiλ Shreyder
Я увидел, что Сергей начал смотреть Спринг, Action...

Ты ответил как раз в духе про) поэтому ему и говорили идти в старт)

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта