您现在的位置是:主页 > news > tiktok官方网站入口/友情链接系统
tiktok官方网站入口/友情链接系统
admin2025/5/2 12:57:20【news】
简介tiktok官方网站入口,友情链接系统,网络营销渠道有哪几种,网站建设的公司地址HTTP请求 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容: 一个请求行、若干消息头、以及请求体(发送表单的时候会提交点数据给服务器,数据一般…
tiktok官方网站入口,友情链接系统,网络营销渠道有哪几种,网站建设的公司地址HTTP请求 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容: 一个请求行、若干消息头、以及请求体(发送表单的时候会提交点数据给服务器,数据一般…
放在WebRoot下的1.html
HTTP请求
- 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:
- 一个请求行、若干消息头、以及请求体(发送表单的时候会提交点数据给服务器,数据一般作为请求体来发给服务器),如下所示 :
HTTP请求的细节——请求行
- 请求行中的GET称之为请求方式,请求方式有:
- POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
- 常用的有: GET、 POST
- 用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。
- 不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:
- 如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:
- GET /mail/1.html?name=abc&password=xyzHTTP/1.1
- GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。
- 如请求方式为POST方式,则可以在请求体中向服务器发送数据,Post方式的特点:传送的数据量无限制。
HTTP请求的细节——消息头
- 用于HTTP请求中的常用请求消息头
- Accept:text/html,image/* 浏览器通过这个头告诉服务器,它所支持的数据类型
- Accept-Charset: ISO-8859-1 浏览器通过这个头告诉服务器,它支持哪种字符集
- Accept-Encoding: gzip,compress 浏览器通过这个头告诉服务器,支持的压缩格式
- Accept-Language: en-us,zh-cn 浏览器通过这个头告诉服务器,它的语言环境
- Host:www.it315.org:80 浏览器通过这个头告诉服务器,想访问哪台主机
- If-Modified-Since: Tue,11 Jul 2000 18:23:51 GMT 浏览器通过这个头告诉服务器,缓存数据的时间
- Referer:http://www.it315.org/index.jsp 浏览器通过这个头告诉服务器,客户机是哪个页面来的 防盗链
- User-Agent:Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
- Cookie
- Connection:close/Keep-Alive 浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接
- Date: Tue,11 Jul 2000 18:23:51 GMT
HTTP响应
- 一个HTTP响应代表服务器向客户端回送的数据,它包括:
- 一个状态行、若干消息头、以及实体内容(回送给浏览器的响应数据) 。
HTTP响应的细节——状态行
- 状态行
- 格式: HTTP版本号 状态码 原因叙述<CRLF>
- 举例:HTTP/1.1 200 OK
- 状态码:用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:
- 常用的状态码:200(一切ok)、302(我没有,你找别人)、304(找你的缓存去吧)、404(没有找到,你敲错了地址)、500(我出错了)
- 格式: HTTP版本号 状态码 原因叙述<CRLF>
HTTP响应细节——常用响应头
- HTTP响应中的常用响应头
- Location: http://www.it315.org/index.jsp 配合响应状态码302用的,服务器通过这个头,来告诉浏览器具体跳到哪里
- Server:apache tomcat 服务器通过这个头,告诉浏览器我当前用的服务器的版本号
- Content-Encoding: gzip 服务器通过这个头,告诉浏览器,我这个数据采用的是什么压缩格式
- Content-Length: 80 服务器通过这个头,告诉浏览器回送数据的长度
- Content-Language: zh-cn 服务器通过这个头,告诉浏览器语言环境
- Content-Type: text/html; charset=GB2312 服务器通过这个头,告诉浏览器回送数据的类型
- Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
- Refresh: 1;url=http://www.it315.org 服务器通过这个头,告诉浏览器定时刷新
- Content-Disposition: attachment;filename=aaa.zip 服务器通过这个头,告诉浏览器以下载方式打开
- Transfer-Encoding: chunked 服务器通过这个头,告诉浏览器数据是以分块方式回送的
- Set-Cookie:SS=Q0=5Lb_nQ; path=/search 以后有专门章节会讲Cookie
- 控制浏览器不要缓存的响应消息头,下面三个组合使用:
- Expires: -1 控制浏览器不要缓存
- Cache-Control:no-cache 控制浏览器不要缓存
- Pragma:no-cache 控制浏览器不要缓存
- Connection:close/Keep-Alive 告诉浏览器,保持连接还是断开
- Date: Tue,11 Jul 2000 18:23:51 GMT 服务器回送数据的日期
演示响应消息头:
演示一:状态码302,响应消息头Location
package cn.mengmei;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test1(request,response);}//Location: http://www.it315.org/index.jsp 配合响应状态码302用的,服务器通过这个头,来告诉浏览器具体跳到哪里//这个就是传说中的请求重定向。public void test1(HttpServletRequest request, HttpServletResponse response) {response.setStatus(302);response.setHeader("Location", "/myday04/1.html"); //服务器调用这个资源,‘/’代表webapps}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
放在WebRoot下的1.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>1.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body>This is my mengmei's HTML page. <br></body>
</html>
演示结果:
访问:http:localhost:8080/myday04/servlet/ServletDemo1
演示二:响应消息头Content-Encoding、Content-Length
package cn.mengmei;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test2(request,response);}//Content-Encoding: gzip 服务器通过这个头,告诉浏览器,我这个数据采用的是什么压缩格式public void test2(HttpServletRequest request, HttpServletResponse response) throws IOException {String data = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";System.out.println("原始数据大小:"+data.getBytes().length);//底层流:java.io.ByteArrayOutputStream 把数据写到字节数组里面去(内存里) 如:FileOutputStream 把数据写到文件里ByteArrayOutputStream bout = new ByteArrayOutputStream();//java.util.zip.GZIPOutputStream 压缩流,调用它的write方法,方法内部就会自动把数据压缩了然后写到底层流里面去。GZIPOutputStream gout = new GZIPOutputStream(bout);gout.write(data.getBytes());gout.close(); //只有关闭此流,它才会真正的把数据写到底层流里面去。//将压缩后的内存中的字节数组取出,复制到一个新byte数组里。byte[] g = bout.toByteArray();//把压缩数据写给浏览器response.setHeader("Content-Encoding", "gzip");response.setHeader("Content-Length", g.length+"");response.getOutputStream().write(g);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
演示结果:
访问:http:localhost:8080/myday04/servlet/ServletDemo1
- 控制台打印:原始数据大小:1066
- 第一次试验:数据为:String data = "abcdefghijklmnopqrstuvwxyz"; 原始数据大小为26,压缩后的数据大小为46,压缩后反而变大了?
- 因为原始数据太小了,出不来效果。
- 第二次试验:加大了数据量:String data = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"; 原始数据大小为1066,压缩后的数据大小为57,压缩率为18%。
- 一个网页的大小肯定不只1K。 数据越大,压缩效果越好。 电信部门向网站运营商是按出口流量收费的,你这个月出去多少数据就收多少费,所以大型网站运营商为了省钱一定要压缩数据再打出去。
演示三:响应消息头Content-Type: text/html;charset=GB2312
- 文件 apache-tomcat-7.0.42\conf\web.xml 里面配置了各种类型的文件在Content-Type头字段里该怎么写,例如:你要发送的数据是jpg类型的,那么就在文件里Ctrl+F搜索<jpg
- 就会搜索到: <mime-mapping>
- <extension>jpg</extension>
- <mime-type>image/jpeg</mime-type>
- </mime-mapping>
- 用红色标出的,就可以写在Content-Type头字段里。
package cn.mengmei;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPOutputStream;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test3(request,response); }//Content-Type: text/html; charset=GB2312 服务器通过这个头,告诉浏览器回送数据的类型public void test3(HttpServletRequest request, HttpServletResponse response) throws IOException {//在文件 apache-tomcat-7.0.42\conf\web.xml 里面查类型该怎么写。response.setHeader("Content-Type", "image/jpeg");InputStream in = this.getServletContext().getResourceAsStream("/2.jpg"); //java程序调用这个资源,‘/’代表WebRootbyte[] buffer = new byte[1024];int len = 0;ServletOutputStream out = response.getOutputStream();while((len=in.read(buffer))>0){out.write(buffer,0,len);}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
放在WebRoot下的图片2.jpg
演示结果:
访问:http:localhost:8080/myday04/servlet/ServletDemo1
演示四:响应消息头Refresh: 1;url=http://www.it315.org
package cn.mengmei;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPOutputStream;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test4(request,response);}//Refresh: 1;url=http://www.it315.org 服务器通过这个头,告诉浏览器定时刷新//用在聊天室,随时刷新消息public void test4(HttpServletRequest request, HttpServletResponse response) throws IOException {response.setHeader("Refresh", "5;url=http://www.baidu.com");response.getWriter().write("abcde");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
演示结果:
访问:http:localhost:8080/myday04/servlet/ServletDemo1
演示五:响应消息头Content-Disposition: attachment;filename=aaa.zip
package cn.mengmei;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPOutputStream;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ServletDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test5(request,response);}//Content-Disposition: attachment;filename=aaa.zip 服务器通过这个头,告诉浏览器以下载方式打开public void test5(HttpServletRequest request, HttpServletResponse response) throws IOException {response.setHeader("Content-Disposition", "attachment;filename=girl.png");InputStream in = this.getServletContext().getResourceAsStream("/1.png");byte[] buffer = new byte[1024];int len = 0;ServletOutputStream out = response.getOutputStream();while((len=in.read(buffer))>0){out.write(buffer, 0, len);}} public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
演示结果:
访问:http:localhost:8080/myday04/servlet/ServletDemo1
作业
- 请写一篇关于HTTP协议的笔记,要求:
- 描述清楚HTTP请求、响应的格式
- 请求头和响应头中各个头字段的含义
- 如果浏览器传递给WEB服务器的参数内容超过1K,应该使用那种方式发送请求消息?
- 请描述200、302、304、404和500等响应状态码所表示的意义。
- 请列举三种禁止浏览器缓存的头字段,并写出相应的设置值。