Глава 1 (продолжение 1)
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); } } }
Вот 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-таблицу.
Назад |
Начало урока |
Вверх |
Вперед
Содержание