Настройка сервера 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 и так далее.