import javax. servlet. http. HttpServlet;

import javax. servlet. http. HttpServletRequest;

import javax. servlet. http. HttpServletResponse;

/**

*

* @author dmitrii. leontiev

*/

public class FirstServlet extends HttpServlet {

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

request. setCharacterEncoding("Cp1251");

// Устанавливаем MIME

response. setContentType("text/html;charset=UTF-8");

PrintWriter out = response. getWriter();

out. println("<html><head>");

out. println("<title>Мой первый сервлет</title></head><body>");

out. println("<h2>Введите информацию о себе:</h2>");

out. println("<form method=\"post\" action=\"" + request. getContextPath() + "/firstservlet\">");

out. println("<table border=\"0\"><tr><td align=\"top\">");

out. println("Имя:</td> <td valign=\"top\">");

out. println("<input type=\"text\" name=\"firstname\" size=\"20\">");

out. println("</td></tr><tr><td valign=\"top\">");

out. println("Фамилия: </td> <td valign=\"top\">");

out. println("<input type=\"text\" name=\"lastname\" size=\"20\">");

НЕ нашли? Не то? Что вы ищете?

out. println("</td></tr><tr><td valign=\"top\">");

out. println("E-Mail: </td> <td valign=\"top\">");

out. println("<input type=\"text\" name=\"email\" size=\"20\">");

out. println("</td></tr><tr><td valign=\"top\">");

out. println("<input type=\"submit\" value=\"Отправить\"></td></tr>");

out. println("</table></form>");

out. println("</body></html>");

}

@Override

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

request. setCharacterEncoding("Cp1251");

Enumeration paramNames = request. getParameterNames();

String parName;

boolean emptyEnum = false;

if (!paramNames. hasMoreElements()) {

emptyEnum = true;

}

response. setContentType("text/html;charset=UTF-8");

PrintWriter out = response. getWriter();

out. println("<html><head>");

out. println("<title>Отправленные параметры</title></head><body>");

if (emptyEnum) {

out. println("<h2>Запрос не содержит параметров</h2>");

} else {

out. println("<h2>Это значения переданных параметров:</h2>");

}

while (paramNames. hasMoreElements()) {

parName = (String) paramNames. nextElement();

out. println("<strong>" + parName + "</strong> : " + request. getParameter(parName));

out. println("<br />");

}

out. println("</body></html>");

}

}

Как видно из примера, методы doGet() и doPost() могут вызывать исключения ServletException и IOException. Сервлет может вызвать IOException, поскольку вызов метода response. getWriter() (как и метода PrintWriter. close()) может вызвать это исключение. Методы doGet() и doPost() могут вызывать исключение ServletException, чтобы сигнализировать о возникновении ошибки в ходе обработки запроса.

Итак, сервлет написан, осталось теперь проверить, как он работает.

Для того, чтобы запустить сервлет, нам нужно отредактировать дескриптор развертывания. Дескриптор развертывания – очень важная часть web-приложения. В нем, в кратком виде, содержатся требования web-приложения. Его можно прочитать в большинстве XML-редакторов. Web. xml файл – это место, где вы:

·  Регистрируете и создаете отображение URL на ваши сервлеты;

·  Регистрируете и задаете любые фильтры и слушатели приложения;

·  Задаете начальные параметры контекста в виде пар имя/значение;

·  Конфигурируете страницы ошибок;

·  Указываете начальные файлы приложения;

·  Задаете время простоя сеанса (тайм-аут);

·  Задаете настройки безопасности, управляющие тем, кто к каким web-компонентам может обращаться.

И это только часть тех настроек, которые можно задать в web. xml.

Наше приложение web. xml находится в Веб-страницы/WEB-INF/. Откройте его в NetBeans и перейдите в режим правки XML.

Затем добавьте внутрь тега web-app следующие строки:

<servlet>

<servlet-name>FirstServlet</servlet-name>

<servlet-class>ru. topcode. testserv. FirstServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>FirstServlet</servlet-name>

<url-pattern>/firstservlet</url-pattern>

</servlet-mapping>

Теперь нажмите F6. Ваше приложение должно запуститься, а на экране вы увидите все тот же “Hello World!”. Добавьте в URL firstservlet так, чтобы получился следующий адрес: /httplocalhost:8084/test-servlet/firstservlet и перейдите по нему.

Если вы все выполняли по инструкции, то на вашем экране должно быть примерно следующее:

Рисунок 7.1 – Результат примера

Теперь заполните текстовые поля и нажмите “Отправить”. Если вы все сделали правильно, то должны наблюдать следующий результат:

Рисунок 7.2 – Результат отправки данных

XML. Основные теги

Код XML обычно начинается со следующей строки:

<?xml version="1.0" encoding="UTF-8"?>

Это декларация XML, сообщающая браузеру, что данный документ построен в соответствии с правилами синтаксиса XML и в кодировке utf-8.

XML - это язык, предназначенный для создания других языков разметки, так называемый метаязык. Сам по себе он очень прост и не содержит ни одного тега, а всего лишь несколько общих правил. Например:

В XML строго соблюдаются правила вложения элементов – первый открытый элемент должен быть закрыт последним.
Например:

<strong>Так делать <i>нельзя</strong></i>
<strong>А так <i>можно</i></strong>

Обязательно использование закрывающего элемента. Например, если еще в HTML вы могли позволить себе вот такой код:

<p>Раз параграф.
<p>Два параграф.
<p>Три параграф и переход <br>

То в XHTML, который является реализацией XML, код должен выглядеть только так:

<p>Раз параграф.</p>
<p>Два параграф.</p>
<p>Три параграф и переход <br /></p>

Обратите внимание, даже одиночный тег <br /> закрывает сам себя при помощи «/». Такая запись равносильна двум открывающему и закрывающему тегам идущим подряд: <br></ br>.

xml version="1.0" означает, что мы пользуемся этими и другими правилами XML версии 1.0.

encoding="utf-8" означает, что используется набор символов utf-8.

<web-app version="2.5" xmlns="http:///xml/ns/javaee"

xmlns:xsi="http://www. w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http:///xml/ns/javaee

http:///xml/ns/javaee/web-app_2_5.xsd">

Эти строки тоже являются шаблоном XML объявляющим схему, используемую для XML-файла, и другую информацию.

Тег <servlet> два вложенных тега <servlet-name> определяет логическое имя сервлета, а <servlet-class> указывает класс Java, определяющий сервлет.

Тег <servlet-mapping> также содержит два вложенных тега: <servlet-name> соответствует значению аналогичного тега внутри тега <servlet>, а <url-pattern> устанавливает шаблон URL, для которого будет выполнятся сервлет.

В ответ на пользовательский запрос сервлетt возвращает страницу HTML, на которой отображаются все атрибуты сессии, время создания и последнего доступа, идентификационный номер сессии и время инвалидации (жизни) сессии. Это время можно задать с помощью тега session-config в виде:

<session-config>

<session-timeout>30</session-timeout>

</session-config>

Где время ожидания задается в минутах.

Тег <welcome-file-list> определяет, к какому файлу непосредственно будет обращаться пользователь, когда он вводит URL, оканчивающийся в корневом контексте приложения, и не указывает пользовательский корневой контекст.

Java Server Pages (JSP)

JSP (Java Server Pages) — технология, позволяющая веб-разработчикам легко создавать содержимое, которое имеет как статические, так и динамические компоненты. По сути, страница JSP является текстовым документом, который содержит текст двух типов: статические исходные данные, которые могут быть оформлены в одном из текстовых форматов (HTML, XML), и JSP элементы, которые конструируют динамическое содержимое.

JSP — одна из высокопроизводительных технологий. Контейнеры сервлетов, способные исполнять JSP страницы, написаны на языке Java, который может работать на различных платформах. JSP страницы загружаются на сервере, а весь код страницы транслируется в java код сервлета, и затем компилируется в байт-код виртуальной машины java (JVM).

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4