目录
超文本传输协议 (HyperText Transfer Protocol)服务器传输超文本到本地浏览器的传送协议,是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程。
http是一个基于tcp/ip通信协议来传递数据
http是一个属于应用层的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个http请求
一个http请求包括三个部分:请求行,请求头,请求体
请求行:包含http请求方式,请求资源名称,http版本
请求头:包含主机地址,以及客户端的一些环境信息,以键值对的形式传递.
请求体:代表着浏览器在post请求方式中传递给服务器的参数,请求体中参数以 键值形式传递, 多个用&链接,服务器接收到后再解析.
想要看到这些消息,我们可以在网页上按键盘中的Fn+F12打开调试器,然后点击网络再随便点击一个name便可在Headers中看到以上所有信息

主要用于从服务器端获取数据,可以传输少量的数据,数据在地址中,会在地址栏中显示,相对不安全,传输的数据量有限
超链接访问,默认为get方式
form提交,如果不指定method,默认为get方式
主要用于向服务器端发送数据,数据在请求中,不会显示在地址栏中,相对安全,长度是没有限制的
form提交,指定method="POST"
请求和响应是web交互最基本的模式,在Servlet中,用HttpServletRequest 来表示请求
HttpServletRequest :封装了请求的信息,可以从中获取任何请求信息
getParameter(name) --- String 通过name获得值
getParameterValues --- String[ ] 通过name获得多值
处理中文乱码
post
setCharacterEncoding(编码格式)
System.out.println(req.getRequestURL()); // 请求地址 System.out.println(req.getRemotePort());// 客户端端口 System.out.println(req.getProtocol());// 请求协议 System.out.println(req.getScheme());// 请求方法 System.out.println(req.getContentLength());//请求内容长度 System.out.println(req.getServerPort()); // 服务器端口 System.out.println(req.getServerName()); // 主机名 System.out.println(req.getRemoteAddr());// 远端客户端ip System.out.println(req.getMethod()); // 请求方式
一个http响应代表服务器向客户端回送的数据,它包括:响应行,响应头,响应体。
响应行里包含了http协议版本,以及用于描述服务器对请求的处理结果。
HTTP/1.1 (协议版本) 200(状态吗) OK(状态码描述)
状态码:服务器和浏览器用于确定状态的固定数字号码
200:请求成功
302:请求重定向
400:语义有误,当前请求无法被服务器理解或请求参数有误
404:请求资源不存在,通常是路径写错了或者服务器资源删除了
500:服务内部错误(代码异常)
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个代表响应的HttpServletResponse对象
HttpServletResponse对象代表响应。
用getWriter()获得一个PrintWriter字符输出流输出数据response会默认以ISO8859-1将需要输出到浏览器的字符进行解码,如果输出的字符在ISO8859-1中不存在,就会导致乱码问题
response.setContetnType("text/html;charset=utf-8");方法可以同时设定response所使用的字符集编码和浏览器打开所用的字符集编码
