Ниже приведены точки знаний о сервлетах, которые я разобрал:
Пункт знаний на карте Соответствующий контент можно найти в моих других статьях.
Общие вопросы интервью Tomcat
Что такое порт Tomcat по умолчанию и как его изменить
Что такое порт Tomcat по умолчанию и как его изменить
- Найдите папку conf в каталоге Tomcat
- Перейдите в папку conf и найдите файл server.xml.
- Откройте файл Server.xml
- Найдите следующую информацию в файле server.xml.
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
- Измените порт = "8080" на порт = "8888" и сохраните
- Запустите Tomcat и введите http://127.0.0.1:8888/ в адресной строке браузера IE.
Измените его в файле conf/server.xml в домашнем каталоге tomcat., Сменить порт 8080 на 8088 или что-то другое
Какие режимы работы коннектора (оптимизация) есть у Tomcat?
Коннектор tomcat, который имеет несколько режимов работы (оптимизированный)?
- bio(blocking I/O)
- nio(non-blocking I/O)
- 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 имеет несколько методов развертывания
- Поместите веб-проект непосредственно в веб-приложения, Tomcat автоматически развернет его.
- Настройка в файле server.xml
<Context>
Узел, установите соответствующие свойства - Настройка через 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 шагов
- загрузить сервлет.当Tomcat第一次访问Servlet的时候,Tomcat будет отвечать за создание экземпляра сервлета
- инициализация. При создании экземпляра сервлета TomcatВызовите метод init() для инициализации объекта
- Служба обработки. когда браузерсервлет доступаСЕРЛЕТМетод service() будет вызываться для обработки запроса.
- разрушать. Когда Tomcat завершает работу или обнаруживает, что сервлет должен быть удален из Tomcat, автоматически вызывается метод destroy().Разрешить экземпляру освободить ресурсы, которые он занимает. Если сервлет не используется в течение длительного времени, он также будет автоматически уничтожен Tomcat.
- удалить. Когда сенсорный вызов сервлета уничтожит () метод, дождитесь коллекции мусора. еслиЕсли вам нужно снова использовать этот сервлет, метод 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
- HttpServletRequest: инкапсулирует информацию, связанную с запросом.
- HttpServletResponse: инкапсулирует информацию, связанную с ответом.
Есть несколько способов получить значение элемента на странице, поговорим о нем отдельно
- request.getParameter() возвращает значение параметра запроса клиента
- request.getParameterNames() возвращает перечисление всех доступных имен свойств.
- 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 веб-приложения/имени ресурса");
- При перенаправлении "/" представляет каталог веб-приложений.
- request.getRequestDispatcher("/URI имени ресурса").forward(запрос,ответ)
- Когда многие люди путаются в переадресации и перенаправлении,Как написать адрес ресурса. Иногда необходимо написать имя приложения, а иногда нет необходимости писать имя приложения. Людей легко запутать. Запомните один принцип:Для сервера пишите прямо из имени ресурса, а для браузера пишите имя приложения
-
Диапазон URL-адресов, на которые можно перейти, варьируется:
- Переадресация — это ресурс, который переходы сервера могут перейти только к текущему веб-приложению.
- Редирект — это прыжок сервера, который может перейти на любой ресурс
-
Различные типы передаваемых данных
- Объект переадресованного запроса может передавать различные типы данных, в том числе объекты
- Перенаправление может передавать только строки
-
время прыжка разное
- При переадресации: когда оператор перехода выполняется, он немедленно переходит
- Перенаправление: переход выполняется после выполнения всей страницы.
Итак, какой из них использовать для переадресации и перенаправления?
- Разницу между переадресацией и перенаправлением также можно легко обобщить на основе приведенного выше описания.Переадресация принимает параметры запроса перед пересылкой. Редирект — новый запрос.
Типичные сценарии применения:
- Переадресация: доступ к сервлету для обработки бизнес-логики, затем пересылка в jsp для отображения результата обработки, URL-адрес в браузере остается неизменным.
- Перенаправление: отправьте форму, перенаправьте на другой jsp после успешной обработки, чтобы предотвратить повторную отправку формы, и URL-адрес в браузере изменился.
Как контейнер tomcat создает экземпляр класса сервлета? Какой принцип использовали?
Как контейнер tomcat создает экземпляр класса сервлета? какой принцип использовался
- Когда контейнер запустится, он прочитает файлы web.xml во всех веб-приложениях в каталоге webapps, а затемxml для разбора и чтения регистрационной информации сервлета. Затем загрузите классы сервлетов, зарегистрированные в каждом приложении, и передайтесозданный отражением. (иногда также создается по первому запросу)
- При регистрации сервлета добавьте 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 может установить свойство домена для реализации междоменного
- Сессия действительна только в пределах текущего доменного имени, и этим доменным именем нельзя похвастаться
Проблемы с безопасностью сервлета
Поскольку сервлет является одноэлементным, когда несколько пользователей обращаются к сервлету,Сервер создаст поток для каждого пользователя.Проблемы безопасности потоков возникают, когда несколько пользователей одновременно обращаются к общим ресурсам сервлета..
в общем:
- еслиПеременные должны быть общими для нескольких пользователей, то при обращении к переменнойДобавить механизм синхронизации synchronized (объект) {}
- если переменнаяНе нужно делиться,ноОпределяется непосредственно в doGet() или doPost(), Таким образом, не будет проблем с безопасностью потоков.
Проект с открытым исходным кодом, охватывающий все точки знаний о бэкэнде Java (уже 5,8 тыс. звезд):GitHub.com/Zhongf UC очень…
если ты хочешьв реальном времениЕсли вы обратите внимание на мои обновленные статьи и галантерейные товары, которыми я делюсь, поищите в WeChat.Java3y.
Содержимое PDF-документоввсе вручную, если вы ничего не понимаете, вы можете напрямуюспросите меня(В официальном аккаунте есть мои контактные данные).