上一篇 主要总结了Servlet的helloWorld实现,基于web.xml和注解配置方式,生命周期 init(),service(),destroy()方法,以及doGet(),doPost()方法,service()方法内部路由依据请求方式分别调用doget()方法和doPost()方法,另外servlet如何获取表单数据,getParameter()方法等。接下来继续总结servlet的其它知识点。
一、servlet客户端Http请求
1.1 HTTP请求头主要信息
请求头重要信息如下表:
头信息 | 描述 |
Accept | 指定浏览器或者其它客户端可以处理的MIME类型。image/png或image/jpeg是最常见的2种 |
Accept-Charset | 指定浏览器可以用来显示信息的字符集。如:UTF-8 |
Accept-Encoding | 指定浏览器知道如何处理的编码类型。gizp或compress是最常见的2种可能值。 |
Accept-Language | 客户端首选语言,值一般为 en、en-us、ru等 |
Authorization | 用于客户端在访问受密码保护的网页时识别自己的身份 |
Connection | 指示客户端是否可以处理持久 HTTP 连接,持久连接允许客户端或其他浏览器通过单个请求来检索多个文件。值 Keep-Alive 意味着使用了持续连接 |
Content-Length | 只适用于 POST 请求,并给出 POST 数据的大小(以字节为单位) |
Cookie | 这个头信息把之前发送到浏览器的 cookies 返回到服务器 |
Host | 这个头信息指定原始的 URL 中的主机和端口 |
If-Modified-Since | 这个头信息表示只有当页面在指定的日期后已更改时,客户端想要的页面。如果没有新的结果可以使用,服务器会发送一个 304 代码,表示 Not Modified 头信息 |
If-Unmodified-Since | 这个头信息是 If-Modified-Since 的对立面,它指定只有当文档早于指定日期时,操作才会成功 |
Referer | 这个头信息指示所指向的 Web 页的 URL。例如,如果您在网页 1,点击一个链接到网页 2,当浏览器请求网页 2 时,网页 1 的 URL 就会包含在 Referer 头信息中 |
User-Agent | 这个头信息识别发出请求的浏览器或其他客户端,并可以向不同类型的浏览器返回不同的内容. |
例如下图所示:
1.2 读取HTTP头的方法
Cookie[] getCookies():返回一个数组,包含客户端发送该请求的所有Cookie对象。
Enumeration getAtrributeNames():返回一个枚举,包含提供给请求可用的属性名称。
Enumeration getHeaderNames():返回该请求种所有的头名
Enumeration getParameterNames():返回String对象的枚举,包含请求种参数名称。
HttpSession getSession():返回请求相关联的session会话,如果没有则新建一个。
HttpSession getSession(boolean create):返回请求相关联的session会话,依据传入参数决定是否创建一个
Locale getLocale():基于Accept-Languaget头,返回客户端接受内容的首选的区域设置
Object getAttribute(String name):以对象形式返回对应key值的属性值,如果不存在返回null
ServletInputStream getInputStream():获取输入流,以二进制数据形式检索请求主体。
String getAuthType():返回保护Servlet的身份验证方案的名称,比如:BASIC、SSL
String getCharacterEncoding():返回请求主体中使用的字符编码的名称
String getContentType():返回请求主体MIME类型,如果不知道类型返回null
String getContentPath():返回请求URI部分
String getHeader(String name):返回指定请求头的值
String getMethod():返回请求HTTP方法名称,如GET,POST,PUT
String getParameter(String name):返回对应name的参数的值,不存在返回null
String getPathInfo():返回客户端发送的URL相关的任何额外的路劲信息
String getProtocol():返回协议的名称和版本。
String getQueryString():返回包含在路径的请求URL中的查询字符串。
String getRemoteAddr():返回发送请求的客户端的IP地址
String getRemoteHost():返回客户端的完全限定名称
String getRequestUser():如果用户已经认证,返回发出请求的登陆用户,否则返回null
String getRequestURI():从协议名称直到HTTP请求的第一行的查询字符串中,返回该请求的URL的一部分。
String getRequestedSessionId():返回会话ID
String getServletPath():返回调用jsp的请求的URL的一部分
Sring[] getParameterValues(String name):返回给定参数的所有值,不存在返回null
boolean isSecure():返回是否使用安全通道,即HTTPS
int getContentLength():请求主体的长度(字节),并提供输入流,长度未知返回-1
int getIntHeader(String name) :返回指定请求头的int值
int getServerPort():返回服务器端口号
Map getParameterMap():参数封装成Map类型
1.3 以上方法部分演示实例
输出结果: