Назад | Начало урока | Вперед
Содержание

Глава 1 (продолжение 1)


Source Code for HelloWorld Example

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

Так выглядит страница helloworld.html в браузере. Эта страница демонстрирует код сервлета.
После того, как запущен Томкат, индексную страницу index.html надо запускать так:

http://localhost:8080/servlets-examples/index.html

Запустить сервлет можно следующей командой:

http://localhost:8080/servlets-examples/servlet/HelloWorldExample

Ниже на рисунке показана страница, которая образуется в результате работы этого сервлета.

Подсказка

Фрагмент сервлета в браузере. В правой части расположены две картинки (здесь не видны) - "повортная стрелка" и "отвертка".

Вот html-код этой страницы (то, что фактически сервер после обработки сервлета послал браузеру):


<html>
<head>
<title>Hello World!</title>
</head>
<body bgcolor="white">
<a href="../helloworld.html">
<img src="../images/code.gif" height=24 width=24 align=right border=0 alt="view code"></a>
<a href="../index.html">
<img src="../images/return.gif" height=24 width=24 align=right border=0 alt="return"></a>
<h1>Hello World!</h1>
</body>
</html>

Более точно код сервлета выглядит так:


import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

/**
* The simplest possible servlet.
*
* @author James Duncan Davidson
*/

public class HelloWorldExample extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException
{
ResourceBundle rb = ResourceBundle.getBundle("LocalStrings",request.getLocale());
response.setContentType("text/html");
PrintWriter out = response.getWriter();

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

String title = rb.getString("helloworld.title");

out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");

// note that all links are created to be relative. this
// ensures that we can move the web application that this
// servlet belongs to to a different place in the url
// tree and not have any harmful side effects.

// XXX
// making these absolute till we work out the
// addition of a PathInfo issue

out.println("<a href=\"../helloworld.html\">");
out.println("<img src=\"../images/code.gif\" height=24 " +

"width=24 align=right border=0 alt=\"view code\"></a>");

out.println("<a href=\"../index.html\">");
out.println("<img src=\"../images/return.gif\" height=24 " +
"width=24 align=right border=0 alt=\"return\"></a>");

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

}
}

В этом сервлете для меня интересно то, как получено значение переменной title:

ResourceBundle rb = ResourceBundle.getBundle("LocalStrings",request.getLocale());
String title = rb.getString("helloworld.title");

Кроме того здесь применена относительная адресация для ссылок (на один уровень вверх).
Перед двойными кавычками ставится обратный слеш:

<a href=\"../index.html\">

Код, размещающий две картинки-ссылки в правом верхнем углу, будет использован и в других сервлетах этого контекста.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz