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协议?的更多相关文章

  1. Servlet学习笔记(四)

    目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...

  2. Servlet学习笔记(三)

    目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...

  3. Servlet学习笔记(二)

    目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...

  4. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  5. 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)

    机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...

  6. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  7. 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus

    物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接 ...

  8. # jsp及servlet学习笔记

    目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...

  9. SaToken学习笔记-02

    SaToken学习笔记-02 如果排版有问题,请点击:传送门 常用的登录有关的方法 - StpUtil.logout() 作用为:当前会话注销登录 调用此方法,其实做了哪些操作呢,我们来一起看一下源码 ...

随机推荐

  1. Java工具-检验ftp服务器的指定文件是否存在

    项目工作中,需要检验ftp服务器中指定文件是否存在,在网上查阅了相关资料,可以通过ftpClient类进行实现. import org.apache.commons.net.ftp.FTP; impo ...

  2. jq案例中遇到的知识点总结(会飞的小鸟和三级联动)

    1.会飞的小鸟 ,按键盘的上下左右键,小鸟会上下左右的飞 知识点:1.keyCode 键盘按键对应的数字 比如 左上右下键 对应 37 38 39 40: 2.小鸟的位置:var bBird=$(&q ...

  3. CKEditor4.4.5 插入高度代码及上传图片

    1.首先准备所需要的插件 (1). CKEditor4.4.5  下载地址:http://ckeditor.com/download.如果不想下载直接引用CKEditor的CDN也是可以的.cdn地址 ...

  4. CSS的框模型(div)与边距(margin、padding)

    所谓框模型,例如div标签,你就可以直接把它理解成一个相框. 这个相框里面的相片有高度和宽度,框本身也有一定的宽度.相框和别的相框之间,还有一定的边距. div设置常见属性 border:边框 pad ...

  5. 写英文bug的经验总结

    本文链接: https://www.cnblogs.com/hchengmx/p/10800855.html 由于工作原因,开bug的时候需要由英文开,刚开的时候比较痛苦,因为有些词汇老师用的不太准确 ...

  6. 超链接导致window.location.href失效的解决办法

    通常我们采用 window.location.href 执行页面间的跳转,比如下面的语句 window.location.href = 'https://www.baidu.com/'; 一般执行上面 ...

  7. Visual Studio无法推送提交到Github的解决方法

    前言 当出现Visual Studio推送变更失败时,卸载系统中所有Git以及Visual Studio 的Git工具再重装即可 前情概要 今天由于要尝试使用RabbitMQ,所以打算先在本地做些小D ...

  8. 【起航计划 008】2015 起航计划 Android APIDemo的魔鬼步伐 07 App->Activity->Persistent State 保存状态 SharedPreferences onPause onResume

    Android 提供了多种存储数据的方法,其中最简单的是使用Shared Preferences. Shared Preferences 可以存储 Key/value 对,Shared Prefere ...

  9. selenium Element not found in the cache - perhaps the page has changed since it was looked up接解决

    selenium Element not found in the cache - perhaps the page has changed since it was looked up.这个问题爆出 ...

  10. POJ-3067 Japan---树状数组逆序对变形

    题目链接: https://vjudge.net/problem/POJ-3067 题目大意: 日本岛东海岸与西海岸分别有N和M个城市,现在修高速公路连接东西海岸的城市,求交点个数. 解题思路: 记每 ...