Java for Web学习笔记(五):Servlet(3)HttpServletRequest

读取参数

HTTP两种最常用的请求是GET和POST,GET是在URI中携带信息,POST则是body中携带信息,并在Content-Type中给出application/x-www-form-urlencoded或者multipart/form-data。POST也可以同时正在URI中携带信息。在Servlet API中,对这两者的参数获取不加区别,如下:

From:https://docs.oracle.com/javaee/7/api/ -- Interface ServletRequest

Java for Web学习笔记(五):Servlet(3)HttpServletRequest_第1张图片

注:也可以下载J2EE的zip包,里面包含document

当我们第一次调用上述函数时,如果是POST,信息在body中,会通过InputStream来读取body,要知道InputStream属于阅后自焚,只能读一次。因此不能与getInputStream和getReader前后使用,后使用者会报IllegalStateException的错误。

读取Request-Line

读取消息的start-line,在请求消息中称为Request-Line,在响应消息中为Status-Line以HTTP GET :http://www.example.org/chapter03/greeting?foo=world为例:获取URL getRequestURL()为http://www.example.org/chapter03/greeting;获取URI getRequestURI()为 /chapter03/greeting;获取ServletPath的方法getServletPath()为/greeting。

读取Header

HTTP消息头的各个字段都可获取,下面是Content-Length和Content-Type这两个字段获取的方法,或者使用getHeader("Content-Length")获取。

Java for Web学习笔记(五):Servlet(3)HttpServletRequest_第2张图片

getHeaderNames()则返回消息头各字段的名称。

getIntHeader()将结果转换为int类型,如果转换失败,会抛出NumberFormatException的错误。

getDateHeader()将结果转换为msec的Unix timestamp,如果转换失败,则抛出IllegalArgumentException的错误。

读取Body

ServletInputStream

getInputStream()

Retrieves the body of the request as binary data using a ServletInputStream.

BufferedReader

getReader()

Retrieves the body of the request as character data using a BufferedReader.

如果和字符有关的,一般采用getReader(),因为返回的是BufferedReader。之前已经提到,读取Body属于阅后自焚。

 

相关链接: 我的Professional Java for Web Applications相关文章

 
 

你可能感兴趣的:(Java for Web学习笔记(五):Servlet(3)HttpServletRequest)