Настройка сервера Tomcat, создание проекта и написание первого сервлета

Практическое занятие 1.

 

Настройка сервера Tomcat:

 

1 Загрузите Apache Tomcat 8.0.36

(http://tomcat.apache.org/download-80.cgi#8.0.36 )

2 Распакуйте на диск D (например d:\apache-tomcat-8)

3 Запустите Eclipce Environment

- Выберите вкладку Servers

- Выберите No servers are available. Выберите эту ссылку для создания нового сервера.

 

- Выберите Tomcat v8.0 Server и нажмите Далее.

 

 

4 Выберите Apache installation Directory и нажмите Finish.

 

5 Вы увидите Tomcat v8.0 Server at localhost [Stopped, Republish] во вкладке Servers.

6 Затем нажмите правой кнопкой мыши на Server и выберите Start.

 

 

На консоли увидите:

 

Сервер запущен. Просмотреть результат можно по URL: http://localhost:8080/

 

Создание проекта:

1 В Eclipce выберите создать новый проект Dynamic Web project. Нажмите Далее.

 

2 Введите название проекта и нажмите Finish

 

 

Написание первого сервлета:

1 Для создания нового сервлета нажмите правой клавишей мыши на проекте, затем New-Servlet

2 Задайте Имя класса

Обратите внимание на URL mapping.

 

 

 

3 Сервлет создан

 

 

4 Измените содержимое метода doGet на

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

response.setContentType("text/html");

 

// Actual logic goes here.

PrintWriter out = response.getWriter();

out.println("<h1>" + "hello from [ " + request.getRequestURI() + "]</h1>");

}

 

5 Запустите сервлет. Нажмите правой кнопкой мыши по Сервлету и выберите Run As – Run on Server

 

 

 

на экране увидите результат:

 

 

6 Так же такой же результат можно увидеть, если загрузить браузер и ввести адрес http://localhost:8080/adp/test

 

 

7 Web.xml — дескриптор развертывания приложения располагается в каталоге /WEB-INF.

Можно создать этот файл вручную или использовать возможности Eclipse. На названии проекта ADP-EE нажмите правой кнопкой мыши и вызовите свойства, где выберите Java EE Tools-Generate Deployment Descriptor Stub. В результате создастся web.xml.

 

 

 

В содержимое web.xml внесите дополнения:

 

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

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">

<display-name>ADP-EE</display-name>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

<welcome-file>default.html</welcome-file>

<welcome-file>default.htm</welcome-file>

<welcome-file>default.jsp</welcome-file>

</welcome-file-list>

<servlet>

<servlet-name>TestServlet</servlet-name>

<servlet-class>by.bsac.adp.pz1.TestServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>TestServlet</servlet-name>

<url-pattern>/Servlet1</url-pattern>

</servlet-mapping>

</web-app>

 

Теперь ваш сервлет доступен и по адресу:

http://localhost:8080/ADP-EE/Servlet1

 

В дескрипторном файле можно определять параметры инициализации, MIME-типы, mapping сервлетов и JSP, стартовые страницы и страницы с сообщениями об ошибках, а также параметры для безопасной авторизации и аутентификации. Этот файл можно сконфигурировать так, что путь к сервлету в браузере не будет совпадать с истинным именем класса сервлета. Для версии сервлетов 3.0 теги мэппинга не нужны, так как эта информация определяется аннотацией.

 

Рассмотрим пример. Необходимо написать сервлет, который выдает пустую HTML-страницу с фоном зеленого цвета.

 

Решение:

package by.bsac.pz1;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

* Servlet implementation class TestServlet

*/

@WebServlet("/TestServlet")

public class TestServlet extends HttpServlet {

/**

*

*/

private static final long serialVersionUID = 1L;

private static final String CONTENT_TYPE =

"text/html; charset=windows-1251";

 

public void init() throws ServletException {

}

 

public void doGet(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

 

response.setContentType(CONTENT_TYPE);

PrintWriter out = response.getWriter();

 

out.println("<html>");

out.println("<head><title>Servlet_2</title></head>");

out.println("<body bgcolor='#00ff00'>");

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

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

out.close();

}

 

public void doPost(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

doGet(request, response);

}

 

public void destroy() {

}

}

 

Задания для самостоятельного решения:

1. Написать сервлет, который выдает HTML-страницу с полем для ввода с именем "P1". Перед полем для ввода должен идти текст "Поле для ввода: ".

2. Написать сервлет, который выдает HTML-страницу с полем для ввода с именем "P1" и кнопкой "Submit". После заполнения пользователем поля для ввода и нажатия кнопки "Submit" сервлет должен выдать такую же HTML-страницу, в поле P1, которой должно содержаться введенное значение, повторенное два раза.

3. * Написать сервлет, который выдает HTML-страницу с нарисованной цифрой 1 и кнопкой "Submit". После нажатия кнопки "Submit" сервлет должен выдать HTML-страницу с цифрой 2 и кнопкой "Submit". Потом с цифрой 3 и так далее.