Servlet 客户端 HTTP 请求
来源:互联网 发布:淘宝专业删差评 编辑:程序博客网 时间:2024/05/16 17:26
当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。您可以查看 HTTP 协议 了解更多相关信息。
以下是来自于浏览器端的重要头信息,您可以在 Web 编程中频繁使用:
读取 HTTP 头的方法
下面的方法可用在 Servlet 程序中读取 HTTP 头。这些方法通过 HttpServletRequest 对象可用。
返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。2Enumeration getAttributeNames()
返回一个枚举,包含提供给该请求可用的属性名称。3Enumeration getHeaderNames()
返回一个枚举,包含在该请求中包含的所有的头名。4Enumeration getParameterNames()
返回一个 String 对象的枚举,包含在该请求中包含的参数的名称。5HttpSession getSession()
返回与该请求关联的当前 session 会话,或者如果请求没有 session 会话,则创建一个。6HttpSession getSession(boolean create)
返回与该请求关联的当前 HttpSession,或者如果没有当前会话,且创建是真的,则返回一个新的 session 会话。7Locale getLocale()
基于 Accept-Language 头,返回客户端接受内容的首选的区域设置。8Object getAttribute(String name)
以对象形式返回已命名属性的值,如果没有给定名称的属性存在,则返回 null。9ServletInputStream getInputStream()
使用 ServletInputStream,以二进制数据形式检索请求的主体。10String getAuthType()
返回用于保护 Servlet 的身份验证方案的名称,例如,"BASIC" 或 "SSL",如果JSP没有受到保护则返回 null。11String getCharacterEncoding()
返回请求主体中使用的字符编码的名称。12String getContentType()
返回请求主体的 MIME 类型,如果不知道类型则返回 null。13String getContextPath()
返回指示请求上下文的请求 URI 部分。14String getHeader(String name)
以字符串形式返回指定的请求头的值。15String getMethod()
返回请求的 HTTP 方法的名称,例如,GET、POST 或 PUT。16String getParameter(String name)
以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。17String getPathInfo()
当请求发出时,返回与客户端发送的 URL 相关的任何额外的路径信息。18String getProtocol()
返回请求协议的名称和版本。19String getQueryString()
返回包含在路径后的请求 URL 中的查询字符串。20String getRemoteAddr()
返回发送请求的客户端的互联网协议(IP)地址。21String getRemoteHost()
返回发送请求的客户端的完全限定名称。22String getRemoteUser()
如果用户已通过身份验证,则返回发出请求的登录用户,或者如果用户未通过身份验证,则返回 null。23String getRequestURI()
从协议名称直到 HTTP 请求的第一行的查询字符串中,返回该请求的 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()
返回接收到这个请求的端口号。
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 请求实例 - 菜鸟教程实例";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 名称</th><th>Header 值</th>\n"+"</tr>\n");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");}out.println("</table>\n</body></html>");}// 处理 POST 方法请求的方法public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}
以上测试实例是位于 TomcatTest 项目下,对应的 web.xml 配置为:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <!-- 类名 --> <servlet-name>DisplayHeader</servlet-name> <!-- 所在的包 --> <servlet-class>com.runoob.test.DisplayHeader</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayHeader</servlet-name> <!-- 访问的网址 --> <url-pattern>/TomcatTest/DisplayHeader</url-pattern> </servlet-mapping> </web-app>
现在,调用上面的 Servlet,访问 http://localhost:8080/TomcatTest/DisplayHeader 会产生以下结果:
0 0
- Servlet 客户端 HTTP 请求
- Servlet 客户端 HTTP 请求
- Servlet 客户端 HTTP 请求
- Servlet 客户端 HTTP 请求
- Servlet处理客户端HTTP请求
- Servlet 05 客户端 http请求
- Servlet 客户端 HTTP 请求重要头信息
- servlet解析客户端http请求流程
- Java Servlet学习笔记(四)Servlet客户端Http请求
- Servlet使用Http请求头控制客户端浏览器缓存
- servlet客户端http请求及响应及httpservletrequest,httpservletresponse详解
- Servlet处理HTTP请求
- servlet处理http请求
- servlet处理http请求
- http post 客户端请求
- http客户端请求
- HTTP请求客户端
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分)
- Servlet 表单数据
- CSS列表设置实现列表前面的原点去掉以及不换行
- iOS设计模式之—单例模式浅谈
- 大数据实战(上)-HBase Bulkload实例
- 关键字volatile的详解
- Servlet 客户端 HTTP 请求
- 树莓派浏览器中文显示乱码问题和树莓派键盘设置
- RtlWcpDllDebugEntrypoint
- Servlet 服务器 HTTP 响应
- getHibernateTemplate().saveOrUpdate(t)可以插入不能更新
- Shell学习小结 - 深入认识变量
- MyBatis总结——加载mappers映射文件的三种方式
- Rxjava 封装异步回调代码, 新时代来临
- Servlet HTTP 状态码