English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Servlet-Client-HTTP-Anfrage

Wenn der Browser eine Webseite anfordert, sendet er spezifische Informationen an den Webserver, die nicht direkt gelesen werden können, da diese Informationen als Teil des HTTP-Anfragenkopfes übertragen werden. Sie können HTTP-Protokoll Mehr Informationen dazu.

Nachfolgend sind wichtige Headerinformationen von der Browserseite aufgeführt, die Sie im Web-Entwicklung häufig verwenden können:

HeaderinformationBeschreibung
AkzeptierenDiese Headerinformation gibt an, welche MIME-Typen der Browser oder andere Clients verarbeiten können. Wert Bild/png oder Bild/jpeg sind die häufigsten beiden möglichen Werte.
Akzeptieren-ZeichensatzDiese Headerinformation gibt an, welche Zeichensätze der Browser verwenden kann, um Informationen anzuzeigen. Zum Beispiel ISO-8859-1。
Akzeptieren-ZeichensatzDiese Headerinformation gibt an, welche Zeichensätze der Browser verarbeiten kann. Wert gzip oder komprimieren sind die häufigsten beiden möglichen Werte.
Akzeptieren-SpracheDiese Headerinformation gibt an, welche Sprache der Client bevorzugt, und in diesem Fall erzeugt der Servlet Ergebnisse in mehreren Sprachen. Zum Beispiel en, en-us, ru u. a.
AutorisierungDiese Headerinformation wird verwendet, um die Identität des Clients zu erkennen, wenn dieser auf eine geschützte Webseite zugreift.
VerbindungDiese Headerinformation weist darauf hin, ob der Client eine persistente HTTP-Verbindung verarbeiten kann. Eine persistente Verbindung ermöglicht es dem Client oder anderen Browsern, mehrere Dateien durch eine einzige Anfrage abzurufen. Wert Behalten-Alive bedeutet, dass eine persistente Verbindung verwendet wurde.
Content-LengthDiese Header-Information betrifft nur POST-Anfragen und gibt die Größe der POST-Daten in Bytes an.
CookieDiese Header-Information gibt die zuvor an den Browser gesendeten Cookies zurück an den Server.
HostDiese Header-Information gibt den Hostnamen und den Port der ursprünglichen URL an.
If-Modified-SinceDiese Header-Information zeigt, dass der Client die Seite will, die nach dem angegebenen Datum geändert wurde. Wenn keine neuen Ergebnisse verwendet werden können, sendet der Server eine 304 Code, der Not Modified Header.
If-Unmodified-SinceDiese Header-Information ist If-Modified-Seit dem Gegenteil, es wird angegeben, dass der Vorgang nur erfolgreich ist, wenn das Dokument vor dem angegebenen Datum ist.
RefererDiese Header-Information zeigt die URL der verweisenden Webseiten an. Zum Beispiel, wenn Sie auf einer Webseite 1wenn ein Link auf eine Webseite 2wenn der Browser eine Webseite 2 wenn 1 URL enthält in der Regel den Referer-Header.
User-AgentDiese Header-Informationen erkennen den Browser oder andere Client, der die Anfrage sendet, und können verschiedeneren Browsern unterschiedliche Inhalte zurückgeben.

Methoden zum Lesen von HTTP-Headern

Nachstehende Methoden können in Servlet-Programmen verwendet werden, um HTTP-Header zu lesen. Diese Methoden werden durch HttpServletRequest Objekt verfügbar.

NummerMethode & Beschreibung
1getCookies()
Ruft ein Array zurück, das alle Cookie-Objekte enthält, die der Client mit dieser Anfrage gesendet hat.
2getAttributeNames()
Ruft ein Enumeration-Objekt zurück, das die Namen der Attribute enthält, die für diese Anfrage verfügbar sind.
3getHeaderNames()
Ruft ein Enumeration-Objekt zurück, das alle in dieser Anfrage enthaltenen Header-Namen enthält.
4getParameterNames()
Ruft ein Enumeration-Objekt zurück, das die Namen der Parameter enthält, die in dieser Anfrage enthalten sind.
5getSession()
Ruft die aktuelle Session-Sitzung, die mit dieser Anfrage verknüpft ist, zurück oder erstellt eine neue, wenn keine Session-Sitzung vorhanden ist.
6getSession(boolean create)
Ruft die aktuelle HttpSession, die mit dieser Anfrage verknüpft ist, zurück oder erstellt eine neue Session-Sitzung, wenn keine aktuelle Sitzung vorhanden ist und der Wert create wahr ist.
7getLocale()
Basierend auf Accept-Sprachkopf, gibt die bevorzugte Regionaleinstellung des Clients zurück, der Inhalte akzeptiert.
8Object getAttribute(String name)
Gibt den Wert der benannten Eigenschaft als Objekt zurück oder null, wenn keine Eigenschaft mit dem gegebenen Namen existiert.
9ServletInputStream getInputStream()
Stellt den Anfragekörper in binärem Datenformat mit ServletInputStream zur Verfügung.
10String getAuthType()
Gibt den Namen der Authentifizierungsmethode zurück, die Servlet schützt, z.B. "BASIC" oder "SSL", wird null zurückgegeben, wenn das JSP nicht geschützt ist.
11String getCharacterEncoding()
Gibt den Namen der Zeichencodierung zurück, die im Anfragekörper verwendet wird.
12String getContentType()
Gibt den MIME-Typ des Anfragekörpers zurück, wenn der Typ nicht bekannt ist, wird null zurückgegeben.
13String getContextPath()
Gibt den Teil der Anfrage-URI zurück, der die Anfragekontext anzeigt.
14String getHeader(String name)
Gibt den Wert des angegebenen Anfragekopfes als Zeichenkette zurück.
15String getMethod()
Gibt den Namen des HTTP-Verfahrens zurück, z.B. GET, POST oder PUT.
16String getParameter(String name)
Gibt den Wert des Anfrageparameters als Zeichenkette zurück oder null, wenn der Parameter nicht existiert.
17String getPathInfo()
Gibt zusätzliche Pfadinformationen zurück, die mit der von der Anwendung gesendeten URL zusammenhängen, wenn die Anfrage gesendet wird.
18String getProtocol()
Gibt den Namen und die Version des Anfrageprotokolls zurück.
19String getQueryString()
Gibt den Query String zurück, der im Pfad der Anfrage-URL enthalten ist.
20String getRemoteAddr()
Gibt die Internet Protocol (IP)-Adresse des Clients zurück, der die Anfrage gesendet hat.
21String getRemoteHost()
Gibt den vollständigen Namen des Clients zurück, der die Anfrage gesendet hat.
22String getRemoteUser()
Gibt den angemeldeten Benutzer zurück, der die Anfrage ausgelöst hat, wenn der Benutzer bereits authentifiziert wurde, oder null, wenn der Benutzer nicht authentifiziert wurde.
23String getRequestURI()
Der Teil der URL, der im Query String bis zur ersten Zeile der HTTP-Anfrage zurückgegeben wird, enthält einen Teil der Anfrage-URL.
24String getRequestedSessionId()
返回由客户端指定的 session 会话 ID。
25String getServletPath()
返回调用 JSP 的请求的 URL 的一部分。
26String[] getParameterValues(String name)
返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。
27boolean isSecure()
返回一个布尔值,指示请求是否使用安全通道,如 HTTPS。
28int getContentLength()
以字节为单位返回请求主体的长度,并提供输入流,或者如果长度未知则返回 -1。
29int getIntHeader(String name)
返回指定的请求头的值为一个 int 值。
30int getServerPort()
返回接收到这个请求的端口号。
31int getParameterMap()
将参数封装成 Map 类型。

HTTP Header 请求示例

下面的示例使用 HttpServletRequest 的 getHeaderNames() 方法读取 HTTP 头信息。该方法返回一个枚举,包含与当前的 HTTP 请求相关的头信息。

一旦我们有一个枚举,我们可以以标准方式循环枚举,使用 hasMoreElements() 方法来确定何时停止,使用 nextElement() 方法来获取每个参数的名称。

//导入必需的 java 库
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/DisplayHeader")
//扩展 HttpServlet 类
public class DisplayHeader extends HttpServlet {
    // 处理 GET 方法请求的方法
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        // 设置响应内容类型
        response.setContentType("text/html;charset=UTF-8";
        PrintWriter out = response.getWriter();
        String title = "HTTP Header Anforderung Beispiel - 基础教程网示例";
        String docType =
            "<!DOCTYPE html> \n"
            out.println(docType +
            "<html>\n" +
            "<head><meta charset="utf-8"><title>" + title + "</title></head>\n"+
            "<body bgcolor="#f0f0f0">\n" +
            "<h1 align="center">" + title + "</h1>\n" +
            "<table width="100%" border="1" align="center">\n" +
            "<tr bgcolor="#"949494">\n" +
            "<th>Header Name</<th><th>Header Wert</th>
"+
            "</tr>\n");
        Enumeration headerNames = request.getHeaderNames();
        while(headerNames.hasMoreElements()) {
            String paramName = (String)headerNames.nextElement();
            <tr><td>" + paramName + "</td>

            String paramValue = request.getHeader(paramName);
            <td> + paramValue + "</td></tr>\n");
        }
        out.println("</table>\n</body></html>");
    }
    // Methode zum Verarbeiten von POST-Anfragenmethoden
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

Dieser Testbeispiel befindet sich im Projekt TomcatTest und die entsprechende web.xml-Konfiguration lautet:

<?xml version="1.0" encoding="UTF-8"?>  
</web-app>  
  </servlet>  
    <!-- Klassenname -->  
    <servlet-name>DisplayHeader</servlet-name>  
    <!-- im Paket befindlich -->  
    <servlet-</class>com.w3codebox.test.DisplayHeader</servlet-<class>  
  </</servlet>  
  <servlet-mapping>  
    <servlet-name>DisplayHeader</servlet-name>  
    <!-- Besuchte Webseite -->  
    <url-pattern>/TomcatTest/DisplayHeader</url-pattern>  
  </servlet-mapping>  
</web-app>

Rufen Sie nun den obigen Servlet auf, um auf zuzugreifen http://localhost:8080/TomcatTest/DisplayHeader Es wird folgendes Ergebnis erzeugt: