Пример сервлета, hello!

Пример сервлета включает сам сервлет HelloWorld.java и дескриптор приложения web.xml. Сервлет позволяет формировать страницу ответа с использованием кириллицы. Структура примера сервлета в IDE Eclipse представлена на следующем скриншоте.

Листинг примера сервлета HelloWorld.java

Приведенный ниже код реализует простой сервлет HelloWorld.java, возвращающий статическую HTML-страницу браузеру. В примере сервлет наследует свойства HttpServlet, реализующего интерфейс Servlet.

import java.io.IOException;  
import java.io.OutputStream;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
   
public class HelloWorld extends HttpServlet  
{
    private ServletConfig config;
    @Override
    public void init (ServletConfig config) throws ServletException  
    {  
        this.config = config;  
    }  
    @Override
    public void destroy() {}  
    @Override
    public ServletConfig getServletConfig()  
    {  
        return config;  
    }  
    @Override
    public String getServletInfo()  
    {  
        return "A Simple Servlet";  
    }
    public void service (HttpServletRequest request, HttpServletResponse response) 
                                            throws ServletException, IOException  
    {  
        response.setContentType( "text/html" );  
        String text = "<!DOCTYPE html PUBLIC " +
                        "\"-//W3C//DTD HTML 4.01 Transitional//EN\" " +
                            "\"http://www.w3.org/TR/html4/loose.dtd\"> " +
                      "<html><head>" +
                          "<meta http-equiv=\"Content-Type\" " +
                               "content=\"text/html; charset=UTF-8\"> " +
                          "<title>Пример сервлета!</title>" +
                      "</head>" +
                      "<body>" +
                          "<h1>Здравствуй, %s %s!</h1>" +
                      "</body></html>";
        text = String.format(text, config.getInitParameter("name"), 
                                   config.getInitParameter("mname"));
        OutputStream outStream = response.getOutputStream();
        outStream.write(text.getBytes("UTF-8"));
        outStream.flush();
        outStream.close();
    }  
}

При обращении к сервлету вызывается метод service, который формирует страницу ответа и передает ее в браузер через HttpServletResponse. В первых строках ответа сервера определен заголовок Content-Type с указанием кодировки UTF-8. Дополнительно в шаблон ответа подставляются имя и отчество, получаемые из дескриптора приложения web.xml. То есть, выполняется чтение параметров конфигурации сервлета.

Для того, чтобы можно было бы возвращать страницу с кириллицей, используется OutputStream. В выходной поток можно вывести любую информацию (в нашем примере - простой HTML-код).

Листинг дескриптора приложения web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
                             http://java.sun.com/xml/ns/j2ee
                             http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         id="WebApp_9" version="2.4">
    <display-name>Servlet Hello World</display-name>

    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>example.HelloWorld</servlet-class>
        <init-param>
            <param-name>name</param-name>
            <param-value>Остап</param-value> 
        </init-param>
        <init-param>
            <param-name>mname</param-name> 
            <param-value>Ибрагимович</param-value> 
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

В дискрипторе приложения web.xml определяются параметры сервлета (наименование servlet-name и класс servlet-class) и параметры инициализации (имя name, отчество mname). Данные параметры сервлет читает с использованием ServletConfig.

Для запуска примера сервлета из среды IDE Eclipse необходимо стартовать сервер приложений и в адресной строке браузера ввести следующую строку :

http://localhost:8080/ServletHello/hello

Браузер отобразит нам приветствие с указанием основного героя произведений Ильфа и Петрова.

Для отдельной компиляции сервлета можно использовать командный файл, текст которого для Windows может иметь следующий вид.

SET TOMCAT_LIB="C:\Program Files\Apache Software Foundation\Tomcat\common\lib" 
SET JAVA_SDK=C:\Java\Sun\SDK\jdk\bin\ 
  
%JAVA_SDK%javac -classpath %TOMCAT_LIB%\servlet-api.jar *.java 

После компиляции сервлет HelloWorld.class необходимо разместить в директории WEB-INF/classes/ WEB-приложения на сервере Tomcat и зарегистрировать в дескрипторе поставки web.xml.

На странице Примеры проектов maven данный сервлет участвует в проекте автоматизации сборки с использованием Apache Maven.

Скачать пример

Исходный код примера сервлета, рассмотренного в тексте страницы, можно скачать здесь (191 Кб).

  Рейтинг@Mail.ru