下表列出了浏览器端信息头的一些主要内容,在往后的网络编程中将会常常见到这些信息:
信息 | 描述 | Accept指定浏览器或其他客户端可以处理的MIME类型。它的值常日为 image/png 或 image/jpegAccept-Charset指定浏览器要利用的字符集。比如 ISO-8859-1Accept-Encoding指定编码类型。它的值常日为 gzip 或compressAccept-Language指定客户端首选措辞,servlet会优先
返回以当前措辞构成的结果集,如果servlet支持这种措辞的话。比如 en,en-us,ru等等Authorization在访问受密码保护的网页时识别不同的用户Connection表明客户端是否可以处理HTTP持久连接。持久连接许可客户端或浏览器在一个要求中获取多个文件。Keep-Alive 表示启用持久连接Content-Length仅适用于POST要求,表示 POST 数据的字节数Cookie返回先前发送给浏览器的cookies至做事器Host指出原始URL中的主机名和端口号If-Modified-Since表明只有当网页在指定的日期被修正后客户端才须要这个网页。 做事器发送304码给客户端,表示没有更新的资源If-Unmodified-Since与If-Modified-Since相反, 只有文档在指定日期后仍未被修正过,操作才会成功Referer标志着所引用页面的URL。比如,如果你在页面1,然后点了个链接至页面2,那么页面1的URL就会包含在浏览器要求页面2的信息头中User-Agent用来区分不同浏览器或客户端发送的要求,并对不同类型的浏览器返回不同的内容
HttpServletRequest类
request工具是javax.servlet.http.HttpServletRequest类的实例。每当客户端要求一个页面时,JSP引擎就会产生一个新的工具来代表这个要求。
request工具供应了一系列方法来获取HTTP信息头,包括表单数据,cookies,HTTP方法等等。
接下来将会先容一些在JSP编程中常用的获取HTTP信息头的方法。详细内容请见下表:
序号 | 方法& 描述 | 1Cookie[] getCookies()返回客户端所有的Cookie的数组2Enumeration getAttributeNames()返回request工具的所有属性名称的凑集3Enumeration getHeaderNames()返回所有HTTP头的名称凑集4Enumeration getParameterNames()返回要求中所有参数的凑集5HttpSession getSession()返回request对应的session工具,如果没有,则创建一个6HttpSession getSession(boolean create)返回request对应的session工具,如果没有并且参数create为true,则返回一个新的session工具7Locale getLocale()返回当前页的Locale工具,可以在response中设置8Object getAttribute(String name)返回名称为name的属性值,如果不存在则返回null。9ServletInputStream getInputStream()返回要求的输入流10String getAuthType()返回认证方案的名称,用来保护servlet,比如 \
公众BASIC\公众 或者 \"
大众SSL\公众 或 null 如果 JSP没设置保护方法11String getCharacterEncoding()返回request的字符编码集名称12String getContentType()返回request主体的MIME类型,若未知则返回null13String getContextPath()返回request URI中指明的高下文路径14String getHeader(String name)返回name指定的信息头15String getMethod()返回此request中的HTTP方法,比如 GET,,POST,或PUT16String getParameter(String name)返回此request中name指定的参数,若不存在则返回null17String getPathInfo()返回任何额外的与此request URL干系的路径18String getProtocol()返回此request所利用的协议名和版本19String getQueryString()返回此 request URL包含的查询字符串20String getRemoteAddr()返回客户真个IP地址21String getRemoteHost()返回客户真个完全名称22String getRemoteUser()返回客户端通过登录认证的用户,若用户未认证则返回null23String getRequestURI()返回request的URI24String getRequestedSessionId()返回request指定的session ID25String getServletPath()返回所要求的servlet路径26String[] getParameterValues(String name)返回指定名称的参数的所有值,若不存在则返回null27boolean isSecure()返回request是否利用了加密通道,比如HTTPS28int getContentLength()返回request主体所包含的字节数,若未知的返回-129int getIntHeader(String name)返回指定名称的request信息头的值30int getServerPort()返回做事器端口号
HTTP信息头示例
在这个例子中,我们会利用HttpServletRequest类的getHeaderNames()方法来读取HTTP信息头。这个方法以列举的形式返回当前HTTP要求的头信息。
获取Enumeration工具后,用标准的办法来遍历Enumeration工具,用hasMoreElements()方法来确定什么时候停滞,用nextElement()方法来得到每个参数的名字。
<%@ page language=\"大众java\"大众 contentType=\"大众text/html; charset=UTF-8\"大众 pageEncoding=\"大众UTF-8\"大众%><%@ page import=\"大众java.io.,java.util.\"大众 %><!DOCTYPE html><html><head><meta charset=\"大众utf-8\"大众><title>菜鸟教程(runoob.com)</title></head><body><h2>HTTP 头部要求实例</h2><table width=\"大众100%\"大众 border=\"大众1\"大众 align=\"大众center\"大众><tr bgcolor=\"大众#949494\公众><th>Header Name</th><th>Header Value(s)</th></tr><% Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String paramName = (String)headerNames.nextElement(); out.print(\"大众<tr><td>\公众 + paramName + \"大众</td>\n\"大众); String paramValue = request.getHeader(paramName); out.println(\公众<td> \公众 + paramValue + \公众</td></tr>\n\"大众); }%></table></body></html>
访问main.jsp,将会得到以下结果:
您可以在上面代码中考试测验HttpServletRequest类的其它方法。