HttpServletrequest 与HttpServletResponse总结

本文详细介绍了HttpServletRequest和HttpServletResponse在Web开发中的作用,包括它们的由来、常用方法及解决乱码问题的策略。HttpServletRequest主要用于获取客户端请求信息,如请求URL、参数、头信息等,而HttpServletResponse则用于向客户端发送响应,设置状态码、内容类型和管理Cookie。文中还讨论了如何处理中文乱码,以及使用Response实现文件下载的方法。
摘要由CSDN通过智能技术生成

人工智能,零基础入门!http://www.captainbed.net/inner 

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

由来

  Web服务器收到一个http请求,会针对每个请求创建一个HttpServletRequest和HttpServletResponse对象,向客户端发送数据找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 中支持的方法包括,GET、POST、HEAD、OPTIONS、

PUT、DELETE 和 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指定的
getParameterValues(String 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()) {

receiveMe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值