HttpServletResponse和HttpServletRequest详解——Web网络学习笔记
一、HttpServletRequest
HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据。同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息。下表是接口HttpServletRequest的常用方法。
说明:HttpServletRequest接口提供了很多的方法。
接口HttpServletRequest的常用方法
方 法 |
说 明 |
getAttributeNames() |
返回当前请求的所有属性的名字集合 |
getAttribute(String name) |
返回name指定的属性值 |
getCookies() |
返回客户端发送的Cookie |
getsession() |
返回和客户端相关的session,如果没有给客户端分配session,则返回null |
getsession(boolean create) |
返回和客户端相关的session,如果没有给客户端分配session,则创建一个session并返回 |
getParameter(String name) |
获取请求中的参数,该参数是由name指定的 |
getParameterValues(String name) |
返回请求中的参数值,该参数值是由name指定的 |
getCharacterEncoding() |
返回请求的字符编码方式 |
getContentLength() |
返回请求体的有效长度 |
getInputStream() |
获取请求的输入流中的数据 |
getMethod() |
获取发送请求的方式,如get、post |
getParameterNames() |
获取请求中所有参数的名字 |
getProtocol() |
获取请求所使用的协议名称 |
getReader() |
获取请求体的数据流 |
getRemoteAddr() |
获取客户端的IP地址 |
getRemoteHost() |
获取客户端的名字 |
getServerName() |
返回接受请求的服务器的名字 |
getServerPath() |
获取请求的文件的路径 |
二、HttpServletResponse
在Servlet中,当服务器响应客户端的一个请求时,就要用到HttpServletResponse接口。设置响应的类型可以使用setContentType()方法。发送字符数据,可以使用getWriter()返回一个对象。下表是接口HttpServletResponse的常用方法。
接口HttpServletResponse的常用方法
方 法 |
说 明 |
addCookie(Cookie cookie) |
将指定的Cookie加入到当前的响应中 |
addHeader(String name,String value) |
将指定的名字和值加入到响应的头信息中 |
containsHeader(String name) |
返回一个布尔值,判断响应的头部是否被设置 |
encodeURL(String url) |
编码指定的URL |
sendError(int sc) |
使用指定状态码发送一个错误到客户端 |
sendRedirect(String location) |
发送一个临时的响应到客户端 |
setDateHeader(String name,long date) |
将给出的名字和日期设置响应的头部 |
setHeader(String name,String value) |
将给出的名字和值设置响应的头部 |
setStatus(int sc) |
给当前响应设置状态码 |
setContentType(String ContentType) |
设置响应的MIME类型 |
三、一些区别细节
1. HttpServletRequest和ServletRequest的区别
HttpServletRequest和ServletRequest都是接口
HttpServletRequest继承自ServletRequest
HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。如getHeader (String name), getMethod () ,getSession () 等等。
2. ServletRequest
代表一个HTTP请求,请求在内存中是一个对象,这个对象是一个容器,可以存放请求参数和属性。
请求对象何时被创建,当通过URL访问一个JSP或者Servlet的时候,也就是当调用Servlet的service()、doPut()、doPost()、doXxx()方法时候的时候,执行Servlet的web服服务器就自动创建一个ServletRequest和ServletResponse的对象,传递给服务方法作为参数。
请求对象由Servlet容器自动产生,这个对象中自动封装了请求中get和post方式提交的参数,以及请求容器中的属性值,还有http头等等。当Servlet或者JSP得到这个请求对象的时候,就知道这个请求时从哪里发出的,请求什么资源,带什么参数等等。
ServletRequest的层次结构
javax.servlet.ServletRequest
javax.servlet.http.HttpServletRequest通过请求对象,可以获得Session对象和客户端的Cookie。
请求需要指定URL,浏览器根据URL生成HTTP请求并发送给服务器,请求的URL有一定的规范:
3. ServletResponse
也是由容器自动创建的,代表Servlet对客户端请求的响应,响应的内容一般是HTML,而HTML仅仅是响应内容的一部分。请求中如果还包含其他资源会依次获取,如页面中含有图片,会进行第二个http请求用来获得图片内容。
相应对象有以下功能:
- 向客户端写入Cookie
- 重写URL
- 获取输出流对象,向客户端写入文本或者二进制数据
- 设置响应客户端浏览器的字符编码类型
- 设置客户端浏览器的MIME类型。
HttpServletResponse和HttpServletRequest详解——Web网络学习笔记相关推荐
- JSONObjec的作用详解——Web网络系列学习笔记
JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素.JSONObject可以很方便的转换成字符串,也可以很方便 ...
- 《TCP/IP详解卷一》学习笔记
<TCP/IP详解卷一>学习笔记 第1章 概述 第3章 IP:网际协议 第6章 ICMP:internet控制报文协议 第7/8章 Ping/Traceroute程序 第9/10章 IP路 ...
- kernel_mktime() 详解 —— Linux-0.11 学习笔记(四)
题目:kernel_mktime() 详解 -- Linux-0.11 学习笔记(四) 在init/main.c文件中,有一个函数static void time_init(void) 该函数读取 C ...
- python opencv 直方图均衡_详解python OpenCV学习笔记之直方图均衡化
本文介绍了python OpenCV学习笔记之直方图均衡化,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/d5/daf/tutorial_py_hi ...
- 孙鑫VC++深入详解第二章学习笔记
第二章 掌握C++ 2.1 从结构到类 2.1.1 结构体的定义 C++相比于C的特性:封装性.继承性.多态性: 对象具有状态和行为,状态保存在成员变量中,行为通过函数实现: 标准输入输出流对象:ci ...
- 孙鑫VC++深入详解第一章学习笔记
第一章 Windows程序内部运行机制 1.1 API和SDK API:Windows操作系统提供给应用程序编程的接口. SDK(软件开发包):用于开发的所有资源的集合. 1.2 窗口和句柄 窗口 句 ...
- 超级详解遗传算法(GA)学习笔记(1.1) 持续更新
遗传算法入门第一式---------求解函数极值问题(附完整代码和详解) 声明:大佬请指点,小白同学一起聚聚交流~~~~ 联想到球球大作战!!!!! 以这幅图为例,可以将其看成是一个种群,当中的散点就 ...
- oracle拆分分区语法详解大全_学习笔记:Oracle分区表 添加 删除 合并 删除 交换 拆分等分区表的操作案例...
天萃荷净 Oracle分区表管理,记录关于Oracle分区表的管理案例:创建.删除.合并.拆分.交换.更改分区表的操作方法 1.添加创建分区表 1.1)增加分区(add partition) 语法是: ...
- JAVAWEB开发之HttpServletResponse和HttpServletRequest详解(上)(各种乱码、验证码、重定向和转发)
HttpServletResponse简介 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 request和re ...
最新文章
- PRD 的编写和修改注意事项
- Python删除list里面的重复元素的俩种方法
- java获取密钥长度_java.security.InvalidKeyException:解密期间密钥大小错误
- 样机模型尺寸怎么改_土耳其五代机全尺寸样机模型首次亮相巴黎航展,这不是玩票,是一架认真设计的五代机!...
- python类的调用关系_JAVA 查找类的所有引用关系(python实现)
- linux mail命令查看邮件/mail控制台
- 工业级光纤收发器使用“避坑”指南
- 开机显示c:\windows\windows32\config\system文件损坏或丢失的解决方法(收集)
- java 8进制串转中文_为什么不能用中文进行编程?而英文就可以
- 异步fifo_异步FIFO
- fc588热敏打印机驱动_为称重仪表设计热敏打印模块 - 工业自动化称重仪表
- iptables 小提升
- 用什么的SQL语句来查的一个表中有相同的记录条数
- NYOJ题目48-小明的调查作业
- 第09课:一网打尽神经序列模型之 RNN 及其变种 LSTM、GRU
- 揭开均线系统的神秘面纱_揭开极限编程的神秘面纱,重新探讨“ XP蒸馏”,第2部分...
- 【2019年04月30日】股息率分红最高排名
- airbnb北京民宿运营情况分析
- 持安科技孙维伯:零信任 业务与安全的最优解
- jsPlumb 学习笔记