Я новичок в java web dev. Я провел свое исследование, но все еще не мог понять это самостоятельно.
Я пытаюсь проанализировать проект, он объединяет spring, struts и hibernate. Spring для POJO и разработки базовых приложений, struts, по-видимому, используется для обработки запросов и более "веб-" части проекта, в то время как hibernate вместе с hql используется для взаимодействия с базой данных.
Мне было очень, очень любопытно, как работает поток информации, особенно для метода публикации. В результате длительных, но полезных исследований выяснилось, что после выхода из туннеля TLS / SSL расшифрованные запросы http (расшифрованные, поэтому часть «s», вероятно, больше не существует, lol) (которые являются текстами ascii) будут отправлены в контейнер для объектов java (созданных из классов java, вероятно, скомпилированных). И эти объекты обычно называют сервлетами (поправьте меня, если я ошибаюсь).
Загадочная часть всплывает, когда я пытаюсь понять, как контейнер решает, к какому сервлету он передает запросы. Опять же, при исследовании выяснилось, что он обычно обрабатывается конфигурационным файлом с именем web.xml, но, как ни странно, я не смог найти ни одного тега в этом файле, как предполагалось, не говоря уже о сервлете с именем, которое соответствует "target". "имя, указанное в свойстве действия, как показано ниже:
<form action = "<%=context %>/handler/register" method = "post">
Тем не менее, весь проект отлично работает на сервере Tomcat. единственный вывод, который я могу сделать, состоит в том, что должны быть другие способы настройки «контейнера Java-объекта» на сервере tomcat для обработки пользовательских запросов. Какие они? / Что это?
Также в моем понимании могло быть много неправильного понимания, например вся часть java-class-object, поправьте меня, если я ошибаюсь, будьте добры.
Здравствуйте, спасибо за ваш ответ, если я могу выбрать только 1, я бы сказал, что это номер 1, как, черт возьми, контейнер знает, какой serverlet передать только что полученный запрос. Я знаю один стандартный способ сделать это - использовать тег <serverlet> и определить все в web.xml, но в моем проекте web.xml такого нет.
Как выглядит веб-структура / структура папок вашего приложения. Это может помочь? stackoverflow.com/questions/3106452/…
Вам действительно стоит прочитать спецификация сервлета. Он вполне читабелен и ответит на все вопросы, поставленные выше.
Начиная с версии 3.0 спецификации сервлетов, вы также можете использовать аннотации, чтобы сообщить серверу, где находятся ваши сервлеты.
В коде вы ищете что-то вроде:
@WebServlet("/handler/register")
public class SomeRandomServlet extends HttpServlet
Непонятно, какую часть вы хотите исследовать больше? Можете ли вы помочь понять, какой из них вы хотите знать 1. Как контейнер разрешает запрос? 2. Как сервлет или серверный компонент настраивается в вашем сценарии spring + strut + hibernate? 3. Как действие формы html / UI перенаправляется на метод post, определенный для сервлета, отображаемого с помощью обработчика / регистра?