深入HTTP

http 协议:
  对浏览器客户端服务器端之间数据传输的格式规范
  支持无连接和无状态
http 协议版本
  http1.0:当前浏览器客户端与服务器端建立连接之后,
       只能发送一次请求,一次请求之后连接关闭。
  http1.1:当前浏览器客户端与服务器端建立连接之后,
       可以在一次连接中发送多次请求。
tcp协议:
  以二进制文件格式传输
常见的请求方式:
   GET 、 POST、 HEAD、 TRACE、 PUT、 CONNECT 、DELETE
   POST:常用于表单提交,携带数据,数据封装在请求体中
   GET:url地址栏中显示数据;K=Y形式传输
常用的请求方式:
   GET 和 POST
同步:
  会发生阻塞HTTP建立连接后只能处理一次请求,会按顺序执行,当前请求没结束,不能再次发送请求
异步:
  不会等待服务器做出相应,发送完请求就结束
无连接:
  代表一次连接只能完成一次请求
无状态:
  不会记录事务,不会保存状态,Cookie记录

 

 

 

 

 防盗链:

@WebFilter(filterName = "imgFilter",value = "/img/*")
public class MckzFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("过滤器开始");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("梅川酷子");
        //获取上一个请求地址
        HttpServletRequest httprequest=(HttpServletRequest)request;
        HttpServletResponse httpresponse=(HttpServletResponse)response;
        //获取上一个请求地址
        String referer = httprequest.getHeader("Referer");
        //获取本项目的请求地址
        String serverName = httprequest.getServerName();
        System.out.println(referer+"\t"+serverName);
        //判断
        //如果上一个请求地址为空或者非本项目的请求地址拦截
        if(referer==null||!referer.contains(serverName)){
            request.getRequestDispatcher("/img/asd.jpg").forward(request,response);
            return;
        }
        chain.doFilter(request,response);

    }

    @Override
    public void destroy() {
        System.out.println("过滤器关闭");
    }
}

 

  

 

posted @ 2020-02-04 15:10  梅川酷子灬  阅读(131)  评论(0编辑  收藏  举报