Глава 1 (продолжение 1)
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\">
Код, размещающий две картинки-ссылки в правом верхнем углу, будет использован и в других сервлетах этого контекста.
Назад |
Начало урока |
Вверх |
Вперед
Содержание