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 |


