Servlet学习笔记02——什么是http协议?
1.http协议 (了解)
(1)什么是http协议?
是一种网络应用层协议,规定了浏览器与web服务器之间
如何通信以及相应的数据包的结构。
注:
a.tcp/ip: 网络层协议,可以保证数据可靠的传输。
b.http: 应用层协议,负责解释数据(接收方收到
数据之后,如何截取,如何编码解码等问题)。
1)如何通信
step1.建立连接
step2.发送请求(先要打包)
step3.发送响应 (先要打包)
step4.关闭连接
"一次请求,一次连接"。
2)优点:
web服务器可以利用有限的连接,为尽可能多的请求
服务。

(2)数据包的结构
1)请求数据包的结构
a.请求行 (请求方式 请求资源路径 协议和版本)
b.若干消息头
注:
消息头是一些键值对(使用": "隔开),
由http协议定义,表示特定的含义,比如
浏览器可以通过user-agent消息头告诉
服务器,浏览器的类型和版本。
c.实体内容
注:只有当请求方式为post时,实体内容才会有
数据。
2)响应数据包的结构
a.状态行 (协议和版本 状态码 状态描述)
b.若干消息头
服务器也可以发送一些消息头给浏览器,比如,
通过发送content-type消息头,告诉浏览器,
服务器返回给浏览器的数据类型。
c.实体内容
程序处理的结果,浏览器会解析出来,然后生成
相应的页面。
(3)两种请求方式
1)get请求
a.哪一些情况下,浏览器会发送get请求?
a1.直接在浏览器地址栏输入某个地址
a2.表单默认提交方式
a3.点击链接
b.特点
b1.会将请求参数添加到请求行里面,只能
提交少量数据(请求行只有一行,大约能存放
2k左右的数据)。
b2.会将请求参数显示在浏览器地址栏,不安全
(比如,路由器就会记录包含了请求参数的请求地址)。
2)post请求
a.哪一些情况下,浏览器会发送post请求?
设置表单的method属性值为"post"。
b.特点
b1.会将请求参数添加到实体内容里面,所以,
可以提交大量数据。
b2.不会将请求参数显示在浏览器地址栏,相对
安全(不会对请求参数加密) 。
2.Servlet输出中文,要注意什么?
(1)为什么会有乱码?
out.println方法在输出时,默认会使用
"iso-8859-1"来编码。
(2)如何解决?
response.setContentType("text/html;charset=utf-8");
3.如何读取请求参数值?
(1)方式一
String request.getParameter(String paramName)注:
a. paramName(请求参数名)不能写错,否则会
返回null值。
b. 注意,表单提交时,对于文本输入框,密码
输入框,如果不填写任何数据,会获得""。
(2)方式二
String[] request.getParameterValues(String paramName);
注:
a.当有多个请求参数名相同时,使用此方法。
b.注意,对于多选框,如果不选择任何选项,获得
null值。
4.表单包含有中文参数值,如何处理?
(1)为什么会有乱码?
表单提交时,浏览器会对中文参数值进行编码,
服务器端默认会使用"iso-8859-1"来解码,
所以,会产生乱码。
注:
要看表单所在的页面打开时使用哪种字符集,
表单提交时,就会使用应用的字符集来编码。
(2)如何解决?
1)post请求
request.setCharacterEncoding(String charset);
注:
a.只针对post请求有效。
b.该方法一定要添加到所有的getParameter方法的
前面。
c.charset要与浏览器端的一致。
2)get请求
修改server.xml,添加
<Connector URIEncoding="utf-8"/>

Servlet学习笔记02——什么是http协议?的更多相关文章
- Servlet学习笔记(四)
目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...
- Servlet学习笔记(三)
目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...
- Servlet学习笔记(二)
目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...
- 软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
- 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)
机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...
- OpenCV 学习笔记 02 使用opencv处理图像
1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...
- 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接 ...
- # jsp及servlet学习笔记
目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...
- SaToken学习笔记-02
SaToken学习笔记-02 如果排版有问题,请点击:传送门 常用的登录有关的方法 - StpUtil.logout() 作用为:当前会话注销登录 调用此方法,其实做了哪些操作呢,我们来一起看一下源码 ...
随机推荐
- OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(下)
上期我们完成了一个简单的主从页面,但是页面是静态的,不能交互,功能也很简单,只有一个销售订单的列表. 我们今天就一鼓作气把代码全都写完,由于本次的代码量较大,所以只对重点代码部分进行讲解. 具体每个文 ...
- 纯CSS控制背景图片100%自适应填充布局
https://blog.csdn.net/wd4java/article/details/50537562 解决: html,body{height: 100%;width: 100%;marg ...
- MVC分页技术
这个是用的插件分页技术 前台引用和js <script type="text/javascript" src="/js/jquery-1.10.2.min.js&q ...
- 异步对象(XMLHttpRequest)的帮助脚本
异步对象五部曲 这是post请求的. //1.00创建异步对象 var xhr = new XMLHttpRequest(); //2.0 xhr.open("post", url ...
- JAVA避免入坑必备
1.关于@Override Annocation 对于子类(包括并且特别是匿名类)中,重写父类的函数,一定要加上@Override.这会帮助你避免很多不必要的看起来让人恼怒的错误.比如,为什么子类重写 ...
- Python模块入门(二)
一.模块的循环导入问题 在python工程中,由于架构不当,可能会出现模块间互相引用的情况.这时候需要通过一些方法来解决这个问题 1.重新设计架构,解决互相引用的关系. 2.把import语句放置在模 ...
- 洛谷 P1195 口袋的天空(最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1195 思路: 首先可以判断这道题是用最小生成树来做的,然后在将其合并时用ans记录一下它的总消耗, ...
- SQL Server 2008R2 18456错误解决方案
SQL Server 2008R2 18456错误解决方案 微软解释说,因密码或用户名错误而使身份验证失败并导致连接尝试被拒时,类似下面的消息将返回到客户端:“用户 '<user_name> ...
- Azure进阶攻略丨如何驾驭罢工的Linux虚机网卡?
很多人的生活中,流传着一个屡试不爽,据说可以解决任何问题的百宝锦囊: 所以经常可以听到类似这样的对话: -我的电脑咋上不去网了? -重启一下电脑. -还是不行呢! -重启一下路由器. -怎么还不行-_ ...
- Scikit Learn
Scikit Learn Scikit-Learn简称sklearn,基于 Python 语言的,简单高效的数据挖掘和数据分析工具,建立在 NumPy,SciPy 和 matplotlib 上.