深入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("过滤器关闭"); } }