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

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


Source Code for RequestHeader Example

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

public class RequestHeaderExample extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        Enumeration e = request.getHeaderNames();
        while (e.hasMoreElements()) {
            String name = (String)e.nextElement();
            String value = request.getHeader(name);
            out.println(name + " = " + value);
        }
    }
}

Так выглядит страница /reqheaders.html в браузере. Эта страница демонстрирует код сервлета. Запустить сервлет можно следующей командой: http://localhost:8080/servlets-examples/servlet/RequestHeaderExample Ниже на рисунке показана страница, которая образуется в результате работы этого сервлета.

Подсказка

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


<html>
<body bgcolor="white">
<head>
<title>Request Header Example</title>
</head>
<body>
<a href="../reqheaders.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>
<h3>Request Header Example</h3>
<table border=0>
<tr><td bgcolor="#CCCCCC">
accept
</td><td>
*/*
</td></tr>
<tr><td bgcolor="#CCCCCC">
referer
</td><td>
http://localhost:8080/servlets-examples/index.html
</td></tr>
<tr><td bgcolor="#CCCCCC">
accept-language
</td><td>
ru
</td></tr>
<tr><td bgcolor="#CCCCCC">
accept-encoding
</td><td>
gzip, deflate
</td></tr>
<tr><td bgcolor="#CCCCCC">
user-agent
</td><td>
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.0.3705)
</td></tr>
<tr><td bgcolor="#CCCCCC">
host
</td><td>
localhost:8080
</td></tr>
<tr><td bgcolor="#CCCCCC">
connection
</td><td>
Keep-Alive
</td></tr>
<tr><td bgcolor="#CCCCCC">
cookie
</td><td>
JSESSIONID=81FB9F2B787BC70D9846F15233EC6BAA; test=1; counter=7
</td></tr>
</table>


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


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

import util.HTMLFilter;

/**
* Example servlet showing request headers
*
* @author James Duncan Davidson <duncan@eng.sun.com>
*/

public class RequestHeaderExample extends HttpServlet {

ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");

public void doGet(HttpServletRequest request,

HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();

out.println("<html>");
out.println("<body bgcolor=\"white\">");
out.println("<head>");

String title = rb.getString("requestheader.title");
out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body>");

// all links relative

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

out.println("<a href=\"../reqheaders.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("<h3>" + title + "</h3>");
out.println("<table border=0>");
Enumeration e = request.getHeaderNames();
while (e.hasMoreElements()) {

String headerName = (String)e.nextElement();
String headerValue = request.getHeader(headerName);
out.println("<tr><td bgcolor=\"#CCCCCC\">");
out.println(HTMLFilter.filter(headerName));
out.println("</td><td>");
out.println(HTMLFilter.filter(headerValue));
out.println("</td></tr>");
}
out.println("</table>");
}

public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {

doGet(request, response);
}
}

Как видим из этого и предыдущего примеров у запроса request много методов. Все эти методы описаны в справке при документации на Tomcat.

Здесь интересно то, как в цикле while считывается таблица, на которую была получена ссылка. Сначала считывается имя, а затем при помощи имени считывается значение. И так, пока не будет считана вся таблица. Результат выводится в html-таблицу.


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

Hosted by uCoz