Все вопросы для интервью с Tomcat+Servlet здесь

Java Java EE
Все вопросы для интервью с Tomcat+Servlet здесь

Ниже приведены точки знаний о сервлетах, которые я разобрал:

Пункт знаний на карте Соответствующий контент можно найти в моих других статьях.

Общие вопросы интервью Tomcat

Что такое порт Tomcat по умолчанию и как его изменить

Что такое порт Tomcat по умолчанию и как его изменить

  1. Найдите папку conf в каталоге Tomcat
  2. Перейдите в папку conf и найдите файл server.xml.
  3. Откройте файл Server.xml
  4. Найдите следующую информацию в файле server.xml.
  <Service name="Catalina">
  

    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
  1. Измените порт = "8080" на порт = "8888" и сохраните
  2. Запустите Tomcat и введите http://127.0.0.1:8888/ в адресной строке браузера IE.

Измените его в файле conf/server.xml в домашнем каталоге tomcat., Сменить порт 8080 на 8088 или что-то другое

Какие режимы работы коннектора (оптимизация) есть у Tomcat?

Коннектор tomcat, который имеет несколько режимов работы (оптимизированный)?

  1. bio(blocking I/O)
  2. nio(non-blocking I/O)
  3. apr (переносная среда выполнения Apache/переносная среда выполнения Apache)

Связанные пояснения:

  • bio: Традиционные операции ввода-вывода Java, синхронный и блокирующий ввод-вывод.
  • nio: JDK1.4 начал поддерживать синхронный блокирующий или синхронный неблокирующий ввод-вывод.
  • aio(nio.2): JDK7 начал поддерживать асинхронный неблокирующий IO
  • APR: TOMCAT позвонит основную динамическую библиотеку ссылок HTTP-сервера в виде JNI для обработки операций чтения файлов или передачи сети, тем самым значительно уменьшаетсяTomcat повышает производительность обработки статических файлов

НижеНастройте режим работы Tomcat на режим NIO и настройте параметры, связанные с пулом соединений, для оптимизации.:

    <!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
    <!-- protocol 启用 nio模式,(tomcat8默认使用的是nio)(apr模式利用系统级异步io) -->
    <!-- minProcessors最小空闲连接线程数-->
    <!-- maxProcessors最大连接线程数-->
    <!-- acceptCount允许的最大连接数,应大于等于maxProcessors-->
    <!-- enableLookups 如果为true,requst.getRemoteHost会执行DNS查找,反向解析ip对应域名或主机名-->
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
        connectionTimeout="20000"
        redirectPort="8443

        maxThreads=“500” 
        minSpareThreads=“100” 
        maxSpareThreads=“200”
        acceptCount="200"
        enableLookups="false"       
    />

Режим apr запускать сложнее, подробнее см.:blog.CSDN.net/Ван Лэй_Стоун О...

Для понимания bio, nio, nio.2, пожалуйста, обратитесь к:blog.CSDN.net/упомянул какие старые фото/ах...

Tomcat имеет несколько методов развертывания

  1. Поместите веб-проект непосредственно в веб-приложения, Tomcat автоматически развернет его.
  2. Настройка в файле server.xml<Context>Узел, установите соответствующие свойства
  3. Настройка через Catalina: перейдите в файл conf\Catalina\localhost и создайте файл xml, имя которого совпадает с именем сайта. Способ написания XML для установки.

Вторая точка развертывания:

  • Создание каталога веб-сайта под другой буквой, а также создание каталога WEB-INF и файлов html.

  • Найдите файл /conf/server.xml в каталоге Tomcat.

  • Добавьте следующий код в узел в файле server.xml.path представляет имя веб-проекта, введенное при доступе, а docBase представляет собой абсолютный путь к каталогу сайта.

		<Context path="/web1" docBase="D:\web1"/>

  • Доступ к настроенному веб-сайту


Метод третьей точки развертывания:

  • Перейдите в файл conf\Catalina\localhost и создайте файл xml,Имя файла - это имя сайта.

    这里写图片描述

  • Код файла xml выглядит следующим образом:docBase — это абсолютный путь к вашему веб-сайту.

<?xml version="1.0" encoding="UTF-8"?> 
<Context 
    docBase="D:\web1" 
    reloadable="true"> 
</Context> 
  • Доступ к html-ресурсам на веб-сайте

这里写图片描述

Вопросы для интервью с сервлетом

Жизненный цикл сервлета

Жизненный цикл сервлета?

  • Первый визитСервлет, который мы нашлиinit() и service() вызываются

  • второй визитсервлеты,служба() вызывается

  • В третий раз, чтобы посетить сервлет,или служба() вызывается

  • когда мыВыключите сервер Tomcatкогда,вызывается destroy()!

Жизненный цикл сервлета можно разделить на 5 шагов

  1. загрузить сервлет.当Tomcat第一次访问Servlet的时候,Tomcat будет отвечать за создание экземпляра сервлета
  2. инициализация. При создании экземпляра сервлета TomcatВызовите метод init() для инициализации объекта
  3. Служба обработки. когда браузерсервлет доступаСЕРЛЕТМетод service() будет вызываться для обработки запроса.
  4. разрушать. Когда Tomcat завершает работу или обнаруживает, что сервлет должен быть удален из Tomcat, автоматически вызывается метод destroy().Разрешить экземпляру освободить ресурсы, которые он занимает. Если сервлет не используется в течение длительного времени, он также будет автоматически уничтожен Tomcat.
  5. удалить. Когда сенсорный вызов сервлета уничтожит () метод, дождитесь коллекции мусора. еслиЕсли вам нужно снова использовать этот сервлет, метод init() будет вызван снова для инициализации..
  • Краткое содержание:При каждом доступе к сервлету будет вызываться service(). init() вызывается только при первом доступе к сервлету. destroy() будет вызываться только при закрытии Tomcat.

В чем разница между методом get и методом post

В чем разница между методом get и методом post

Данные оказывают на:

  • Метод GET: параметры, прикрепленные к URL-адресу, ограничены, а объем данных обычно не может превышать 1 КБ.
  • Метод POST: вы можете отправлять данные на сервер в запрошенном содержимом объекта, а объем передаваемых данных неограничен.

В позиции параметра запроса:

  • Метод GET: параметры запроса помещаются после URL-адреса и объединяются в виде ?
  • Метод POST: параметры запроса помещаются в пакет HTTP-запроса.

Использовать:

  • Метод GET обычно используется для получения данных
  • Почтовый метод обычно используется для представления данных
    • причина:
      • Прежде всего, поскольку объем данных, передаваемых методом GET, относительно невелик, он не может передавать большой объем в прошлом.
      • Параметры, отправленные методом POST, легче анализировать в фоновом режиме (китайские данные, отправленные методом POST, также легче обрабатывать в фоновом режиме).
      • Метод GET быстрее, чем метод POST Метод GET быстрее, чем метод POST.Подробнее см.:Блог Woohoo.cn на.com/stray воротник/afraid…

API, связанный с сервлетом

Каковы два параметра методов doGet и doPost

  1. HttpServletRequest: инкапсулирует информацию, связанную с запросом.
  2. HttpServletResponse: инкапсулирует информацию, связанную с ответом.

Есть несколько способов получить значение элемента на странице, поговорим о нем отдельно

  1. request.getParameter() возвращает значение параметра запроса клиента
  2. request.getParameterNames() возвращает перечисление всех доступных имен свойств.
  3. request.getParameterValues() возвращает массив, содержащий все значения параметра

Разница между request.getAttribute() и request.getParameter()

Использовать:

  • запрос. ПолучитьАтрибут(),Обычно используется для получения данных объекта домена запроса.(Перед прыжком поместите данные в объект запроса, используя setAttribute)
  • запрос.получитьпараметр(),Обычно используется для получения параметров, отправленных клиентом.

На данных хранения:

  • запрос .getAttribute () может получить объект objcet
  • request.getParameter() может получать только строки (поэтому он обычно используется для получения параметров, отправленных клиентом)

Разница между переадресацией и переадресацией

Разница между переадресацией и переадресацией

  • Фактическое местоположение другое, адресная строка другая
    • Переадресация происходит на сервере
      • Переадресация прерывается сервером, осторожные друзья обнаружат, что при пересылке,Адресная строка браузера не изменилась, когда я посещаю Servlet111, даже если я перехожу на страницу Servlet222, адрес браузера по-прежнему совпадает с адресом Servlet111. то естьБраузер не знает действие перехода, а переадресация прозрачна для браузера. Из приведенной выше диаграммы последовательности пересылки мы также можем обнаружить, чтоРеализовать пересылку только одного http-запроса,В пересылки объекты запроса и ответа одинаковы. Это также объясняет, почему можно использоватьrequest как объект домена для связи между сервлетами.
    • Перенаправление происходит в браузере
      • Редирект делает браузер, при перенаправлении прыжков,Адрес браузера изменится. Введено, что принцип реализации перенаправления реализуется комбинацией кода состояния ответа и заголовка Location.Это переход на страницу, сделанный браузеромреализовать перенаправлениесделает два http-запроса,Объект поля запроса недействителен, поскольку это не тот же объект запроса.
  • Различное использование:
    • Когда многие люди путаются в переадресации и перенаправлении,Как написать адрес ресурса. Иногда необходимо написать имя приложения, а иногда нет необходимости писать имя приложения. Людей легко запутать. Запомните один принцип:Для сервера пишите прямо из имени ресурса, а для браузера пишите имя приложения
      • request.getRequestDispatcher("/URI имени ресурса").forward(запрос,ответ)
        • При пересылке «/» обозначает корневой каталог этого приложения [zhongfucheng].
      • response.send("/URI веб-приложения/имени ресурса");
        • При перенаправлении "/" представляет каталог веб-приложений.
  • Диапазон URL-адресов, на которые можно перейти, варьируется:
    • Переадресация — это ресурс, который переходы сервера могут перейти только к текущему веб-приложению.
    • Редирект — это прыжок сервера, который может перейти на любой ресурс
  • Различные типы передаваемых данных
    • Объект переадресованного запроса может передавать различные типы данных, в том числе объекты
    • Перенаправление может передавать только строки
  • время прыжка разное
    • При переадресации: когда оператор перехода выполняется, он немедленно переходит
    • Перенаправление: переход выполняется после выполнения всей страницы.

Итак, какой из них использовать для переадресации и перенаправления?

  • Разницу между переадресацией и перенаправлением также можно легко обобщить на основе приведенного выше описания.Переадресация принимает параметры запроса перед пересылкой. Редирект — новый запрос.

Типичные сценарии применения:

  1. Переадресация: доступ к сервлету для обработки бизнес-логики, затем пересылка в jsp для отображения результата обработки, URL-адрес в браузере остается неизменным.
  2. Перенаправление: отправьте форму, перенаправьте на другой jsp после успешной обработки, чтобы предотвратить повторную отправку формы, и URL-адрес в браузере изменился.

Как контейнер tomcat создает экземпляр класса сервлета? Какой принцип использовали?

Как контейнер tomcat создает экземпляр класса сервлета? какой принцип использовался

  1. Когда контейнер запустится, он прочитает файлы web.xml во всех веб-приложениях в каталоге webapps, а затемxml для разбора и чтения регистрационной информации сервлета. Затем загрузите классы сервлетов, зарегистрированные в каждом приложении, и передайтесозданный отражением. (иногда также создается по первому запросу)
  2. При регистрации сервлета добавьте 1. Если это положительное число, оно будет создано в начале, если оно не записано или отрицательное число, оно будет создано в первый раз.

Что такое файлы cookie? В чем разница между сеансом и файлом cookie?

Что такое файлы cookie?

Cookie — это механизм, предложенный организацией W3C и впервые разработанный сообществом netscape.

  • между страницамиВзаимодействие заключается в передаче данных по протоколу HTTP,И протокол HTTPпротокол без сохранения состояния. Что означает протокол без сохранения состояния?После отправки данных соединение между браузером и сервером будет закрыто, и при повторном взаимодействии необходимо будет установить новое соединение..
  • Сервер не смог подтвердить данные пользователя, поэтому W3C выдвинул:Пропуск выдается каждому пользователю, и независимо от того, кто получает доступ, они должны иметь при себе пропуск, чтобы сервер мог подтвердить информацию пользователя из пропуска.. Пассы — это файлы cookie

В чем разница между сеансом и файлом cookie?

  • Сравните с хранилища

    • Файлы cookie могут хранить только строки и кодировать строки, отличные от ASCII, если они должны быть сохранены.
    • Сеанс может хранить данные любого типа, вы можете думать о сеансе как о контейнере.
  • Сравните конфиденциальность и безопасность

    • Файлы cookie хранятся в браузере и видны клиенту.. Информация легко утекает. При использовании файлов cookie лучше всего зашифровать файл cookie.
    • Сессия хранится на сервере и прозрачна для клиента. Нет проблемы утечки конфиденциальной информации.
  • Сравните со сроком годности

    • Файлы cookie хранятся на жестком диске, нужно только установить для атрибута maxAge относительно большое положительное целое число, даже если браузер закрыт, файл cookie все еще существует.
    • Сохранить Сохранить на сервере, установите значение свойства MAXINACTINTINDERVAL, чтобы определить период действия сеанса. И сеанс полагается на файлы cookie с именем jsessiD, свойство максимума Cookie по умолчанию равно -1. Если браузер закрыт, сеанс не умирает с сервера, но он будет недействительным.
  • Из сравнения нагрузки на сервере

    • Сессия хранится на сервере, и каждый пользователь будет генерировать сессию.Если есть много пользователей с одновременным доступом, сессия не может быть использована, и сессия будет потреблять много памяти.
    • Файлы cookie хранятся на стороне клиента. Не занимает ресурсы сервера. Крупные веб-сайты, такие как baidu и Sina, обычно используют файлы cookie для отслеживания сеансов.
  • Сравните с поддержкой браузера

    • Файлы cookie бесполезны, если в вашем браузере отключены файлы cookie!
    • Если браузер отключает файлы cookie, Session может выполнять отслеживание сеанса путем перезаписи URL-адреса.
  • Сравните домены

    • Cookie может установить свойство домена для реализации междоменного
    • Сессия действительна только в пределах текущего доменного имени, и этим доменным именем нельзя похвастаться

Проблемы с безопасностью сервлета

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

в общем:

  1. еслиПеременные должны быть общими для нескольких пользователей, то при обращении к переменнойДобавить механизм синхронизации synchronized (объект) {}
  2. если переменнаяНе нужно делиться,ноОпределяется непосредственно в doGet() или doPost(), Таким образом, не будет проблем с безопасностью потоков.

Проект с открытым исходным кодом, охватывающий все точки знаний о бэкэнде Java (уже 5,8 тыс. звезд):GitHub.com/Zhongf UC очень…

если ты хочешьв реальном времениЕсли вы обратите внимание на мои обновленные статьи и галантерейные товары, которыми я делюсь, поищите в WeChat.Java3y.

Содержимое PDF-документоввсе вручную, если вы ничего не понимаете, вы можете напрямуюспросите меня(В официальном аккаунте есть мои контактные данные).