JavaWeb——HTTP协议

1、简介

1.1、什么是HTTP?

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

1.2、HTTP发展阶段?

HTTP/1.0:客户端可以与服务器连接,连接后只能获得一个web资源,获得完资源后就断开连接了。

HTTP/1.1:客户端可以与服务器连接,连接后可以获得多个web资源。

1.3、请求头

GET /myweb/index.html HTTP/1.1(请求行)

消息头

Accept-Encoding    gzip, deflate

Host    localhost:8080

User-Agent    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

Accept    text/html, application/xhtml+xml, */*

Accept-Language    zh-CN

1.4、消息头

用于HTTP协议交互的信息被称为HTTP报文。请求端HTTP报文叫做请求报文,响应端的HTTP报文叫做相应报文,HTTP报文本身是由多行(CR+LF做换行符)构成的字符串文本

1.5、响应头

HTTP/1.1 304 Not Modified(状态行)

消息头

ETag    W/"37-1368603309298"

Content-Type    text/html

Content-Length    37

Last-Modified    Wed, 15 May 2019 07:35:09 GMT

必须要有一个空行表示消息头结束

内容

adsfadsfadsf 

1.6、响应头的状态码

JavaWeb——HTTP协议_第1张图片

2、实例

2.1、资源下载

Java代码:
@WebServlet("/DownloadController")
public class DownloadController extends HttpServlet{
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //处理乱码
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
    //获取资源名字
        String resourcename = req.getParameter("resourcename");
     //获取资源
        String realPath = this.getServletContext().getRealPath(resourcename);
     //截取文件名
        int i = realPath.lastIndexOf(File.separator);
        String substring = realPath.substring(i + 1);
     //下载
        resp.setHeader("content-disposition","attouchment;filename=" + URLEncoder.encode(substring,"utf-8"));
        FileInputStream in = new FileInputStream(realPath);
        ServletOutputStream out = resp.getOutputStream();
        byte[] b = new byte[1024];
        int len = 0;
        while((len = in.read(b)) != -1){
            out.write(b,0,len);
        }
    }
}
网页:

JavaWeb——HTTP协议_第2张图片

效果:

点击下载就开始下载此图片。

JavaWeb——HTTP协议_第3张图片

JavaWeb——HTTP协议_第4张图片

2.2、定时刷新

网页:

JavaWeb——HTTP协议_第5张图片

效果:

倒计时3秒后自动跳转到登录界面

JavaWeb——HTTP协议_第6张图片

JavaWeb——HTTP协议_第7张图片

2.3、防止盗链

Java代码:
@WebServlet("/ServletDemo7")
public class ServletDemo7 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String referer = req.getHeader("referer");
        System.out.println(referer);
        String host = "http://localhost/servlet";
        if (referer.startsWith(host)){
            req.getRequestDispatcher("download.jsp").forward(req,resp);
        }else {
            resp.getWriter().print("禁止盗链");
        }

    }
}
网页:

JavaWeb——HTTP协议_第8张图片

 效果:

防盗链就是使用IP白名单、网站白名单、token暗号等方式,给资源加以限制或口令、暗号等,避免其他网站使用你的资源。

JavaWeb——HTTP协议_第9张图片JavaWeb——HTTP协议_第10张图片

2.4、 防止重复提交

网页:

JavaWeb——HTTP协议_第11张图片

效果:

多次点击就会提示

JavaWeb——HTTP协议_第12张图片

你可能感兴趣的:(http,网络协议,网络,java)