HttpServletrequest 与HttpServletResponse总结

如果说DOM是javascript与HTML的桥梁,那么servlet就是前端与后端的桥梁,HttpServletRequest和HttpServletResponse就是之间的信使,好了,废话不多说!

由来

  Web服务器收到一个http请求,会针对每个请求创建一个HttpServletRequestHttpServletResponse对象,向客户端发送数据找HttpServletResponse,从客户端取数据找HttpServletRequest.

  HTTP 协议是基于请求-响应的协议,客户端请求一个文件,服务器对该请求进行响应。HTTP 使用 TCP 协议,默认使用 80 端口。最初的 HTTP 协议版本是 HTTP/0.9,后被 HTTP/1.0 替代。目前使用的版本是 HTTP/1.1

HTTP 协议中,总是由主动建立连接、发送 HTTP 请求的客户端来初始化一个事务。服务器不负责连接客户端,或创建一个到客户端的回调连接(callback connection)。

HttpServletRequest 

  公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。

一个 HTTP 请求包含以下三部分:

a.请求地址(URL)

b.请求头(Request headers)

c.实体数据(Entity body)

举例如下

POST /examples/default.jsp HTTP/1.1

Accept: text/plain; text/html

Accept-Language: en-gb

Connection: Keep-Alive

Host: localhost

User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)

Content-Length: 33

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

lastName=Franks&firstName=Michael

 

  每个 HTTP 请求都会有一个请求方法,HTTP1.1 中支持的方法包括,GETPOSTHEADOPTIONS

PUTDELETE TRACE。互联网应用中最常用的是 GET POST

  URI 指明了请求资源的地址,通常是从网站更目录开始计算的一个相对路径,因此它总是以斜线 “/”开头的。URL 实际上是 URI 的一种类型,请求头(header)中包含了一些关于客户端环境和请求实体(entity)的有用的信息。例如,客户端浏览器所使用的语言,请求实体信息的长度等。每个请求头使用 CRLF(回车换行符,“\r\n”)分隔。注意请求头的格式:

请求头名+英文空格+请求头值

 

常用方法

1.获得客户机信息

getRequestURL方法返回客户端发出请求时的完整URL

getRequestURI方法返回请求行中的资源名部分。

getQueryString 方法返回请求行中的参数部分。

getRemoteAddr方法返回发出请求的客户机的IP地址

getRemoteHost方法返回发出请求的客户机的完整主机名

getRemotePort方法返回客户机所使用的网络端口号

getLocalAddr方法返回WEB服务器的IP地址。

getLocalName方法返回WEB服务器的主机名

getMethod得到客户机请求方式

getServerPath()获取请求的文件的路径

 2.获得客户机请求头

getHeader(string name)方法 
getHeaders(String name)方法 
getHeaderNames方法 

 3. 获得客户机请求参数(客户端提交的数据)
getParameter(name)方法 获取请求中的参数,该参数是由name指定的
getParameterValuesString name)方法 获取指定名称参数的所有值数组。它适用于一个参数名对应多个值的情况。如页面表单中的复选框,多选列表提交的值。

getParameterNames方法 返回一个包含请求消息中的所有参数名的Enumeration对象。通过遍历这个Enumeration对象,就可以获取请求消息中所有的参数名。

getCharacterEncoding() 返回请求的字符编码方式

getAttributeNames()返回当前请求的所有属性的名字集合赋值:setAttribute()

getAttribute(String name) 返回name指定的属性值

getsession()返回和客户端相关的session,如果没有给客户端分配session,则返回null

getParameterMap():返回一个保存了请求消息中的所有参数名和值的Map对象。Map对象的key是字符串类型的参数名,value是这个参数所对应的Object类型的值数组

RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。

request.setCharacterEncoding("utf-8");

getReader() 获取请求体的数据流

getInputStream() 获取请求的输入流中的数据

通过输入输出流获取 :getInputStream() 和 getReader()

在读取的时候通过流对象.read()方法读取

Eg:

StringBuffer receiveMessage = new StringBuffer();

Scanner scanner = new Scanner(request.getInputStream(), "GBK");

    while (scanner.hasNext()) {

receiveMessage.append(scanner.next());

}

scanner.close();

String json =receiveMessage.toString()

    JSONObject obj &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值